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
-
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 :-)
-
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
-
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.
-
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)...
-
knihovny je nejlepsi hledat v repozitarich... a kdyz se nedari zjistit, ktery balicek to obsahuje tak zagooglit
na toto používám apt-file
-
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
-
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...)
-
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
-
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 :-)
-
.. 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? :-)))
-
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)...
-
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í?
-
ah. co treba zkusit `apt-get install build-essentials`
-
HA:
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
-
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
-
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
-
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 ;)
-
.. boze, ty jsi nejakej chytrej .. co kdybys treba ukazal na cem to skoncilo .. heh
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 :-)
-
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...
-
error: ext2fs/ext2fs.h: No such file or directory
hehe. minimalne ti chybi balik co obsahuje header pro ext2fs, u me ::
# rpm -qf `find /usr/include/ | grep ext2fs\.h` --queryformat %{name}\\n
libext2fs-devel
-
ad.x) a copak to build-essential neobsahuje balik co ma v sobe ext2fs.h ??
-
Stačí trochu googlovat a zjistíš, že ten balík je nejspíš
e2fslibs-dev
-
ad.x) a copak to build-essential neobsahuje balik co ma v sobe ext2fs.h ??
Zdá se, že ne...
-
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=
-
Stačí trochu googlovat a zjistíš, že ten balík je nejspíš
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
-
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.
-
Stačí trochu googlovat a zjistíš, že ten balík je nejspíš
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 ..
-
Děkuji, zvládl to i Synaptic. Další chyby se již nevyskytly.
.. np, urw
-
Stačí trochu googlovat a zjistíš, že ten balík je nejspíš
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
-
v debian-like distrech:
$ 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)
-
.. 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...:-)
-
ja bych akorat jeste na zaver poznamenal, ze prectenim README u toho, co se kompiluje, lze nekdy prijit na "zajimave" veci
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.
-
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 :-)