abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
dnes 07:00 | Zajímavý článek

Na stránkách Google SRE (Site Reliability Engineering) je volně k dispozici nová kniha Building Secure and Reliable Systems vydaná v nakladatelství O’Reilly.

Ladislav Hagara | Komentářů: 0
dnes 06:00 | Nová verze

Byla vydána nová verze 1.44 editoru zdrojových kódů Visual Studio Code (Wikipedie). Přehled novinek i s náhledy a animovanými gify v poznámkách k vydání. Ve verzi 1.44 bude vydáno také VSCodium, tj. komunitní sestavení Visual Studia Code bez telemetrie a licenčních podmínek Microsoftu.

Ladislav Hagara | Komentářů: 3
včera 20:22 | Nová verze

Bylo vydáno ICQ New, tj. nová vylepšená verze letos již čtyřiadvacetiletého ICQ. Linuxový balíček ve formátu snap je k dispozici na Snapcraftu.

Ladislav Hagara | Komentářů: 3
včera 17:33 | IT novinky

Společnost Cloudflare na svém blogu informuje, že přešla z reCAPTCHA na hCAPTCHA. Jako důvody uvádí ochranu soukromí uživatelů, občasné výpadky Google služeb v Číně a také úsporu finančních prostředků.

Ladislav Hagara | Komentářů: 6
včera 15:22 | Komunita

Nadace GNOME ve spolupráci s Endless spustila Community Engagement Challenge. Cílem této výzvy je přitáhnout k open source novou generaci vývojářů. Máte-li nápad, jak toho dosáhnout, můžete se přihlásit do 1. července. Mezi vybrané projekty bude rozděleno 65 000 dolarů.

Ladislav Hagara | Komentářů: 16
včera 09:00 | Komunita

Git (Wikipedie), distribuovaný systém správy verzí vytvořený Linusem Torvaldsem, původně pro vývoj Linuxu, slaví 15 let. Vývoj Gitu započal v dubnu 2005. Bylo potřeba nahradit proprietární BitKeeper.

Ladislav Hagara | Komentářů: 2
včera 08:00 | Nová verze

Google Chrome 81 byl prohlášen za stabilní (YouTube). Nejnovější stabilní verze 81.0.4044.92 tohoto webového prohlížeče přináší řadu oprav a vylepšení. Vylepšeny byly také nástroje pro vývojáře (YouTube). Opraveno bylo 32 bezpečnostních chyb.

Ladislav Hagara | Komentářů: 0
včera 07:00 | Nová verze

Linuxová distribuce Tails zaměřená na ochranu soukromí na internetu byla aktualizována. Vydání 4.5 přináší bezpečnostní opravy nejen ve webovém prohlížeči Tor Browser (nyní 9.0.9); nově je podporován Secure Boot.

Fluttershy, yay! | Komentářů: 0
7.4. 23:00 | Zajímavý článek

Článek na blogu vývojářů Badoo představuje klasický unixový nástroj cron sloužící k plánování úloh. Shrnuje jeho historii, způsob použití s příklady a rozdíly mezi verzemi, jakožto i základní návrh.

Fluttershy, yay! | Komentářů: 0
7.4. 07:00 | Nová verze

Dnes odpoledne vyjde Mozilla Firefox 75.0. Oficiální verze ve formátu Flatpak je již k dispozici na Flathubu. Přehled novinek bude zveřejněn v poznámkách k vydání a na stránce věnované vývojářům.

Ladislav Hagara | Komentářů: 16
Chodíte do práce?
 (25%)
 (1%)
 (3%)
 (3%)
 (46%)
 (14%)
 (6%)
Celkem 229 hlasů
 Komentářů: 4, poslední 2.4. 14:20
Rozcestník

www.AutoDoc.Cz

Nebojíme se kompilace - II (praxe)

19. 10. 2004 | Petr Krčmář | Návody | 42963×

Konečně si ukážeme kompilaci v praxi: GCC, configure, make, checkinstall.

V minulém díle našeho miniseriáliu jsme si představili kompilaci teoreticky. Řekli jsme si, o co se vlastně jedná, k čemu je to dobré a dnes si řekneme, jak na to.

Nástroje

Už jsem vysvětlil, že se jedná o plně automatickou činnost řízenou jistými utilitami, které jistě najdete i ve své distribuci. Jde především o:

gcc

