+ All Categories
Home > Documents > Programarea

Programarea

Date post: 02-Jan-2017
Category:
Upload: dinhthu
View: 215 times
Download: 1 times
Share this document with a friend
2
86 Octombrie 2004 Pagina începătorului LINUX USER www.linux-magazin.ro Linux pentru programatori Programarea Dacă nu aţi ştiut, Linuxul modern vă pune la dispoziţie o mulţime de utilitare, atât pentru modul text cât şi cel grafic, pentru dezvoltarea, configurarea şi creearea programelor scrise în diferite limbaje de programare. DE DRAGOŞ ACOSTĂCHIOAIE L inux este o platformă completă pentru dezvoltarea de programe, oferind o largă suită de instrumente de programare, incluzând compilatoare, depanatoare şi medii integrate de dezvoltare. Deosebit de utilă este bogata colecţie de biblioteci, care uşurează munca programatorilor. Trebuie sa subliniem aici şi avantajul indiscutabil al disponibilităţii surselor programelor, permiţând astfel formarea programatorilor începători (cum ar fi elevi sau studenţi), care pot să citească şi să utilizeze fără restricţii codul sursă. Ei nu vor fi nevoiţi să “reinventeze roata”, ci pot prelua porţiuni din codul care este deja scris şi să le folosească pentru propriile nevoi. Sub Linux, exista o pleiadă de limbaje de programare ce pot fi utilizate - fie ele compilate (cum ar fi C, C++), fie interpretate (cum ar fi Perl, PHP, Python, Tcl/Tk, Java, JavaScript). Compilatorul GCC Cele mai multe programe Linux şi GNU sunt scrise în C sau C++. Cel mai răspândit compilator din lumea UNIX este GCC, implementare open source realizată de Free Software Foundation. Acesta este un compilator extensibil, existând extensii pentru C, C++, Objective-C, Pascal, Fortran etc. Executabilele generate de către acest compilator nu trebuie neapărat să fie open source, chiar dacă includ bibliotecile standard C sau C++. Un exemplu de apelare a compilatorului GCC este: $ gcc -o exemplu exemplu.c care va genera, pentru un fişier- sursă cu numele exemplu.c, un executabil cu numele exemplu (opţiunea -o stabileşte numele fişierului executabil ce va fi creat). Pentru a compila un program C++, vom apela: $ g++ -I/usr/include/ncurses -lncurses -o exemplu exemplu.cc Am folosit opţiunea -I, care adaugă directorul specificat în lista directoarelor în care sunt căutate fişiere-antet cu extensia .h. Opţiunea -lncurses specifică faptul că biblioteca ncurses va fi link-editată la momentul generării executabilului. Tot cu ajutorul compilatorului GCC, există posibilitatea creării de biblioteci partajate (a căror cod nu este inclus în fişierele executabilele, şi încărcate dinamic atunci când sunt necesare), printr-o comandă de genul: $ gcc -shared -o libtest.so functii.o test.o Bibliotecile partajate (în cazul nostru libtest.so) trebuie instalate în genere în directorul /usr/lib, apoi trebuie apelată comanda ldconfig pentru a actualiza baza de date de biblioteci. Depanarea programelor cu GDB GDB poate fi utilizat pentru depanarea programelor scrise în C şi C++. Acesta poate opri din execuţie un program în momentul îintâlnirii unei condiţii specificate de programator, examina conţinutul variabilelor la momentul respectiv, şi chiar modifica valoarea acestora şi continua execuţia programului. Mai mult decât atât, GDB poate fi folosit şi pentru a depana programe care sunt executate pe maşini aflate la distanţă. Pentru ca un program să poată fi depanat, acesta trebuie să fie compilat cu opţiunea -g. Pentru a lansa în execuţie GDB, vom proceda ca mai jos: gdb exemplu care va permite depanarea programului specificat. GDB are o interfaţă de tip shell, care necesită apelarea unor comenzi interne. Părăsirea acestui interpretor de comenzi se va face prin intermediul comenzii quit. Lansarea în execuţie a programului se face prin comanda run. În cadrul GDB, un program poate fi oprit datorită unui semnal, unui punct de oprire sau la solicitarea programatorului. Punctele de oprire (breakpoints) pot fi definite cu ajutorul comenzii break, furnizându-i ca parametru fie numărul liniei de program, fie numele funcţiei la a cărei execuţie programul va fi oprit. Un punct de verificare (watchpoints) determină oprirea programului atunci când se modifică valoarea unei expresii. Pentru a şterge aceste puncte de oprire sau verificare se utilizează comanda clear. Figura 1: Programul KDevelop. 086-087_programatori.indd 86 086-087_programatori.indd 86 23/12/2004 21:07:17 23/12/2004 21:07:17
Transcript
Page 1: Programarea

86 Octombrie 2004

Pagina începătoruluiLINUX USER

www.linux-magazin.ro

Linux pentru programatori

ProgramareaDacă nu aţi ştiut, Linuxul modern vă pune la dispoziţie o mulţime de

utilitare, atât pentru modul text cât şi cel grafic, pentru dezvoltarea,

configurarea şi creearea programelor scrise în diferite limbaje de

