Fórum Ubuntu CZ/SK

Ubuntu pro osobní počítače => Software => Příkazový řádek a programování pro GNU/Linux => Téma založeno: mka 11 Května 2009, 17:45:32

Název: gcc, g++, make a spol. - jak na to? [vyřešeno]
Přispěvatel: mka 11 Května 2009, 17:45:32
Zdravím,
skutečnost, že se mi nepodařilo zkompilovat extundelete mě vede k založení toho tématu. Těm, kterým by se snad mohlo zdát nemístné, se předem omlouvám.

Na linuxu jsem kompiloval zdrojáky v c naposledy někdy v roce 1995 a od té doby se a) jistě mnohé změnilo a b) si už stejně nepamatuji, jak jsem to dělal. Je pěkné, že je všude spousta návodů, jak napsat své první "Hele, *censored*", ale jakmile se návod dostane ke kompilaci, omezí se na strohé "v terminálu napíšeme make..." Nicméně nějakého souvislejšího výkladu o tom kdy použít g++, kdy gcc a kdy něco úplně jiného, co je na co lepší, jak to všechno naistalovat, kde případně hledat všemožné knihovní funkce a tak podobně, jsem se zatím nedopídil.

Rád bych zdůraznil, že mi nejde o nějaké kurzy C/C++ ale o to jaké jsou v ubuntu možnosti udělat z toho (nesporně úžasného) zdrojáku něco, co se dá spustit.

Děkuji a případným radikálním čtenářům se ještě jednou omlouvám :-)
Název: Re: gcc, g++, make a spol. - jak na to?
Přispěvatel: MacHala 11 Května 2009, 18:21:42
pri rozsahu dnesnich aplikaci, clovek (kdyz se s tim nejak zvlast nezbyva) nema moc ve vlastnich rukou ani tu kompilaci - vsechno proste zalezi na tom jak developer na pise Makefile, a pak uz to je fakt zpravidla jen ./configure; doinstaluju co to hlasi, ze chybi; ./configure; znova doiinstaluju; ./configure (ted je uz vse ok); make ;make install

jinak se da rict ze g++ je na prgramy v C++ a gcc na C (i kdyz g++ stejne vola gcc)

knihovny je nejlepsi hledat v repozitarich... a kdyz se nedari zjistit, ktery balicek to obsahuje tak zagooglit

a uplne nejlepsi je nic nekompilovat a nechat to na vyvojarich :D
Název: Re: gcc, g++, make a spol. - jak na to?
Přispěvatel: mka 11 Května 2009, 18:44:26
No, já bych si třeba i sem tam potřeboval něco napsat. Tedy: jezdit na kole umím, to se nazapomíná, jen u tohohle ubuntího kola nějak nemohu nají řídítka :-)
A navíc, občas je potřeba použít něco, co je k dispozici pouze ve zdroji (viz např. ten extundelete). Tož tak.
Název: Re: gcc, g++, make a spol. - jak na to?
Přispěvatel: MacHala 11 Května 2009, 20:53:01
a jaky konkretne problem jsi s tim mel? co to hazelo za errory? ja to ted zkousel ve fedore a bylo to jen o napsani make ... a tady konkretne je i ten Makefile jednoduchy (konkretne ze tri zdrojaku zkompilovat tri object files a ty pak slinkovat)...
Název: Re: gcc, g++, make a spol. - jak na to?
Přispěvatel: Yontalcar 11 Května 2009, 21:27:48
knihovny je nejlepsi hledat v repozitarich... a kdyz se nedari zjistit, ktery balicek to obsahuje tak zagooglit
na toto používám apt-file
Název: Re: gcc, g++, make a spol. - jak na to?
Přispěvatel: pousteVnik 11 Května 2009, 22:53:32
pokud chces neco tvorit tak si napis svuj mfile
http://man-wiki.net/index.php/1:create_makefile
edit :
jeste doplnim cesky:
http://www.linuxsoft.cz/article.php?id_article=722
Název: Re: gcc, g++, make a spol. - jak na to?
Přispěvatel: MacHala 11 Května 2009, 23:10:35
knihovny je nejlepsi hledat v repozitarich... a kdyz se nedari zjistit, ktery balicek to obsahuje tak zagooglit
na toto používám apt-file
hm, skoda, ze jsem tohle neznal dokud jsem pouzival ubuntu... yum je v tomhle intuitivnejsi (ale taky pomalejsi...)
Název: Re: gcc, g++, make a spol. - jak na to?
Přispěvatel: nettezzaumana 11 Května 2009, 23:19:38
Na linuxu jsem kompiloval zdrojáky v c naposledy někdy v roce 1995 a od té doby se a) jistě mnohé změnilo a b) si už stejně nepamatuji, jak jsem to dělal. Je pěkné, že je všude spousta návodů, jak napsat své první "Hele, *censored*" ..
.. boze, ty jsi nejakej chytrej .. co kdybys treba ukazal na cem to skoncilo .. heh
Název: Re: gcc, g++, make a spol. - jak na to?
Přispěvatel: mka 12 Května 2009, 00:24:39
a jaky konkretne problem jsi s tim mel? co to hazelo za errory? ja to ted zkousel ve fedore a bylo to jen o napsani make ... a tady konkretne je i ten Makefile jednoduchy (konkretne ze tri zdrojaku zkompilovat tri object files a ty pak slinkovat)...