gcc je překladač, o kterém jsme mluvili v minulém díle. Provádí samotnou kompilaci, optimalizaci a všechny ostatní důležité operace.

make

Make je velmi důležitou utilitou, která řídí celou kompilaci. Vznikla z potřeby jednoduše zpracovat i velmi rozsáhlé projekty, jejichž ruční kompilace by byla velmi náročná. U větších projektů je potřeba zkompilovat velké množství dílčích souborů, provádět různé úpravy a podobně. Make toto vše dělá automaticky podle souboru nazvaného makefile.

Tento soubor se musí nacházet v adresáři s kompilovaným projektem. Obvykle se vytváří až na místě dle konkrétního systému.

Knihovny

Další důležitou součástí nutnou pro kompilaci jsou takzvané vývojářské knihovny. Ty obsahují hlavičkové soubory nutné pro linkování s konkrétní knihovnou. Od běžné knihovny se obvykle liší přívlastkem dev nebo devel, který je součástí názvu. Knihovna a vývojařská knihovna se tedy mohou jmenovat například:

xlibs-4.1.0
xlibs-dev-4.1.0

Pro běh programu je potřeba mít nainstalovanou jen uživatelskou část, kdežto pro překlad potřebujeme i vývojovou část. Ta ale obvykle není příliš velká, takže se o místo na disku bát nemusíte a není třeba ji po kompilaci odinstalovávat.

Pokud na některou vývojařskou knihovnu zapomenete, překlad neproběhne a poměrně srozumitelně se dozvíme, co je potřeba udělat, abychom chybu napravili.

Zdrojové kódy

Nyní se už dostáváme k samotnému překladu. Před samotným začátkem si neodpustím malou připomínku: Překlad jako takový nemusíte provádět jako root a také to nedoporučuji!

Prvním krokem je samozřejmě stažení souboru obsahujícího samotné kódy překládaného programu. Ten obvykle najdete na domovské stránce konkrétního projektu. Nemůžete-li program najít, obraťte se na Google případně rovnou na Freshmeat.

Stažený soubor (obvykle sbalený tarem a komprimovaný gzipem) rozbalíme pomocí příkazu

tar -xzf nas_zdrojak.tgz

Dalším a často opomíjeným krokem je přečtení dokumentace. Obvykle se v nejvyšším adresáři s kódy nachází soubor INSTALL nebo README. Přečtěte si jej! Obsahuje postup kompilace, která se může od námi probíraného mírně lišit. Obvykle také obsahuje seznam knihoven potřebných ke kompilaci a běhu programu.

configure

Většina kompilací probíhá velmi podobně. Nejprve je potřeba vygenerovat pracovní soubor pro make. Jeho generování probíhá až na cílovém stroji právě proto, aby bylo možno překlad uskutečnit na různých distribucích, platformách a dokonce systémech.

K samotnému vygenerování slouží obvykle skript configure. Ten se nachází v kořenovém adresáři kódů a často pomocí něj můžeme ovlivnit samotnou kompilaci. Volitelně totiž přijímá kompilační parametry, které mění výslednou podobu makefile a tím i konečného programu. Napíšeme tedy

cd nas_zdrojak
./configure --help

a dozvíme se, co a jak, případně jaké parametry můžeme použít. Dejme tomu, že chceme, aby program uměl běhat pod X serverem (a tedy v grafice) a vybrali jsme si parametr --enable-gui. Můžeme tedy zadat

./configure --enable-gui

a skript se spustí. Obvykle je psán v co nejuniverzálnějším jazyce a postupně si ohmatá celý váš systém a pokud najde vše potřebné, vygeneruje zmíněný soubor makefile.

Během práce uvidíte výpis podobný tomuto (zkráceno):

checking for gcc... gcc
checking for C compiler default output... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ANSI C... none needed
checking for style of include used by make... GNU
checking dependency style of gcc... gcc3
checking for g++... g++
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking dependency style of g++... gcc3
checking for a BSD-compatible install... /usr/bin/install -c
checking for ranlib... ranlib
checking how to run the C++ preprocessor... g++ -E
checking for X... libraries /usr/X11R6/lib, headers /usr/X11R6/include

Pokud se configure u něčeho zastaví a nedoběhne do konce, musíme problém napravit (obvykle chybí některá knihovna nebo utilita).

Kompilace