programare. DE DRAGOŞ ACOSTĂCHIOAIE

Linux este o platformă completă

pentru dezvoltarea de programe,

oferind o largă suită de instrumente

de programare, incluzând compilatoare,

depanatoare şi medii integrate de

dezvoltare. Deosebit de utilă este bogata

colecţie de biblioteci, care uşurează munca

programatorilor. Trebuie sa subliniem aici

şi avantajul indiscutabil al disponibilităţii

surselor programelor, permiţând astfel

formarea programatorilor începători (cum

ar fi elevi sau studenţi), care pot să citească

şi să utilizeze fără restricţii codul sursă. Ei

nu vor fi nevoiţi să “reinventeze roata”, ci pot

prelua porţiuni din codul care este deja scris

şi să le folosească pentru propriile nevoi.

Sub Linux, exista o pleiadă de limbaje

de programare ce pot fi utilizate - fie

ele compilate (cum ar fi C, C++), fie

interpretate (cum ar fi Perl, PHP, Python,

Tcl/Tk, Java, JavaScript).

Compilatorul GCCCele mai multe programe Linux şi GNU

sunt scrise în C sau C++.

Cel mai răspândit compilator din lumea

UNIX este GCC, implementare open source

realizată de Free Software Foundation.

Acesta este un compilator

extensibil, existând extensii pentru

C, C++, Objective-C, Pascal,

Fortran etc. Executabilele generate

de către acest compilator nu trebuie

neapărat să fie open source, chiar

dacă includ bibliotecile standard C

sau C++.

Un exemplu de apelare a

compilatorului GCC este:

$ gcc -o exemplu exemplu.c

care va genera, pentru un fişier-

sursă cu numele exemplu.c, un

executabil cu numele exemplu

(opţiunea -o stabileşte numele fişierului

executabil ce va fi creat).

Pentru a compila un program C++, vom

apela:

$ g++ -I/usr/include/ncurses �-lncurses -o exemplu exemplu.cc

Am folosit opţiunea -I, care adaugă

directorul specificat în lista directoarelor în

care sunt căutate fişiere-antet cu extensia

.h. Opţiunea -lncurses specifică faptul

că biblioteca ncurses va fi link-editată la

momentul generării executabilului.

Tot cu ajutorul compilatorului GCC,

există posibilitatea creării de biblioteci

partajate (a căror cod nu este inclus în

fişierele executabilele, şi încărcate dinamic

atunci când sunt necesare), printr-o

comandă de genul:

$ gcc -shared -o libtest.so �functii.o test.o

Bibliotecile partajate (în cazul nostru

libtest.so) trebuie instalate în genere în

directorul /usr/lib, apoi trebuie apelată

comanda ldconfig pentru a actualiza baza

de date de biblioteci.

Depanarea programelor cu GDBGDB poate fi utilizat pentru depanarea

programelor scrise în C şi C++. Acesta

poate opri din execuţie un program

în momentul îintâlnirii unei condiţii

specificate de programator, examina

conţinutul variabilelor la momentul

respectiv, şi chiar modifica valoarea

acestora şi continua execuţia programului.

Mai mult decât atât, GDB poate fi folosit

şi pentru a depana programe care sunt

executate pe maşini aflate la distanţă.

Pentru ca un program să poată fi

depanat, acesta trebuie să fie compilat

cu opţiunea -g. Pentru a lansa în execuţie

GDB, vom proceda ca mai jos:

gdb exemplu

care va permite depanarea programului

specificat. GDB are o interfaţă de tip

shell, care necesită apelarea unor comenzi

interne. Părăsirea acestui interpretor

de comenzi se va face prin intermediul

comenzii quit. Lansarea în execuţie a

programului se face prin comanda run.

În cadrul GDB, un program poate

fi oprit datorită unui semnal, unui

punct de oprire sau la solicitarea

programatorului.

Punctele de oprire (breakpoints)

pot fi definite cu ajutorul comenzii

break, furnizându-i ca parametru

fie numărul liniei de program, fie

numele funcţiei la a cărei execuţie

programul va fi oprit. Un punct de

verificare (watchpoints) determină

oprirea programului atunci când

se modifică valoarea unei expresii.

Pentru a şterge aceste puncte de

oprire sau verificare se utilizează

comanda clear.Figura 1: Programul KDevelop.

086-087_programatori.indd 86086-087_programatori.indd 86 23/12/2004 21:07:1723/12/2004 21:07:17

Page 2: Programarea

LINUX USERPagina începătorului

87www.linux-magazin.ro Octombrie 2004

Execuţia programului poate fi

continuată cu ajutorul comenzii

continue. Comanda step va

continua execuţia programului

până la următoarea linie de cod.

Comanda next este similară cu

step, însă apelurile de funcţii nu vor

fi tratate recursiv.

Inspectarea variabilelor se face

prin intermediul comenzii print,

având ca parametru expresia ce va

fi afişată.

Automatizarea compilării cu makeUtilitarul make se foloseşte în

principal pentru a întreţine un

set de fişiere cu interdependenţe, care

fac parte dintr-un proiect. Acest program