No, nijak zvlášť jsem to neřešil - make mi vyjel spoustu chyb, tak jsem to (s ohledem na velmi pochybný výsledek použití onoho nástroje) nechal plavat a nijak moc to dál nezkoumal. Emilové (e-maily)  za šest dní (z toho tři dny volna) mi za to zase nestojí. Ale jde mi o to spíš obecně - je to, jako když sedíš v autě, víš, že umíš řídit, ale zrovna tuhle káru neumíš nastartovat :-)
Název: Re: gcc, g++, make a spol. - jak na to?
Přispěvatel: mka 12 Května 2009, 00:30:27
.. boze, ty jsi nejakej chytrej .. co kdybys treba ukazal na cem to skoncilo .. heh

Zejtra to zkusím spustit znova a šoupnu ti to sem. Možná 50 řádků chyb, co já vím...

P.S.
Ta cenzůra se tu provádí automaticky nebo tu člověk nemůže bejt "neslušnej" ani sám na sebe? :-)))
Název: Re: gcc, g++, make a spol. - jak na to?
Přispěvatel: MacHala 12 Května 2009, 00:32:08
No, nijak zvlášť jsem to neřešil - make mi vyjel spoustu chyb, tak jsem to (s ohledem na velmi pochybný výsledek použití onoho nástroje) nechal plavat a nijak moc to dál nezkoumal. Emilové (e-maily)  za šest dní (z toho tři dny volna) mi za to zase nestojí. Ale jde mi o to spíš obecně - je to, jako když sedíš v autě, víš, že umíš řídit, ale zrovna tuhle káru neumíš nastartovat :-)
ono je taky dulezity pokusit se najit zapalovani (aspon ty errory precist)...
Název: Re: gcc, g++, make a spol. - jak na to?
Přispěvatel: mka 12 Května 2009, 00:43:52
Jasně.

První hláška byla, že nemám g++ :-). Tedy jenom jedna drobná chyba. Tak jsem ho nainstaloval a bylo z toho na jeden a půl obrazovky errorů. A vzhledem k tomu, že (zrovna v tomhle případě) je výsledek použití extundelete velmi nejistý, jsem to nechal plavat. V tuhle chvíli mi ani tak nejde o žádný konkrétní případ, jako o to jak (obecně, povšechně, srozumitelně, ...) na to.
Mimochodem, co je to zapalování?
Název: Re: gcc, g++, make a spol. - jak na to?
Přispěvatel: nettezzaumana 12 Května 2009, 08:25:48
ah. co treba zkusit `apt-get install build-essentials`
Název: Re: gcc, g++, make a spol. - jak na to?
Přispěvatel: mka 12 Května 2009, 10:06:29
HA:
Kód: [Vybrat]
sudo apt-get install build-essentials
[sudo] password for ***:
Čtu seznamy balíků... Hotovo
Vytvářím strom závislostí       
Čtu stavové informace... Hotovo
E: Nemohu najít balík build-essentials
Název: Re: gcc, g++, make a spol. - jak na to?
Přispěvatel: ufaak 12 Května 2009, 10:12:19
znas klavesu "tab"? ona je desne mocna... kdyz napises zacatek, tak doplni konec :)