Jestliže vše proběhlo, můžeme spustit samotnou kompilaci. Make dokáže také přijímat parametry a jedním z nich je název akce, kterou má dle makefile provádět. Pokud neuvedeme parametr, začne defaultní akce, jenž obvykle znamená kompilaci:

make

Opět uvidíme řadu kompilačních výstupů a musíme si počkat. Jak dlouho bude překlad trvat závisí především na velikosti projektu, který zpracováváme, a výkonu našeho procesoru.

Když překlad neskončí hlášením pana Errora, máte vyhráno a právě se vám podařilo přeložit první program. Výsledky kompilace jsou ale ještě stále uloženy v adresáři se zdrojovými kódy. Nyní je musíme dostat do systému.

Instalace

Makefile kromě kompilačního postupu obsahuje také kód pro instalaci programu. Takže stačí ze sebe udělat roota (tentorát už bezpodmínečně) a spustit instalaci:

su
Password: ********
make install

Toto je sice nejjednodušší postup, ale má několik nevýhod. Pokud totiž používáme balíčkovací distribuci (což je dnes skoro každá), nebude při tomto postupu balíčkovací systém o nové aplikaci vůbec vědět. To může mít za následek problém se závislostmi (program v systému doopravdy je, ale podle databáze ne). Navíc se připravíme o možnost komfortní odinstalace a v systému nám tak začne postupem času vznikat nepořádek. Řešením je vytvořit před instalací balíček a ten následně nainstalovat.

Opět to nebude nic těžkého a postačí nám k tomu utilita checkinstall, která dokáže sledovat činnost make install, rekonstruovat všechny kroky, posbírat soubory a sestavit balíček.

Místo posledního příkazu tedy použijeme

su
Password: ********
checkinstall

Program se po krátké přípravě zeptá, pro jakou distribuci má balíček vytvořit (Slackware, RPM nebo Debian), vyžádá si popis programu a po kontrole údajů se již balíček vytvoří a nainstaluje.

Hotovo. Tímto jste zkompilovali a nainstalovali svůj první program.

"Zavuete očíčka pane Čupeuo, tááák. A teď otevuete ... že to nebolelo?" (J. Werich: Až opadá listí z dubu)

Příště se podíváme na nějaké vychytávky a ukážeme si, jak kompilaci vylepšit.

       

Hodnocení: 50 %

        špatnédobré        

Nástroje: Tisk bez diskuse

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Vložit další komentář

19.10.2004 07:40 Eagle
Rozbalit Rozbalit vše su
... má parametr -c, man su.
19.10.2004 08:11 Jarek Šeděnka
Rozbalit Rozbalit vše checkinstall a 2.6
checkinstall už funguje pod jádrem 2.6? nedávno jsem kvůli tomu narazil...
19.10.2004 08:26 Antonín Kolísek | skóre: 33 | blog: PDA | Vyškov
Rozbalit Rozbalit vše Re: checkinstall a 2.6
Checkinstall vždycky fungoval pod jádrem 2.6. Alespoň jej tam sám provozuji od dob co 2.6 jádro existuje.
19.10.2004 09:28 slesik | skóre: 4
Rozbalit Rozbalit vše Re: checkinstall a 2.6
když nefunguje normální checkinstall (fedora, mdk), tak instaluju již upravený chekc... ze suse .. ftp://ftp.sh.cvut.cz/SuSE/i386/9.1/suse/i586/checkinstall-1.6.0beta3-8.i586.rpm
19.10.2004 09:31 svaca | skóre: 38
Rozbalit Rozbalit vše Re: checkinstall a 2.6
Checkinstall nebezi dohromady s knihovnou libsafe .... Paklize mate oboji, je problem ...
Never give up ! Stay ATARI !
19.10.2004 08:26 Greenhorn | skóre: 8 | blog: Linux is good way to freedom. | Proseč pod Ještědem
Rozbalit Rozbalit vše Kompilace
Tímto chci poděkovat tvůrci za článek o kompilaci. Jsem začátečník, linux se mi velice líbí. Uvedený proces jsem již dělal párkrát. Bohužel jsem vlastně nevěděl, co dělám. Nyní, díky teorii a rozboru jednotlivých procesů mám jasno. Hlavně je to napsané velice srozumitelně i pro mne, co by "zelenáče". Budu čekat na další pokračování. Díky za to !!