serveşte aşadar la automatizarea compilării

aplicaţiilor complexe. Majoritatea

programelor distribuite în format-sursă din

Linux folosesc acest utilitar. Nu vom intra

aici în detalii, dat fiind natura complexă a

acestui program.

Sistemul constă în crearea unui fişier

makefile, conţinând scopuri (target-uri),

comenzi shell, macrouri şi directive.

Prezentăm mai jos un exemplu:

# fisierul principalSRC = main

# operatiunile complete � (se apeleaza make)all: tex ps

# compilare fisier tex (make text)tex: $(SRC).tex latex $(SRC).tex

# generare PostScript (make ps)ps: dvips $(SRC).dvi -o $(SRC).ps

Compilarea aplicaţiilor complexeProgramele autoconf, automake şi libtool

sunt utile pentru a simplifica compilarea

aplicaţiilor complexe pe diferite platforme

şi pentru a creşte gradul de portabilitate a

acestora.

Autoconf uşurează portarea programelor

pe diferite platforme prin determinarea

caracteristicilor sistemului pe care se face

compilarea înainte ca aceasta să înceapă.

Codul sursă se poate adapta astfel mai uşor

la diferenţele existente între platforme.

Automake este un instrument care

generează în mod automat fişiere makefile,

simplificând mult munca de realizare a

acestora. El oferă de asemenea diverse

funcţii utile precum determinarea

automată a dependenţelor dintre fişiere.

Libtool este o interfaţă pentru compilator

şi link-editor care permite generarea

uşoară a bibliotecilor, fie ele statice sau

dinamice, independent de platformă.

Aceste trei instrumente sunt programe

distincte, însă între ele există o legătură

strânsă.

Evidenţierea modificărilor din programeUtilitarul diff determină diferenţele dintre

două fişiere text. Acest program este util

pentru a evidenţia modificările aduse unui

program-sursă cu ocazia unei versiuni

mai noi, sau cele efectuate de diferiţi

programatori.

Pentru a “aplica” setul de diferenţe

determinat cu ajutorului lui diff, unui fişier

“origine” în vederea generării fişierului

modificat, se utilizează utilitarul patch.

Controlul versiunilorCVS (Concurrent Versioning System) este un

sistem de control al versiunii, care permite

păstrarea tuturor versiunilor unor fişiere

(în general cod-sursă) şi realizarea unui

jurnal cu modificările efectuate de diferiţi

utilizatori. Acest sistem permite ca un grup

de persoane (echipă) să lucreze la un grup de

fişiere (proiect) comun.

Sistemul constă dintr-un depozit

(repository), stocat pe un server, care conţine

cea mai recentă versiune a grupului de fişiere.

Utilizatorii se pot conecta în orice moment la

acest depozit şi pot prelua fişierele pe care

le conţine, sau îşi pot actualiza o versiune

mai veche, existentă pe discul

local. Fiecare utilizator efectuează

modificări asupra fişierelor şi, în

momentul în care doreşte, trimite

modificările către depozit.

Medii integrate de dezvoltareAstfel, unul dintre cele mai flexibile

medii integrate este KDevelop.

Mediul KDevelop pune la

dispoziţie diverşi “vrăjitori”

(wizards) care permit generarea

automată a scheletului unei aplicaţii

software (al proiectului) – structura

de directoare a acestuia, fişierele de

configurare autoconf şi automake

etc. –, în funcţie de interfaţa proiectului

(grafică, folosind KDE, sau terminal,

adoptându-se o interfaţă text) şi a limbajului

în care acesta este implementat (C ori

C++). De asemenea, codul corespunzător

interfaţei grafice a programului poate fi

generat în mod automat cu ajutorul unui

“vrăjitor” vizual de editare.

Pe lângă mediul de dezvoltare prezentat

anterior, mai putem recurge la aplicaţii

precum:

DDD (Data Display Debugger) este

un aşa-zis depanator vizual, altfel spus o

interfaţă grafică intuitivă pentru programul

de depanare gdb.

Glade este un program pentru crearea

de interfeţe-utilizator grafice folosind

bibliotecile GNOME. Glade permite

realizarea rapidă a acestor interfeţe şi

generarea codului C corespunzător. Poate

fi un instrument rapid pentru realizarea

de interfeţe grafice pentru managerul de

ferestre GNOME.

Qt Designer reprezintă o aplicaţie destinată

creării de interfeţe grafice complexe, utilizând

biblioteca Qt folosită de KDE. ■

Figura 2. Mediul de programare Qt Designer

Dragoş Acostăchioaie este programator

de sistem şi aplicaţii Linux, administrator

de reţea, putând fi contactat la adresa

[email protected]

RUL

[1] Acostăchioaie, D.; Buraga, S., Utilizare Linux. Noţiuni de bază şi practică, Polirom, Iaşi, 2004: http://www.adt.ro/linux/

[2] Acostăchioaie, D., Programare C şi

C++ pentru Linux, Polirom, Iaşi, 2002: http://www.adt.ro/prg/

INFO

086-087_programatori.indd 87086-087_programatori.indd 87 23/12/2004 21:07:2023/12/2004 21:07:20


Recommended