nesmis jen slepe kopirovat prikazy...

mas tam navic to s na konci
Název: Re: gcc, g++, make a spol. - jak na to?
Přispěvatel: nettezzaumana 12 Května 2009, 10:13:34
znas klavesu "tab"? ona je desne mocna... kdyz napises zacatek, tak doplni konec :)

nesmis jen slepe kopirovat prikazy...

mas tam navic to s na konci
.. hehe. lovim z pameti, pac nemam ubuntu, tak je jasne, ze ve jmenu baliku muzu udelat chybu
Název: Re: gcc, g++, make a spol. - jak na to?
Přispěvatel: ufaak 12 Května 2009, 10:14:34
znas klavesu "tab"? ona je desne mocna... kdyz napises zacatek, tak doplni konec :)

nesmis jen slepe kopirovat prikazy...

mas tam navic to s na konci
.. hehe. lovim z pameti, pac nemam ubuntu, tak je jasne, ze ve jmenu baliku muzu udelat chybu

to taky nebylo mirene na tebe ;)
Název: Re: gcc, g++, make a spol. - jak na to?
Přispěvatel: mka 12 Května 2009, 10:17:27
.. boze, ty jsi nejakej chytrej .. co kdybys treba ukazal na cem to skoncilo .. heh

Kód: [Vybrat]
make
g++ -I. -I. -I.. -g -W -Wall -Wimplicit -Woverloaded-virtual -Wundef -Wpointer-arith -Wwrite-strings -Winline -DDEBUG -DUSE_MMAP=1 -c -o extundelete.o `test -f 'extundelete.cc' || echo './'`extundelete.cc                                                                                                                                                            
extundelete.cc:77:27: error: ext2fs/ext2fs.h: No such file or directory                                                                                                            
In file included from extundelete.cc:78:                                                                                                                                            
kernel-jbd.h:106: error: ‘__u32’ does not name a type                                                                                                                              
kernel-jbd.h:107: error: ‘__u32’ does not name a type                                                                                                                              
kernel-jbd.h:108: error: ‘__u32’ does not name a type                                                                                                                              
kernel-jbd.h:117: error: ‘__u32’ does not name a type                                                                                                                              
kernel-jbd.h:118: error: ‘__u32’ does not name a type                                                                                                                              
kernel-jbd.h:149: error: ‘__u32’ does not name a type                                                                                                                              
kernel-jbd.h:150: error: ‘__u32’ does not name a type                                                                                                                              
kernel-jbd.h:151: error: ‘__u32’ does not name a type                                                                                                                              
kernel-jbd.h:155: error: ‘__u32’ does not name a type                                                                                                                              
kernel-jbd.h:156: error: ‘__u32’ does not name a type                                                                                                                              
kernel-jbd.h:160: error: ‘__s32’ does not name a type                                                                                                                              
kernel-jbd.h:164: error: ‘__u32’ does not name a type                                                                                                                              
kernel-jbd.h:165: error: ‘__u32’ does not name a type                                                                                                                              
kernel-jbd.h:166: error: ‘__u32’ does not name a type                                                                                                                              
kernel-jbd.h:168: error: ‘__u8’ does not name a type                                                                                                                                
kernel-jbd.h:171: error: ‘__u32’ does not name a type                                                                                                                              
kernel-jbd.h:173: error: ‘__u32’ does not name a type                                                                                                                              
kernel-jbd.h:176: error: ‘__u32’ does not name a type                                                                                                                              
kernel-jbd.h:177: error: ‘__u32’ does not name a type                                                                                                                              
kernel-jbd.h:180: error: ‘__u32’ does not name a type                                                                                                                              
kernel-jbd.h:183: error: ‘__u8’ does not name a type                                                                                                                                
kernel-jbd.h:797: error: expected initializer before ‘EXT2FS_ATTR’                                                                                                                  
kernel-jbd.h:798: error: expected initializer before ‘EXT2FS_ATTR’                                                                                                                  
In file included from extundelete.cc:79:                                                                                                                                            
undel.h:52: error: ISO C++ forbids declaration of ‘ext2_ino_t’ with no type                                                                                                        
undel.h:52: error: expected ‘;’ before ‘*’ token                                                                                                                                    
undel.h:72: error: variable or field ‘run_program’ declared void
undel.h:72: error: ‘ext2_filsys’ was not declared in this scope
undel.h:73: error: variable or field ‘load_super_block’ declared void
undel.h:73: error: ‘ext2_filsys’ was not declared in this scope
undel.h:74: error: variable or field ‘init_journal’ declared void
undel.h:74: error: ‘ext2_filsys’ was not declared in this scope
undel.h:74: error: expected primary-expression before ‘*’ token
undel.h:74: error: ‘jsb’ was not declared in this scope
undel.h:75: error: variable or field ‘restore_file’ declared void
undel.h:75: error: ‘ext2_filsys’ was not declared in this scope
undel.h:75: error: expected primary-expression before ‘const’
undel.h:76: error: variable or field ‘restore_inode’ declared void
undel.h:76: error: ‘ext2_filsys’ was not declared in this scope
undel.h:76: error: expected primary-expression before ‘int’
undel.h:76: error: expected primary-expression before ‘const’
undel.h:78: error: variable or field ‘recover_inode’ declared void
undel.h:78: error: ‘ext2_filsys’ was not declared in this scope
undel.h:78: error: expected primary-expression before ‘int’
undel.h:78: error: expected primary-expression before ‘struct’
undel.h:79: error: ‘ext2_filsys’ was not declared in this scope
undel.h:79: error: ‘ext2_ino_t’ was not declared in this scope
undel.h:79: error: template argument 1 is invalid
undel.h:79: error: template argument 2 is invalid
undel.h:79: error: ‘inolist’ was not declared in this scope
undel.h:79: error: ‘ext2_ino_t’ was not declared in this scope
undel.h:79: error: expected primary-expression before ‘dirname’
undel.h:79: error: initializer expression list treated as compound expression
undel.h:82: error: expected ‘,’ or ‘...’ before ‘*’ token
undel.h:82: error: ISO C++ forbids declaration of ‘ext2_super_block’ with no type
undel.h:85: error: expected ‘,’ or ‘...’ before ‘&’ token
undel.h:85: error: ISO C++ forbids declaration of ‘ext2_group_desc’ with no type
In file included from extundelete.cc:80:
undel-priv.h:16: error: expected constructor, destructor, or type conversion before ‘*’ token
undel-priv.h:20: error: ‘ext2_super_block’ does not name a type
undel-priv.h:29: error: expected constructor, destructor, or type conversion before ‘*’ token
undel-priv.h:50: error: ‘__s64’ does not name a type
undel-priv.h:51: error: ‘__s64’ does not name a type
In file included from extundelete.cc:81:
block.h:9: error: ‘ext2_ino_t’ does not name a type
block.h:12: error: ‘ext2_ino_t’ has not been declared
block.h:20: error: ‘errcode_t’ does not name a type
block.h:23: error: ‘errcode_t’ does not name a type
block.h:35: error: ‘ext2_filsys’ was not declared in this scope
block.h:36: error: ‘blk_t’ was not declared in this scope
block.h:36: error: ‘blocknr’ was not declared in this scope
block.h:37: error: ‘e2_blkcnt_t’ was not declared in this scope
block.h:38: error: ‘blk_t’ was not declared in this scope
block.h:39: error: expected primary-expression before ‘int’
block.h:40: error: expected primary-expression before ‘void’
block.h:40: error: initializer expression list treated as compound expression
extundelete.cc:119: error: ‘is_filename_char’ declared as an ‘inline’ variable
extundelete.cc:119: error: ‘__s8’ was not declared in this scope
extundelete.cc:120: error: expected ‘,’ or ‘;’ before ‘{’ token
make: *** [all] Error 1

vidím, že mi chybí ext2fs.h  -> kde ho mám vzít? -> a i kdyby, výsledek obnovy je dat je nejistý -> kašlu na to -> zakládám vlákno plné blbých otázek :-)
Název: Re: gcc, g++, make a spol. - jak na to?
Přispěvatel: mka 12 Května 2009, 10:18:37
znas klavesu "tab"? ona je desne mocna... kdyz napises zacatek, tak doplni konec :)