Pavel
Petr Krčmář avatar 19.10.2004 08:38 Petr Krčmář | skóre: 60 | Liberec
Rozbalit Rozbalit vše Re: Kompilace
Ahoj, díky za díky :-D. Právě proto jsem samozřejmě články psal -- aby pomohli začátečníkům překonat strach. Není to tak hrozné.

Petr
Amatéři postavili Noemovu archu, profesionálové Titanic ...
29.10.2005 09:25 johncross
Rozbalit Rozbalit vše Re: Kompilace
Dobry den,

cetl jsem si vas prispevek...je zajimavy. Ale vy se v nem venujete pouze verzi kde pracujete s configure souborem.

Co kdyz jsem si stahnul rpm bez konfigure? Jak mam postupovat potom?

Dekuji
Stanislav Brabec avatar 19.10.2004 10:26 Stanislav Brabec | skóre: 45 | Praha
Rozbalit Rozbalit vše checkinstall
Chtělo by to poznamenat, že checkinstall sice vytvoří balíček rychle, ale nejde o korektní cestu k balíčku.

Za určitých okolností totiž může balíček vytvořený checkinstall poškodit systém:

Některé programy provádějí další akce k zaregistrování programu. Nejběžnější ldconfig checkinstall nezmate, ale takový gst-register, gconftool-2 a další již mohou. V nejhorším případě může použití useradd vložit do balíčku /etc/passwd, a při odstranění takového balíčku je zaděláno na velký problém, neboť v některých distribucích soubor /etc/passwd nevlastní žádný balíček, takže jej balíčkovací systém odstraní.

Korektní práce na balíčku začíná (u balíků korektně napsaných s pomocí automake) s "make DESTDIR=moje_pomocná_cesta install", které se nespouští pod rootem. V Debianu a Gentoo existují utility, které přitom korektně detekují chown a chgrp. Pak následuje prohlídka seznamu souborů a tvorba balíčku.
19.10.2004 13:00 finn | skóre: 43 | blog: finnlandia | 49° 44´/13° 22´
Rozbalit Rozbalit vše připomínka
Před samotným začátkem si neodpustím malou připomínku: Překlad jako takový nemusíte provádět jako root a také to nedoporučuji!
Já si také neodpustím malou připomínku: když už je napsáno, že se něco má/nemá udělat, mělo by také hned následovat vysvětlení proč, jinak je informace neúplná a téměř nicneříkající.
Užívej dne – možná je tvůj poslední.
19.10.2004 13:43 Robert Krátký | skóre: 94 | blog: Robertův bloček
Rozbalit Rozbalit vše Re: připomínka
Tu svoji připomínku jsi však mohl doplnit tím vysvětlením, které v článku postrádáš.

Co se kompilace jako root týče, neexistuje nějaký speciální důvod, proč to nedělat. Respektive, ten důvod je stejný jako u spousty dalších běžných činností. Stejně tak jako není potřeba být root k prohlížení webu, přehrávání písniček nebo psaní dopisů, tak to není nutné při kompilaci.

Nedoporučuje se to z podobných důvodů, jako se nedoporučuje provádět výše zmíněné činnosti jako root: je to bezpečnostní riziko. Přičemž největším nebezpečím je uživatel sám sobě, protože jako root může bezděky napáchat v systému škodu, kterou se nemusí podařit napravit. Jako běžný uživatel na podobně destruktivní činnost nemá právo, a proto je to tak bezpečnější.
20.10.2004 01:14 pasmen | skóre: 45 | blog: glob | Praha
Rozbalit Rozbalit vše Re: připomínka
To je sice pravda, ale: kdyz se clovek treba snazi vytvorit balicek, kompilovat to jako user a nasledne menit vlastnika a prava zpet na roota apod. je dost otrava. Pokud balicek nevytvari a pousti rovnou make install, coz dela prirozene jako root, je to mnohem vetsi riziko nez kompilace. Leda ze by nekdo totalne po*** Makefile... ;-))
20.10.2004 08:26 Robert Krátký | skóre: 94 | blog: Robertův bloček
Rozbalit Rozbalit vše Re: připomínka
a nasledne menit vlastnika a prava zpet na roota apod.

