Differences

This shows you the differences between two versions of the page.

Link to this comparison view

so:laboratoare:laborator-01 [2021/02/28 17:09]
maria.mihailescu [Exercițiul 2 - Makefiles] Add link to PowerShell tutorial
so:laboratoare:laborator-01 [2022/03/09 15:31] (current)
teodor_stefan.dutu [Nmake]
Line 12: Line 12:
 ===== Materiale ajutătoare ===== ===== Materiale ajutătoare =====
  
-  * [[http://​elf.cs.pub.ro/​so/res/tutorial/asist-visual-studio/|Visual Studio ​Tutorials]]+  * [[so:​laboratoare:​resurse:​windows-laborator:​tutorial-visual-studio | Tutorial ​Visual Studio]]. 
 +  * [[so:​laboratoare:​resurse:​windows-laborator:​windows-cli | Folosirea CLI în Windows]]
   * [[http://​elf.cs.pub.ro/​so/​res/​tutorial/​lab-01-introducere/​|Video Introducere]]   * [[http://​elf.cs.pub.ro/​so/​res/​tutorial/​lab-01-introducere/​|Video Introducere]]
 ==== Nice to read ==== ==== Nice to read ====
Line 633: Line 634:
 === Crearea unei biblioteci partajate === === Crearea unei biblioteci partajate ===
  
-Spre deosebire de o bibliotecă statică despre care am văzut că nu este nimic altceva decât o arhivă de fișiere obiect, o bibliotecă partajată este ea însăși un fișier obiect. Crearea unei biblioteci partajate se realizează prin intermediul linker-ului. Optiunea **''​-shared''​** indică compilatorului să creeze un obiect partajat și nu un fișier executabil. Este, de asemenea, indicată folosirea opțiunii **''​-fPIC''​** la crearea fișierelor obiect.+Spre deosebire de o bibliotecă statică despre care am văzut că nu este nimic altceva decât o arhivă de fișiere obiect, o bibliotecă partajată este ea însăși un fișier obiect. Crearea unei biblioteci partajate se realizează prin intermediul linker-ului. Optiunea **''​-shared''​** indică compilatorului să creeze un obiect partajat și nu un fișier executabil. Este, de asemenea, indicată folosirea opțiunii **''​-fPIC''​** la crearea fișierelor obiect ​(pentru detalii vezi [[https://​gcc.gnu.org/​onlinedocs/​gcc/​Code-Gen-Options.html|GCC Code Gen Options]]).
  
 <code bash> <code bash>
Line 954: Line 955:
 ==== Compilatorul Microsoft cl.exe ==== ==== Compilatorul Microsoft cl.exe ====
  
-Soluția folosită pentru platforma Windows în cadrul acestui laborator este ''​cl.exe'',​ compilatorul Microsoft pentru C/C++. Recomandăm instalarea Microsoft Visual C++ Express 2010 (10.0) (versiunea Professional a Visual C++ este disponibilă gratuit în cadrul MSDNAA). Programele C/C++ pot fi compilate prin intermediul interfeței grafice sau în linie de comandă. În cele ce urmează vom prezenta compilarea folosind linia de comandă. În Windows fișierele cod obiect au extensia ''​*.obj''​. ​+Soluția folosită pentru platforma Windows în cadrul acestui laborator este ''​cl.exe'',​ compilatorul Microsoft pentru C/C++. Recomandăm instalarea Microsoft Visual C++ Express 2010 (10.0) (versiunea Professional a Visual C++ este disponibilă gratuit în cadrul ​[[https://​msdnaa.upb.ro/​|MSDNAA]]). Programele C/C++ pot fi compilate prin intermediul interfeței grafice sau în linie de comandă. În cele ce urmează vom prezenta compilarea folosind linia de comandă. În Windows fișierele cod obiect au extensia ''​*.obj''​. ​
  
 <columns 100% 50% -> <columns 100% 50% ->
Line 1193: Line 1194:
 OBJ_LIST = parser.tab.obj parser.yy.obj OBJ_LIST = parser.tab.obj parser.yy.obj
 CFLAGS ​  = /nologo /W4 /EHsc /Za CFLAGS ​  = /nologo /W4 /EHsc /Za
 +L = link
  
 EXE_NAMES = CUseParser.exe UseParser.exe DisplayStructure.exe EXE_NAMES = CUseParser.exe UseParser.exe DisplayStructure.exe
Line 1199: Line 1201:
  
 CUseParser.exe : CUseParser.obj $(OBJ_LIST) CUseParser.exe : CUseParser.obj $(OBJ_LIST)
-  $(CPP) $(CFLAGS) /Fe$@ $**+  $(L) /Fe$@ $**
  
 UseParser.exe : UseParser.obj $(OBJ_LIST) UseParser.exe : UseParser.obj $(OBJ_LIST)
-  $(CPP) $(CFLAGS) /Fe$@ $**+  $(L) /Fe$@ $**
  
 DisplayStructure.exe : DisplayStructure.obj $(OBJ_LIST) DisplayStructure.exe : DisplayStructure.obj $(OBJ_LIST)
-  $(CPP) $(CFLAGS) /Fe$@ $**+  $(L) /Fe$@ $**
  
 clean : exe_clean obj_clean clean : exe_clean obj_clean
Line 1228: Line 1230:
 ===== Exerciții ===== ===== Exerciții =====
  
- 
-===== Windows ===== 
 <note important>​ <note important>​
 În cadrul laboratoarelor vom folosi repository-ul de git al materiei SO - https://​github.com/​systems-cs-pub-ro/​so. Va trebui sa clonați repository-ul pe masinile virtuale folosind comanda: ''​git clone https://​github.com/​systems-cs-pub-ro/​so''​. Dacă doriți să descărcați repositoryul în altă locație, folosiți comanda ''​git clone https://​github.com/​systems-cs-pub-ro/​so ${target}''​. În cadrul laboratoarelor vom folosi repository-ul de git al materiei SO - https://​github.com/​systems-cs-pub-ro/​so. Va trebui sa clonați repository-ul pe masinile virtuale folosind comanda: ''​git clone https://​github.com/​systems-cs-pub-ro/​so''​. Dacă doriți să descărcați repositoryul în altă locație, folosiți comanda ''​git clone https://​github.com/​systems-cs-pub-ro/​so ${target}''​.
  
-Pentru a actualiza repository-ul,​ folosiți comanda ''​git pull origin master''​ din interiorul directorului în care se află repository-ul. Recomandarea este să îl actualizați cât mai frecvent, înainte să începeți lucrul, pentru a vă asigura că aveți versiunea cea mai recentă.+Pentru a actualiza repository-ul,​ folosiți comanda ''​git pull origin master''​ din interiorul directorului în care se află repository-ul. Recomandarea este să îl actualizați cât mai frecvent, înainte să începeți lucrul, pentru a vă asigura că aveți versiunea cea mai recentă. ​În cazul în care gitul detectează conflicte la nivelul vreunui fişier, folosiți următoarele comenzi pentru a vă păstra modificările:​ 
 +<​code>​ 
 +git stash 
 +git pull origin master 
 +git stash pop 
 +</​code>​
  
 Pentru mai multe informații despre folosirea utilitarului git, urmați ghidul de la https://​gitimmersion.com. Pentru mai multe informații despre folosirea utilitarului git, urmați ghidul de la https://​gitimmersion.com.
Line 1239: Line 1244:
 Pentru mai multe informații despre folosirea utilitarului git pe mașina virtuală de Windows pentru laborator prin intermediul utilitarului CygWin, citiți secțiunea de [[:​so:​laboratoare::​resurse::​windows-laborator::​windows-cli#​git_in_cygwin | aici]]. Pentru mai multe informații despre folosirea utilitarului git pe mașina virtuală de Windows pentru laborator prin intermediul utilitarului CygWin, citiți secțiunea de [[:​so:​laboratoare::​resurse::​windows-laborator::​windows-cli#​git_in_cygwin | aici]].
 </​note>​ </​note>​
 +
 +==== Exercițiul 0 - Stagii pe bune ====
 +[[https://​stagiipebune.ro/​students/​jobs/​|Stagii pe bune]] este o platformă de internshipuri care vrea să ușureze și să uniformizeze procesul prin care puteți aplica la companii din România (București,​ Iași, Cluj și Timișoara). Facultatea de Automatică și Calculatoare are un parteneriat cu Stagii pe bune și vă încurajăm să le folosiți platforma pentru a aplica la internshipuri! ​
 +
 +Stagii pe bune organizează și evenimente de prezentare a celor mai mari companii din România. Pentru a fi la curent cu acestea, urmăriți și anunțurile postate de Stagii pe bune pe [[https://​www.facebook.com/​stagiipebune|Facebook]].
 +
 +===== Windows =====
  
 ==== Exercițiul 1 - Utilizare Visual Studio ==== ==== Exercițiul 1 - Utilizare Visual Studio ====
Line 1292: Line 1304:
 Pentru a urmări valorile diverselor variabile, vom seta watch-uri pentru variabilele ''​a'',​ ''​b'',​ ''​c''​ și ''​bug''​. Selectați ''​Debug → Windows → Watch → Watch1''​ și adăugați pe rând numele variabilelor. ​ Pentru a urmări valorile diverselor variabile, vom seta watch-uri pentru variabilele ''​a'',​ ''​b'',​ ''​c''​ și ''​bug''​. Selectați ''​Debug → Windows → Watch → Watch1''​ și adăugați pe rând numele variabilelor. ​
  
-{{:​so:​laboratoare:​lab01-win-debug1.png?​200|}+{{:​so:​laboratoare:​lab01-win-debug1.png?​200|}}
  
 Observați săgeata care indică următoarea instrucțiune ce va fi executată, dar și valorile variabilelor. De ce variabila ''​c''​ apare cu eroare? Observați săgeata care indică următoarea instrucțiune ce va fi executată, dar și valorile variabilelor. De ce variabila ''​c''​ apare cu eroare?
Line 1304: Line 1316:
  
 <note warning> <note warning>
-Acest set de exerciții se rulează din command-shell-ul Windows PowerShell (**nu** ''​cmd.exe''​).+Acest set de exerciții se rulează din command-shell-ul Windows ​Developer ​PowerShell (**nu** ''​cmd.exe''​).
       * Găsiți link la acesta pe Desktop sau accesând //Tools// -> //​PowerShell Command Prompt//.       * Găsiți link la acesta pe Desktop sau accesând //Tools// -> //​PowerShell Command Prompt//.
       * Mai multe informații despre folosirea PowerShell pentru laborator găsiți [[:​so:​laboratoare:​resurse:​windows-laborator:​windows-cli#​powershell | aici ]].       * Mai multe informații despre folosirea PowerShell pentru laborator găsiți [[:​so:​laboratoare:​resurse:​windows-laborator:​windows-cli#​powershell | aici ]].
Line 1341: Line 1353:
 Intrați în directorul ''​win/​3-bounds''​. Analizați fișierele ''​bounds.c'',​ ''​min.c''​ și ''​max.c''​. Intrați în directorul ''​win/​3-bounds''​. Analizați fișierele ''​bounds.c'',​ ''​min.c''​ și ''​max.c''​.
  
-Analizați fișierul ''​Makefile.dynamic''​. Observați  %%__%%declspec(dllimport) și %%__%%declspec(dllexport) adăugate antetelor funcțiilor.+Analizați fișierul ''​Makefile.dynamic''​. Observați ​construcțiile ​ ''​%%__%%declspec(dllimport)'' ​și ''​%%__%%declspec(dllexport)'' ​adăugate antetelor funcțiilor. Pentru mai multe detalii despre utilitatea acestora, consultați informațiile de pe [[https://​docs.microsoft.com/​en-us/​cpp/​build/​importing-function-calls-using-declspec-dllimport?​view=msvc-160|acest link]].
  
 Completați fișierul ''​Makefile.static''​ astfel încât: Completați fișierul ''​Makefile.static''​ astfel încât:
Line 1427: Line 1439:
     * [[http://​en.wikipedia.org/​wiki/​Java_Native_Interface|JNI]]     * [[http://​en.wikipedia.org/​wiki/​Java_Native_Interface|JNI]]
  
-===== Soluții ===== 
- 
-[[http://​elf.cs.pub.ro/​so/​res/​laboratoare/​lab01-sol.zip | lab01-sol.zip]]- 
  
 ===== Resurse utile ===== ===== Resurse utile =====
so/laboratoare/laborator-01.1614524950.txt.gz · Last modified: 2021/02/28 17:09 by maria.mihailescu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0