nesmis jen slepe kopirovat prikazy...

mas tam navic to s na konci

I ntz se někdy sekne...
Název: Re: gcc, g++, make a spol. - jak na to?
Přispěvatel: nettezzaumana 12 Května 2009, 10:39:12
Citace: makefile
error: ext2fs/ext2fs.h: No such file or directory

hehe. minimalne ti chybi balik co obsahuje header pro ext2fs, u me ::

Citace
# rpm -qf `find /usr/include/ | grep ext2fs\.h` --queryformat %{name}\\n
libext2fs-devel
Název: Re: gcc, g++, make a spol. - jak na to?
Přispěvatel: nettezzaumana 12 Května 2009, 10:43:22
ad.x) a copak to build-essential neobsahuje balik co ma v sobe ext2fs.h ??
Název: Re: gcc, g++, make a spol. - jak na to?
Přispěvatel: premet 12 Května 2009, 10:44:32
Stačí trochu googlovat a zjistíš, že ten balík je nejspíš
Kód: [Vybrat]
e2fslibs-dev
Název: Re: gcc, g++, make a spol. - jak na to?
Přispěvatel: mka 12 Května 2009, 10:45:50
ad.x) a copak to build-essential neobsahuje balik co ma v sobe ext2fs.h ??

Zdá se, že ne...
Název: Re: gcc, g++, make a spol. - jak na to?
Přispěvatel: nettezzaumana 12 Května 2009, 10:47:53
hmm. nicmene verim, ze se nakonec se svyma zkusenostma jiste dostanes i za tuto zdanlive neresitelnou otazku a jiste nam ukazes pripadne dalsi errory ..