Proč?
20.10.2004 14:12 pasmen | skóre: 45 | blog: glob | Praha
Rozbalit Rozbalit vše Re: připomínka
Neni to nutnost, ale nektere adresare dodrzuji urcita pravidla, jako ze /bin atd. maji vlastnika a skupinu root.bin apod. Pokud program zkompilujete jako normalni user, musite ty skupiny a vlastnika zmenit.
20.10.2004 07:19 Eagle
Rozbalit Rozbalit vše Re: připomínka
Taky mi občas připadá, že to někdo s paranoiou přehání. Pokud nedokáže kontrolovat svou činnost, neměl by spravovat server. To je asi jako kdyby při odhlašování z produkčního windows serveru kliknul omylem na shutdown místo log off ;-). Stát se to může, ale je ten člověk na správném místě?
20.10.2004 08:32 Robert Krátký | skóre: 94 | blog: Robertův bloček
Rozbalit Rozbalit vše Re: připomínka
To je dost postavené na hlavu. Nerespektovat určité jednoduché zásady bezpečnosti jen proto, že si člověk myslí, že už je velký kluk a má na to, to je zvláštní důvod. Když je někdo hasič, ještě to neznamená, že se mu nic nestane, když škrtne sirkou na benzínce...
20.10.2004 10:12 Zdenek Kaminski
Rozbalit Rozbalit vše Re: připomínka
Takze predpokladam, ze procitate Makefile, aby jste vedel, co dela prikaz 'make install' a ze si jste skutecne jisty, ze Vam nic nepreplacne, nesmaze...

Ono totiz i tvurci Makefile obcas udelaji botu a prikaz rm ci install nemusi mit vzdy tu spravnou volbu. Az se jednou spalite, tak uz pod rootem delat nebudete...
20.10.2004 10:27 svaca | skóre: 38
Rozbalit Rozbalit vše Re: připomínka
Ja tedy nevim, Slacka pouzivam od 7 verze a vse si kompiluju sam (pouzivam checkinstall), nepouzivam swaret, atd ... a uz balicek rozbaluju jako root ... a NIKDY jsem nemel problem, maximalne nekdy cheinstall byl nekompatibilni s Makefile a NENAINSTLOVAL vubec nic, jinak zadny problem ...
Never give up ! Stay ATARI !
20.10.2004 12:37 Robert Krátký | skóre: 94 | blog: Robertův bloček
Rozbalit Rozbalit vše Re: připomínka
Už tak dlouho chodím se džbánem pro vodu, a ještě NIKDY se mi ucho neutrhlo...
20.10.2004 14:14 pasmen | skóre: 45 | blog: glob | Praha
Rozbalit Rozbalit vše Re: připomínka
Presne tak, pokud se bojite make tak z make install musite kleknout...;-) Protoze, pokud na Vas nikdo nechysta past, tak se kompilaci "nemuze" nic skazit, vzhledem k tomu ze to zatim nehrabe do systemu (narozdil od installu). A to nesouvisi s tim , jestli je nekdo uz velky kluk nebo ne ;-)
20.10.2004 15:24 Michal Marek (twofish) | skóre: 55 | blog: { display: blog; } | Praha
Rozbalit Rozbalit vše Re: připomínka
Ona ta kompilace bohužel někdy nespočívá jen v ./configure && make, ale občas i vim soubor/ve/kterem/to/buhvi/proc/hlasi/chybu.c a vim co/zas/za/chybu/je/v/tom/Makefile nebo vim ktery/prase/psalo/ten/configure.in, a tolik věcí dělat pod rootem už opravdu není dobrý nápad (nehledě na to, že chci používat to nastavení programů, na které jsem zvyklý a které mám v $HOME)
Jiří Svoboda avatar 21.10.2004 11:37 Jiří Svoboda | skóre: 37 | blog: cat /dev/mind | Prostějov
Rozbalit Rozbalit vše Ucho uz se utrhlo...
Jen doplneni k diskusi vyse.
Neni to tak davno, kdy se nekomu (v souvislosti s nejakym hackem) podarilo propasovat do konfiguracnich scriptu jedne aplikace jiste zmeny. Ve vysledku to znamenalo, ze pokud nekdo spustil './configure' jako root, byl stroj kompromitovan. Samotna aplikace byla beze zmen a tudiz nepostizena.
Dalsi duvod, proc './configure' a 'make' urcite nespoustet jako root.
22.10.2004 21:19 Kokes
Rozbalit Rozbalit vše checkinstall a mdk10
Zdar jsem celkem zacatecnik (o cemz svedci i distribuce), pri pouziti checkinstall to hodi hlasku, ze rpm build failed. Nestalo se to nekomu? Ze bych po tom nemusel patrat... Predem dik za cokoli
25.10.2004 10:20 Dano
Rozbalit Rozbalit vše Sikovnost
Chcel by som sa spytat co v pripade, ze som bol sikovny a pokompiloval som nejake veci bez checkinstall. Da sa to dostat dodatocne do db, alebo musim rekompilovat?
30.11.2004 10:39 Michal
Rozbalit Rozbalit vše Dotaz
Je to vyvetlene celkem hezky, ale chtelo by to se zminit, ze nekdy se stava, ze mame nejaky nainstalovany program nebo knihovnu, ale pri ./configure se ten program nenajde a hlasi to chybu, ze ho nemuze najit. Jak se to resi?
Stanislav Brabec avatar 30.11.2004 11:46 Stanislav Brabec | skóre: 45 | Praha
Rozbalit Rozbalit vše Re: Dotaz
Překvapivě přesně tak, jak configure radí:

