Portál AbcLinuxu, 14. května 2025 00:06

Dotaz: Kompilace do jiného adresáře

23.4.2012 18:14 DWD | skóre: 18 | blog: papiry
Kompilace do jiného adresáře
Přečteno: 224×
Odpovědět | Admin

Když kompilujeme ze zdrojového kódu aplikace, nemusíme je kompilovat a instalovat do adresářů, kam se obvykle instalují programy pomoci balíčků. Můžeme použít například /opt/slozka nebo i některý domácí adresář. Takové věci si však nemůžeme dovolit při kompilování sdílených knihoven nebo pluginů, protože by je žádná aplikace nenašla. Sdílené knihovny a pluginy každá aplikace hledá na obvyklých místech, proto i při kompilaci musíme zachovat, kam se to nainstaluje. Teď mě ale napadá, že můžou být taky vyjímky, kdy sdílené knihovny nebo pluginy můžeme nebo dokonce je vhodné nakompilovat jinam. Příklad:

Pomoci balíčku mám nainstalované swh-plugins, které fungují dobře. Některý plugin bych si chtěl upravit, aby fungoval trochu jinak, ale ostatní pluginy bych nechtěl pokazit. Proto bych si stáhnul zdrojový kód swh-plugins, rozbalím, udělám některé úpravy ve zdrojovém kódu u vybraného pluginu, potom všechny pluginy zkompiluji. Při kompilaci si však zvolím nějaký prázdný adresář, třeba i v domácí složce. Vím, že zatím ty nové plginy fungovat nebudou, protože je žádný program nenajde, to ale nevadí. Vyhledám si binární soubur pluginu, který jsem předtím upravoval, a ten ručně nakopíruji teprve až teď na obvyklé předepsané místo, aby ho aplikace našly. Ještě předtím zkontroluji, jestli v tom "obvyklém" adresáři není soubor se stejným názvem a pokud je, tak si název nového souboru upravím, aby se odlišil a nepřepsaly be se soubory navzájem.

Mám pravdu, že v některých případech je vhodné pluginy dočasně nakompilovat jinam? Mohl bych postupovat, jak jsem popsal? A nemůže kompilace selhat nebo zkončit chybou, kvůli tomu, že si nastavím, aby se mi to kompilovalo jinam? Přece jenom to nejsou normální aplikace, ale pluginy nebo sdílené knihovny, u kterých to není zvykem.

Jsem kretén, který ví lautr hovno o Linuxu a o počítačích vůbec.

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

23.4.2012 18:39 Atrament
Rozbalit Rozbalit vše Re: Kompilace do jiného adresáře
Odpovědět | | Sbalit | Link | Blokovat | Admin
Když si zkompiluješ nějakou knihovnu někam do /opt/knihovna a chceš ji otestovat tak stačí nastavit LD_LIBRARY_PATH tak aby linker nejprve našel tu tvoji knihovnu v /opt/knihovna - prostě dáš ten adresář s tou knihovnou na začátek. Kdybys tak chtěl nějakou knihovnu mít nainstalovanou a používat pořád, tak stačí přidat záznam o tom do /etc/ld.so.conf...
rADOn avatar 24.4.2012 20:13 rADOn | skóre: 44 | blog: bloK | Praha
Rozbalit Rozbalit vše Re: Kompilace do jiného adresáře
K tomu ještě dodám, že pokud ty pluginy nejsou linkované do binárky ale natahují se za běhu pomocí dlopen(), může si aplikace určit vlastní cestu ke knihovně nezávislou na nastavení linkeru. Ta by pak měla být někde v konfiguráku té aplikace. Přinejhorším by to mělo jít vynutit pomocí LD_PRELOAD, což je taková drsnejší varianta LD_LIBRARY_PATH.
"2^24 comments ought to be enough for anyone" -- CmdrTaco

Založit nové vláknoNahoru

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

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.