» »

kako compilati z GCC v linux

kako compilati z GCC v linux

Lizard ::

ker sem cist amater, me zanima kaj in kam moras v linuxu napisat, da ti skompajla recimo file KODA.C z gcc-jem?
a je potrebno tale gcc kompiler snet z neta?nikjer ga ne najdem-mogoce kdo ve za kak link?
tnx
Pijani gost se kar nekaj časa trudi na zobotrebec natakniti čevapčič. Natakar ga nekaj časa opazuje, nato pa pristopi, vzame zobotrebec in nanj natakne čevapčič: 'Vidite gospod, povsem preprosto!' 'Seveda, ko sem ga pa že jaz utrudil.'

Rok Nemec ::

Takole če imaš več .c datotek: (če imaš eno, napišeš pač samo eno)

gcc prva.c druga.c -I /home/program -o test -lcurses -lm -s -O1

-o pomeni da mu spremeniš ime compilanega programa iz standardnega a.out na (v zgornjem primeru) test.
-lcurses -> uporablja knjižnico curses
-lm uporablja matematično knjižnico (library)
-s odstrani neuporabljen del knjižnice (manjši source)
-01 optimizacija kode

Skompajlan program zaženeš na ta način da vpišeš: ./test (razen če nimaš domačega direktorija napisanega v PATH)

Za več info si poglej tutoriale na internetu.

Gcc imaš nameščen na domala vseh Linux distribucijah (razen morda kakšne LIVE distribucije).

Zgodovina sprememb…

teac ::

V konzolo:
gcc koda.c -o mojprogram
./mojprogram

Zgodovina sprememb…

  • spremenilo: teac ()

alum ::

oz.

gcc -Wall koda.cpp -o program

ce zelis, da ti compiler izpise opozorila...

Brane2 ::

Hmm. Čisto možno da se motim, ampak a ni -s v bistvu "strip", ki to odstrani neuporabljene simbole in ne same knjižnice ?

Kokr vem, je ta na Linuxu ponavadi itak ".so", torej shared object in se bodisi naloži ali pa ne in je nimaš kaj rezat ? No, tu pride v igro še VM, ki nalaga posamezne 4k strani v RAM takrat ko jih program rabi, a pustimo to.

Saj se ne bi delal pameten, a sedaj sem v Winsih in ne morem sam preverit... :\
On the journey of life, I chose the psycho path.

Rok Nemec ::

Ja, res je.

-s naredi isto kot naredi ukaz: "strip test" in sicer odstrani sistemske tabele, ki so uporabne pri razhroščevanju programa.
Torej zadeva je uporabna pri Release verziji programa.

Hvala za opombo.

Nerdor ::

teac: recimo, če je program v *.c relativno kratek se ti splača uporabiti "make mojprogram" (kar naredi dobesedno isto kot "gcc mojprogram.c -o mojprogram") in nato zagon stvaritve "./mojprogram".
... for lifetime!

Jebiveter ::

Jeff: Ja, na nek nacin. Zanimivo je to, da programa ne mores debuggat z gdb-jem ce ga ne skompajlas z -g. Tako da tiste dodatne tablele v programu niti ne vem cemu sluzijo. Wasting space, I guess.

BTW: osnovne optimizacije so 3 - -O1, -O2, -O3. Pri nekaterih programih in ne-ravno-optimiziranih algoritmih (najbolj osnovni bubble-sort recimo) se -O3 pozna z 1x hitrejsim delovanjem.
Certainty of death. Small chance of success. What are we waiting for?

BigWhale ::

> Tako da tiste dodatne tablele v programu niti ne vem cemu sluzijo.
> Wasting space, I guess.

Bodi junak, pa si postripaj kernel module, bos ful na placu prisparal!

;)


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Gcc linkanje .so

Oddelek: Programiranje
51489 (1054) golobich
»

Makefile in c++

Oddelek: Programiranje
252888 (1928) Looooooka
»

nov ukaz v windowsih

Oddelek: Operacijski sistemi
10868 (594) marjan_h
»

c++ pomoč

Oddelek: Programiranje
121001 (730) geek93
»

[fork] Apache C module vs. Java

Oddelek: Programiranje
452096 (1655) PaX_MaN

Več podobnih tem