See config.log for details.

Důvodů selhání je mnoho:

- chybí devel balíček

- knihovna je jinde

- závislá knihovna je jinde

- knihovna závisí na další nepředpokládané knihovně

- nevhodná verze knihovny

- kompilace testovacího programu selhal

- chybí potřebný include soubor

- test není dostatečně obecný

atd.
30.12.2004 09:54 Greenhorn | skóre: 8 | blog: Linux is good way to freedom. | Proseč pod Ještědem
Rozbalit Rozbalit vše Chtěl bych se zeptat.
Včera jsem si zkusil vytvořit zkušebně rpm balíček pomocí checkinstall. Bohužel se mi to nepovedlo. ./configure i make proběhli bez errors až do konce. Když jsem dal příkaz checkinstall, program naběhl a po chvíli se mě zeptal, zda chci vytvořit nějaký adresář ./doc. Defaultně tam bylo v hranaté závorce yes, tak jsem jen potvrdil. Bohužel to následně vypsalo několik chybových hlášení a že nelze najít adresáře a soubory. Program nahlásil, že make install nebyl proveden a bye. Po druhé se to již na nic neptalo a výsledek byl stejný. Tak jsem zadal tedy klasicky make install a vše proběhlo O.K.. Ale co se chci zeptat. Je rozdíl mezi instalací RPM nebo klasickou kompilací source dat v ukládání souborů? V adresářové struktuře linuxu je několik adresářů bin, lib a pod. Mám za to, že pokud instaluji rpm, soubory se uloží do jiných adresářů, než když provádím kompilaci ze zdrojových kódů. Dá se to nějakým způsobem sjednotit, nebo je to zbytečné? Distro mám MDK 10.0. Kernel řady 2.6.x
Stanislav Brabec avatar 30.12.2004 21:38 Stanislav Brabec | skóre: 45 | Praha
Rozbalit Rozbalit vše Re: Chtěl bych se zeptat.
Je to standard daný FHS. Programy spravované balíčkovacím systémem patří do /usr (pokud jsou nutný pro počáteční boot, pak do /), programy instalované ručně do /usr/local (implicitní hodnota configure skriptu), programy třetích stran do /opt/vendor_prefix.
31.12.2004 10:01 Greenhorn | skóre: 8 | blog: Linux is good way to freedom. | Proseč pod Ještědem
Rozbalit Rozbalit vše Re: Chtěl bych se zeptat.
Díky moc za odpověď. Proč jsem se ptal. Dám příklad. Stáhnu si někde RPM balíček s programem. Dám ho instalovat. Zahlásí chybějící závislost na nějaké knihovně. Tu už neseženu jako RPM balíček, jen jako soubor knihovna.tar.gz k ruční instalaci. Proto mne zajímalo, zda tomu RPM balíčku při instalaci je to jedno a při hledání závislé knihovny hledá i v jiných adresářích (/usr/lib nebo /usr/local/lib a tak). Bohužel mám jenom jeden počítač, na kterém mi linux běhá velmi dobře. Nerad bych si ten systém pokazil nějakým hloupým zásahem, proto se radši poptám chytřejších a zkušenějších. Díky.
Stanislav Brabec avatar 31.12.2004 12:06 Stanislav Brabec | skóre: 45 | Praha
Rozbalit Rozbalit vše Re: Chtěl bych se zeptat.
RPM knihovny vůbec nehledá. Jména knihoven jsou pro něj abstraktní symboly jako každé jiné v seznamu závislostí, který je vytvářen při sestavování balíku (rpmbuild). Jeden RPM je dodá (--provides), druhý je vyžaduje (--requires). Sbírání symbolů z knihoven, binárek a skriptů při sestavování RPM se ve spec souboru jmenuje AutoReqProv.
3.1.2005 18:57 ion_cannon
Rozbalit Rozbalit vše ./configure
Ahojte, potreboval by som poradit, zakazdym ked spustim ./configure proces mi skonci hlaskou ¨error: no acceptable C compiler found in $PATH See `config.log' for more details.¨ Neviem velmi po anglicky a ked som sa pozeral do suboru config.log velmi som tomu nerozumel, som este uplny zaciatocnik a neviem si rady. Predpokladam ze budem musiet nieco doinstalovat, no neviem co. Vopred dakujem za radu PS: neviem ci je to potrebne ale pre istotu uvadzam ze pouzivam Mandrake 10.1 jadro 2.6.8.1
Stanislav Brabec avatar 3.1.2005 21:34 Stanislav Brabec | skóre: 45 | Praha
Rozbalit Rozbalit vše Re: ./configure
Potřebujete "C compiler" (C kompilátor), tedy např. gcc. Alespoň základy angličtiny jsou pro kompilaci nutné.
3.1.2005 22:32 ion_cannon
Rozbalit Rozbalit vše Re: ./configure
No pozeral som cez rpmdrake ci to tam nahodou nie je no a vyhodilo mi ze gcc nainstalovane mam a to vo verzii 3.4.1-3mdk hmm co teraz?
Stanislav Brabec avatar 4.1.2005 11:20 Stanislav Brabec | skóre: 45 | Praha
Rozbalit Rozbalit vše Re: ./configure
Pak tedy: See `config.log' for more details. (Podrobnosti viz `config.log'.)