http://sysinf0.klabs.be/usr/include/ext2fs/ext2fs.h?dist=;arch=
Název: Re: gcc, g++, make a spol. - jak na to?
Přispěvatel: mka 12 Května 2009, 10:53:42
Stačí trochu googlovat a zjistíš, že ten balík je nejspíš
Kód: [Vybrat]
e2fslibs-dev

A jsme u toho - základní otázka tohoto tématu zní: to to fakt nejde jinak než kvůli každý pí... googlovat a shánět? To nikde není nějaká stránka, kde by všechny tyhle informace byly hezky po kupě? např.:
Název: Re: gcc, g++, make a spol. - jak na to?
Přispěvatel: mka 12 Května 2009, 10:56:12
hmm. nicmene verim, ze se nakonec se svyma zkusenostma jiste dostanes i za tuto zdanlive neresitelnou otazku a jiste nam ukazes pripadne dalsi errory ..

http://sysinf0.klabs.be/usr/include/ext2fs/ext2fs.h?dist=;arch=

Děkuji, zvládl to i Synaptic. Další chyby se již nevyskytly.
Název: Re: gcc, g++, make a spol. - jak na to?
Přispěvatel: nettezzaumana 12 Května 2009, 10:59:43
Stačí trochu googlovat a zjistíš, že ten balík je nejspíš
Kód: [Vybrat]
e2fslibs-dev

A jsme u toho - základní otázka tohoto tématu zní: to to fakt nejde jinak než kvůli každý pí... googlovat a shánět? To nikde není nějaká stránka, kde by všechny tyhle informace byly hezky po kupě? např.:
  • pro obsluhu fs potřebujte tyto knihovny
  • pro obsluhu usb tyto knihovny
  • pro obsluhu tohohle tohle
  • pro obsluhu támhlenctoho tůdlencto
