Sunteți pe pagina 1din 5

Lucrarea 2

Editarea i Compilarea Programelor C n Linux


Editorul "clasic" pentru Unix este vi, dar deoarece s-au putut scrie cri despre acest
editor n continuare o s prezint un editor mai simplu, editor care are ns faciliti
suficiente pentru editarea programelor C, numit joe.
Joe's Own Editor
oe este un editor similar cu cele folosite de mediile "!ur"o" de la #orland. $intaxa lui
este%
joe &opiun- globale' & & opiuni-locale' nume-fiier ' (
) s ncep tot cu cea mai important comand%
*+ ,
Caracterul * sim"olizeaz tasta C!-. /sau control0 iar pentru a reproduce secvena de
mai sus tre"uie s apsai simultan tastele C!-. 1i +
2
, dup care apsai tasta ,.
3eoarece fereastra de ajutor ocup spaiu, pentru a o dezactiva apsai din nou *+ ,.
4entru a "naviga" prin fereastra de ajutor folosii *& , 1i *& . sau E$C , 1i E$C . deoarece
apsarea tastei E$C este ec5ivalent cu com"inaia *& .
Editarea se face implicit n modul inserare, aceasta nsemn6nd c atunci c6nd tastai un
caracter acesta este inserat n fi1ierul editat. 4entru a comuta n modul suprascriere
folosii *! !.
7tunci c6nd dorii s ie1ii din editor fr a salva modificrile folosii com"inaia *C, iar
dac dorii s salvai la ie1ire folosii *+ 8. 3ac doar dorii s salvai 1i s continuai
editarea folosii *+ 3.
3ac dorii s aflai numrul 1i coloana liniei curente apsai *+ $479:U
;
.
oe suport 1i faciliti de genul cop<=paste. 3ac dorii s copiai o poriune de text
/numit "loc n continuare0 mai nt6i tre"uie s-l marcai% *+ # pentru nceput 1i *+ +
pentru sf6r1it. 4entru copierea unui "loc avei de tastat *+ C, pentru mutare *+ > 1i
pentru 1tergere *+ ?.
3ac dorii mai multe ferestre, *+ ) va mpri fereastra curent n dou. 4entru a naviga
ntre ferestre folosii *+ 4 1i *+ @. 4entru a vizualiza numai fereastra curent, fr a
nc5ide celelalte ferestre /cu *C sau *+ 80 avei com"inaia *+ :.
2
$au aproape simultan, important e ca n momentul n care apsai tasta + tasta C!-. s fie deja
apsat.
;
!asta $47CE.
3ac gre1ii, de1i lucrul acesta nu ar tre"ui s se nt6mple, putei anula ultima operaie
folosind *A. 3ac dorii s anulai ceea ce tocmai ai anulat apsai **.
Compilarea Programelor C i C++
4entru compilarea programelor putei folosi utilitarul gcc, care face de fapt 1i
preprocesarea 1i compilarea 1i editarea de legturi. $intaxa complet este%
gcc &-cB-$B-E' &-stdCstandard'
&-g' &-pg' &-)level'
&-Dwarn...' &-pedantic'
&-:dir...' &-.dir...'
&-3macro&Cdefn'(' &-Umacro'
&-foption...' &-mmachine-option...'
&-o outfile' infile (
3ar de cele mai multe ori vei folosi forma %
gcc -o outfile infile (
Care are ca efect compilarea fi1ierelor de intrare, rezultatul fiind pus n outfile. 4entru
compilarea fi1ierului test.c putei folosi%
gcc Eo test test.c
3ac compilarea a reu1it executa"ilul se va gsi n fi1ierul test. 4utei folosi o form 1i
mai scurt%
gcc test.c
Fn acest caz rezultatul se va gsi n fi1ierul a.out, fi1ier care va fi suprascris fr nici o
atenionare. Fn funcie de extensia fi1ierului de intrare, gcc determin automat ce fel de
prelucrri sunt necesare%
file.c E surs C care tre"uie preprocesat.
file.i E surs C care nu tre"uie preprocesat.
file.ii E surs CGG care nu tre"uie preprocesat.
file.5 E fi1ier antet C care nu tre"uie compilat sau editat legturile.
file.cc
file.cp
file.cxx
file.cpp
file.cGG
file.C E surs CGG care tre"uie preprocesat.
)piuni pe care poate o s le folosii%
-H @u afi1eaz nici un mesaj de atenionare.
-fs<ntax-onl< Ierific doar codul din punct de vedere al sintaxei.
-Dcomment Ierific dac un nceput de comentariu apare n interiorul altui
comentariu.
-Dformat Ierific dac argumentele funciilor printf, scanf 1i a1a mai departe
sunt conforme cu 1irul de formatare.
-Dparant5eses 7tenioneaz dac lipsesc parantezele n anumite contexte precum
asignare atunci c6nd se a1teapt o expresie logic sau c6nd un else poate fi interpretat
gre1it
J
.
) opiune pe care poate o s o folosii este%
-lbibliotec
-l bibliotec .a editarea legturilor va cuta "i"lioteca specificat.
Argumentele liniei de comand
4rototipul funciei mai este%
int main/ int argc , c5ar Kargv&' , c5ar Kenvp&' 0L
argc reprezint numrul de argumente din linia de comand, coninute de argv.
Ialoarea lui este cel puin 2 deoarece primul argument reprezint numele
programului.
argv reprezint lista cu argumente. Fn standardul 7@$: C 1i 4)$:8 se specific
faptul c argv&argc' CC @U...
envp reprezint lista cu varia"ile de mediu, fiind un vector de pointeri la caracter,
fiecare pointer conin6nd adresa unui 1ir C terminat cu MNOM. Ultimul pointer din
list conine @U...
Exemplu%
Pinclude Qstdio.5R
int main/int argc, c5arKK argv, c5arK envp&'0S
int iL
for / i C OL i Q argcL iGG0S
printf/"argv&Td' C Ts Nn", i, argv&i'0L
J
3e ctre programator.
U
for / i C OL envp&i' VC @U..L iGG0S
printf/"envp&Td' C Ts Nn", i, envp&i'0L
U
U
Probleme propuse:
2. -escriei faimosul 5ello.c astfel nc6t s primeasc un nume ca parametru de
intrare 1i s afi1eze ,ello QnumeR.
;. $criei un calculator care s preia operaiile din linia de comand.
Alte Comenzi Legate de iiere
3ac dorii s vizualizai numai primele linii dintr-un fi1ier, putei folosi comanda 5ead.
$intaxa acestei comenzi este%
5ead &opiuni'... &fiier'...
Comanda afi1eaz primele 2O linii din fiecare fi1ier. 3ac dorii s vizualizai primele x
linii folosii opiunea%
-nx
4entru vizualizarea primilor W octei exist opiunea%
-ck
3ac pentru a lista primele linii dintr-un fi1ier exist comanda 5ead, pentru a lista
ultimele linii dintr-un fi1ier avem comanda tail, care are sintaxa asemntoare cu 5ead,
inclusiv cele dou opiuni prezentate anterior%
tail &opiuni'... &fiier'...
4entru a vizualiza coninutul complet al unui fi1ier se poate folosi comanda cat. @umele
acesteia vine de la concatenate deoarece rolul ei este s concateneze fi1iere, ie1irea fiind
stdout%
cat &opiuni' &fiier'...
)piuni mai importante sunt%
-" , care numeroteaz liniile care conin 1i altceva n afar de spaii.
-n , care numeroteaz toate liniile.
-s , nu afi1eaz nici mcar dou linii ""lanW" consecutive.
Comenzile se pot com"ina cu ajutorul conductelor /pipeline0. 3e exemplu%
H5o B 5ead
va afi1a primii 2O utilizatori conectai. Caracterul MBM sim"olizeaz conducta. ) alta
comanda folosit n com"inaie cu altele cu ajutorul conductelor este more.
cat fisier.ung B more
va afi1a coninutul fi1ierului pagin cu pagina.
!edirectarea iierelor
>ajoritatea comenzilor au ca efect afi1area unor informaii pe ecran /stdout0 1i 1i citesc
datele de la tastatura /stdin0, dar acest lucru se poate modifica cu ajutorul redirectrii% MQM
redirecteaz intrarea, MRM redirecteaz ie1irea iar MRRM redirecteaz ie1irea n modul append.
3e exemplu%
ls R lista
va scrie n fi1ierul list coninutul directorului curent.
cat Q lista
va avea acela1i efect cu%
cat lista.
4ot fi redirectate simultan at6t ie1irea c6t 1i intrarea%
cat Es Qf2 Rf;
va prelua coninutul lui f2 1i-l va scrie n f;, nlocuind liniile vide consecutive cu una
singura.

S-ar putea să vă placă și