Tam bude popsaná chyba, proč configure nevidí kompilátor. Možná vám chybí vývojářské balíčky (-devel), např. glibc-devel apod. (může se lišit podle distribuce; budete jich většinou potřebovat desítky). Více viz článek.
8.1.2005 21:26 ssil | skóre: 15
Rozbalit Rozbalit vše Re: ./configure
Chybu vidím v tom, že to co kompiluješ potřebuje jinou verzi gcc než máš. Na to stačí odkaz

ln -s /usr/bin/gcc-[máš] /usr/bin/gcc-[požadované]

Alespoň mě to v Debianu funguje. Ještě připomínku. Jsem taky začátečník a zbytečně jsem ztrácel čas pochopením nutnosti mezer tak jak jsem napsal.
8.1.2005 21:27 ssil | skóre: 15
Rozbalit Rozbalit vše Re: ./configure
Chybu vidím v tom, že to co kompiluješ potřebuje jinou verzi gcc než máš. Na to stačí odkaz

ln -s /usr/bin/gcc-[máš] /usr/bin/gcc-[požadované]

Alespoň mě to v Debianu funguje. Ještě připomínku. Jsem taky začátečník a zbytečně jsem ztrácel čas pochopením nutnosti mezer tak jak jsem napsal.
14.1.2005 10:28 Greenhorn | skóre: 8 | blog: Linux is good way to freedom. | Proseč pod Ještědem
Rozbalit Rozbalit vše Checkinstall
Dobrý den všem linuxovím odborníkům! Mám malý problém. Zkoušel jsem si vytvořit rpm balíček pomocí programu checkinstall. Mám distribuci Mandrake 10.0. Instalace ./configure a make proběhne v pořádku. Pak dle návodu v článku spustím na místo make install příkaz checkinstall. Program se spustí ,něco si to přečte, začne pracovat, ale po chvíli program ukončí svou činnost a s rozloučením "bye" :-) se zastaví. Něco se mu nelíbilo a to něco je jakýsi časový posuv nebo časové zpoždění, s tím, že nemůže najít adresáře nebo soubory. Zkoušel jsem program spouštět s různými parametry, ale nekápl jsem na to pravé. Nemáte s tím někdo nějakou zkušenost? Díky za odpověď.
29.10.2005 09:25 johncross
Rozbalit Rozbalit vše Re: Nebojíme se kompilace - II (praxe)
Dobry den, cetl jsem si vas prispevek...je zajimavy. Ale vy se v nem venujete pouze verzi kde pracujete s configure souborem.

