Kompilacia v Ubuntu

Všetko ohľadom Linuxu...
jorg22
Medium Professional
Medium Professional
Používateľov profilový obrázok
Príspevky: 1087
Registrovaný: 12 aug 2006, 20:39
Kontaktovať používateľa:

Kompilacia v Ubuntu

Príspevok od používateľa jorg22 »

Pls mam jednoduchy zdrojovy kod co som napisal v programovacom jazyku C.Jak ho skompilujem v Ubuntu?Je na to nejaky program jak to potom spustim thx
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

Neviem, či je v *ubuntu nainštalovaný kompilátor (ak nie bude ho treba nainštalovať). Ale program sa kompiluje napr. takto:

Kód: Vybrať všetko

gcc -Wall -O2 main.c -o prg
-Wall zapne výpis všetkých chybových hlášok
-O2 pri kompilovaní sa používajú optimalizácie (výsledný program by mal byť menší/rýchlejší)
main.c je vstupný súbor
-o prg výsledný skompilovaný program sa uloží pod menom prg

Ešte môžeš použiť parameter -s. Výsledný súbor bude menší, lebo sa do neho neuložia rôzne informácie (ktoré sú potrebné skôr pri testovaní)
jorg22
Medium Professional
Medium Professional
Používateľov profilový obrázok
Príspevky: 1087
Registrovaný: 12 aug 2006, 20:39
Kontaktovať používateľa:

Príspevok od používateľa jorg22 »

nie Ubuntu nema gcc.Pls kde si ho stiahnem?
tuti
Light Professional
Light Professional
Používateľov profilový obrázok
Príspevky: 740
Registrovaný: 01 okt 2006, 19:23
Bydlisko: Prievidza

Príspevok od používateľa tuti »

jorg22 napísal:nie Ubuntu nema gcc.Pls kde si ho stiahnem?
skus v konzole napisat:

Kód: Vybrať všetko

apt-get install gcc
alebo K->System->Adept a tam do hladat napis gcc
jorg22
Medium Professional
Medium Professional
Používateľov profilový obrázok
Príspevky: 1087
Registrovaný: 12 aug 2006, 20:39
Kontaktovať používateľa:

Príspevok od používateľa jorg22 »

nejde to :( .Toto som skusal skompilovat ale nefacha to.

Kód: Vybrať všetko

#include<stdio.h>
#include<conio.h>

void main()
{
printf("LOL,Hallo world.");
}

toto mi vypise
jorg@jorg-desktop:~$ gcc -Wall -O2 /home/jorg/Desktop/palo.c -o prg
/home/jorg/Desktop/palo.c:2:18: error: conio.h: No such file or directory
/home/jorg/Desktop/palo.c:5: warning: return type of ‘main’ is not ‘int’
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

conio.h nie je súčasťou štandardnej c knižnice (takže odstráň include toho súboru).
Podľa štandardou má byť main:

Kód: Vybrať všetko

int main(void)
alebo

Kód: Vybrať všetko

int main(int argc, char *argv[])
(takže to uprav).
jorg22
Medium Professional
Medium Professional
Používateľov profilový obrázok
Príspevky: 1087
Registrovaný: 12 aug 2006, 20:39
Kontaktovať používateľa:

Príspevok od používateľa jorg22 »

No nefim kde robim chybu ale stale tonejde.Tu je kod:

Kód: Vybrať všetko

#include<stdio.h>

int main(void)
{
printf("LOL,Hallo world.");
}
a toto mi napisalo v terminali:
jorg@jorg-desktop:~$ gcc -Wall -O2 /home/jorg/Desktop/palo.c -o prg
/home/jorg/Desktop/palo.c: In function ‘main’:
/home/jorg/Desktop/palo.c:6: warning: control reaches end of non-void function
jorg@jorg-desktop:~$
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

To je len upozornenie. Keď nejaká má funkcia niečo vrátiť (tá main má výstupný typ int), tak by niečo aj vrátiť mala. :)
Daj tam buď (na koniec)

Kód: Vybrať všetko

return 0;
alebo incudni súbor stdlib.h a potom tam daj

Kód: Vybrať všetko

return EXIT_SUCCESS;
Program môže vrátiť v podstate akúkoľvek hodnotu, ale zvyčajne keď nenastane chyba vráti 0 (EXIT_SUCCESS) a keď nejaká chyba nastane, vráti nenulovú hodnotu (napr. EXIT_FAILURE).
jorg22
Medium Professional
Medium Professional
Používateľov profilový obrázok
Príspevky: 1087
Registrovaný: 12 aug 2006, 20:39
Kontaktovať používateľa:

Príspevok od používateľa jorg22 »

thx uz to facha :D
q-parser
Professional
Professional
Používateľov profilový obrázok
Príspevky: 1410
Registrovaný: 04 dec 2004, 16:48
Bydlisko: /dev/null
Kontaktovať používateľa:

Príspevok od používateľa q-parser »

chrono napísal:Neviem, či je v *ubuntu nainštalovaný kompilátor (ak nie bude ho treba nainštalovať). Ale program sa kompiluje napr. takto:

Kód: Vybrať všetko

gcc -Wall -O2 main.c -o prg
-Wall zapne výpis všetkých chybových hlášok
-O2 pri kompilovaní sa používajú optimalizácie (výsledný program by mal byť menší/rýchlejší)
main.c je vstupný súbor
-o prg výsledný skompilovaný program sa uloží pod menom prg

Ešte môžeš použiť parameter -s. Výsledný súbor bude menší, lebo sa do neho neuložia rôzne informácie (ktoré sú potrebné skôr pri testovaní)
Nemam ziadne vycitky voci tomuto, vsetko je to pravda. Ja len chcem podotknut, ze pouzitie optimalizacie znemozni ladenie, ktore je pri vacsich programoch dost dolezite.
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

Ale pri ladení by tam bolo vhodné pridať aj parameter -g (alebo podobný), aby vo výslednom súbore boli aj údaje pre debugger.
q-parser
Professional
Professional
Používateľov profilový obrázok
Príspevky: 1410
Registrovaný: 04 dec 2004, 16:48
Bydlisko: /dev/null
Kontaktovať používateľa:

Príspevok od používateľa q-parser »

No ved hej, ale s parametrom -O nema jaksi zmysel.
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

Vždy môžeš použiť -O0 :)
Niekedy sa stane, že program bez optimalizácií funguje a s nimi nie (zvyčajne pri použití -ffast-math [ale ten parameter by sa nemal používať, lebo môže spôsobiť problémy], alebo pri nejakej chybe v gcc), takže niekedy je vhodné debugovať program skompilovaný s optimalizáciami.
Najlepšie je urobiť si nejaký Makefile a tam nastavovať potrebné parametre (napr. ak je definované debug použije sa -O0 -g, a ak nie je tak sa použije -O2 -s [tak nejako to používam ja]).
Freelan
Light Expert
Light Expert
Používateľov profilový obrázok
Príspevky: 78
Registrovaný: 10 aug 2006, 18:24
Kontaktovať používateľa:

Príspevok od používateľa Freelan »

ja som pouzil aj g++ takze

Kód: Vybrať všetko

apt-get install gcc g++
Napísať odpoveď