.. umh. to vypada na pomerne pokrocile stadium dehydratace ..

zkus se napit vody, priste si cti errory pri kompilovani a pokud se citis jako BFU, tak prosimte uz radsi nic nekompiluj ..
Název: Re: gcc, g++, make a spol. - jak na to?
Přispěvatel: nettezzaumana 12 Května 2009, 11:00:20

Děkuji, zvládl to i Synaptic. Další chyby se již nevyskytly.
.. np, urw
Název: Re: gcc, g++, make a spol. - jak na to?
Přispěvatel: Martin - ViPEr*CZ* 12 Května 2009, 11:18:37
Stačí trochu googlovat a zjistíš, že ten balík je nejspíš
Kód: [Vybrat]
e2fslibs-dev

A jsme u toho - základní otázka tohoto tématu zní: to to fakt nejde jinak než kvůli každý pí... googlovat a shánět? To nikde není nějaká stránka, kde by všechny tyhle informace byly hezky po kupě? např.:
  • pro obsluhu fs potřebujte tyto knihovny
  • pro obsluhu usb tyto knihovny
  • pro obsluhu tohohle tohle
  • pro obsluhu támhlenctoho tůdlencto
.. umh. to vypada na pomerne pokrocile stadium dehydratace ..

... nekompiluj ..
nebo nekomplikuj  ;D
Název: Re: gcc, g++, make a spol. - jak na to? [vyřešeno]
Přispěvatel: Yontalcar 12 Května 2009, 11:26:15
v debian-like distrech:
Kód: [Vybrat]
$ apt-file search ext2fs.h
e2fslibs-dev: /usr/include/ext2fs/ext2fs.h
e2fslibs-dev: /usr/share/doc/e2fslibs/html-info/libext2fs.html
libtsk-dev: /usr/include/tsk3/fs/tsk_ext2fs.h
libtsk1-dev: /usr/include/tsk/fs/tsk_ext2fs.h
(apt-file se AFAIK musí doinstalovat; aktualizuje se separátně)

dále je na stránkách http://packages.ubuntu.com/ (http://packages.ubuntu.com/) dole "Search the contents of packages"; to samé platí pro packages.debian.org (http://packages.debian.org)
Název: Re: gcc, g++, make a spol. - jak na to?
Přispěvatel: mka 12 Května 2009, 11:33:23
.. umh. to vypada na pomerne pokrocile stadium dehydratace ..
zkus se napit vody, priste si cti errory pri kompilovani a pokud se citis jako BFU, tak prosimte uz radsi nic nekompiluj ..
No už jsem se bál, že se tu nenajde ani jeden BFP...:-)
Název: Re: gcc, g++, make a spol. - jak na to? [vyřešeno]
Přispěvatel: MacHala 12 Května 2009, 18:35:19
ja bych akorat jeste na zaver poznamenal, ze prectenim README u toho, co se kompiluje, lze nekdy prijit na "zajimave" veci

Citace
To compile and install this program, you should first install the linux kernel headers (sometimes called linux-headers or kernel-devel) and the binary and development packages for e2fsprogs and e2fslibs. You must have g++ and GNU make to compile the program.
Název: Re: gcc, g++, make a spol. - jak na to? [vyřešeno]
Přispěvatel: mka 13 Května 2009, 09:37:14
Jasně. Informace, že potřebuji něco "sometimes called" je skvělá. A ještě tři zlaté vlasy...
Abych to tedy nějak uzavřel:
Tohle téma jsem nezakládal proto, abych zkompiloval extundelete (v té době jsem již použil pár dní starou zálohu), ale proto, abych se pokusil dopídit se nějaké přehledné kuchařky typu "Úplný průvodce bludištěm knihoven, z nichž většinu stejně nikdy nepoužijete" s podtitulem třeba "Why and where can I get what they say I have to have".

Tímto považuji téma za opravdu vyřešené a všem zúčastněným ještě jednou děkuji :-)