Co kdyz jsem si stahnul rpm bez konfigure? Jak mam postupovat potom?

Dekuji
5.11.2005 17:17 Fox | blog: Foxovy zápisy | Vsetín
Rozbalit Rozbalit vše Re: Nebojíme se kompilace - II (praxe)

Huráá konečně jsen našel co jsem potřeboval.

A je to napsané celkem blbovzorně.

Děkuju

18.11.2005 22:03 wasil
Rozbalit Rozbalit vše Re: Nebojíme se kompilace - II (praxe)
No já mám problém že configure mi vůbec nejde...mám Mandrake 10.0???
vencour avatar 27.3.2006 21:30 vencour | skóre: 56 | blog: Tady je Vencourovo | Praha+západní Čechy
Rozbalit Rozbalit vše Re: Nebojíme se kompilace - II (praxe)

Další zajímavé postupy, díky Tomovi: odkaz do diskuse.

Ty nejhlubší objevy nečekají nutně za příští hvězdou. Jsou uvnitř nás utkány do vláken, která nás spojují, nás všechny.
4.11.2006 22:45 Tomas
Rozbalit Rozbalit vše Re: Nebojíme se kompilace - II (praxe)
Na uvod -pouzivam mandrivu 2007 a jsem zacatecnik...ted k problemu...navod se mi velmi libi muj pokus o zkompilovani probehl uspesne,ale zkompiloval sem si napriklad kaffeine a bohuzel nevim jak ho po nainstalovani spustit...po nainstalovani z bezneho rpm balicku stazeneho ze stranek projektu staci pote vytvorit spouteci soubor a do cesty zadat "kaffeine" a program se spusti...po instalaci z meho rpm balicko to nefunguje....diky za radu,vim ze nejspis jen musim zadat spravnou cestu,ale nepodarilo se mi ji najit
robinek avatar 30.7.2008 15:28 robinek
Rozbalit Rozbalit vše Re: Nebojíme se kompilace - II (praxe)
no ja mam problem ze pri kompilaci jisteho programu Google gadgest se mi po zadani ./configure zastavila priprava na teto chybe: configure:3740: error: C compiler cannot create executables. Ze by chyba v GCC ? jinak config.log je tu: http://disk.jabbim.cz/robinek@jabbim.cz/config.log , moc jsem z nej chytry nebyl :-(
HW: DELL M4300, Nvidia Quadro FX 360M SW: Kubuntu 10.04
Stanislav Brabec avatar 30.7.2008 16:06 Stanislav Brabec | skóre: 45 | Praha
Rozbalit Rozbalit vše Re: Nebojíme se kompilace - II (praxe)
Viz druhý odstavec. Nemáte nainstalované vývojářské balíčky. Tentokrát vám chybí zřejmě glibc-devel (záleží na konkrétní distribuci).
robinek avatar 30.7.2008 19:54 robinek
Rozbalit Rozbalit vše Re: Nebojíme se kompilace - II (praxe)
tak jsem doinstaloval vyvojarske nastroje a porad stejny error. ani nevim kde je v logu napsano co tomu chzbi nic jsem nenasel .:-(
HW: DELL M4300, Nvidia Quadro FX 360M SW: Kubuntu 10.04
Stanislav Brabec avatar 31.7.2008 00:07 Stanislav Brabec | skóre: 45 | Praha
Rozbalit Rozbalit vše Re: Nebojíme se kompilace - II (praxe)
Hlavním problémem je toto:
/usr/bin/ld: crt1.o: No such file: No such file or directory
Kompilátor nenašel soubor crt1.o, který se na většině 32bitových systémů nachází v adresáři /usr/lib a např. v openSUSE je součásti balíku glibc-devel. Jak je to ve vaší distribuci, netuším, ani nevím, která to je, neboť se hlásí jen jako i686-pc-linux-gnulibc1 (nicméně argumentem configure bylo i486-linux-gnu).
30.1.2012 11:57 Pev | skóre: 28
Rozbalit Rozbalit vše Re: Nebojíme se kompilace - II (praxe)
Ještě stojí za zmínku, že pro kódy získané pomocí gitu se většinou pouští autogen.sh.

Založit nové vláknoNahoru

ISSN 1214-1267   www.czech-server.cz
© 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.