Podpora programu Elnec v Linuxu (bylo: Re: [OT] praca, programovanie vo Visual Basic 6)
Ladislav Vaiz
spam na nagano.cz
Neděle Září 23 14:15:52 CEST 2012
Udělal jsem si malý pokus:
$ echo 'int main(){gethostbyname("a");}' > a.c
$ gcc a.c -o a -static
/tmp/cccb0VyG.o: In function `main':
a.c:(.text+0x11): warning: Using 'gethostbyname' in statically linked
applications requires at runtime the shared libraries from the glibc
version used for linking
a má pravdu:
$ strace ./a 2>&1 |grep nss
open("/etc/nsswitch.conf", O_RDONLY) = 3
read(3, "# /etc/nsswitch.conf\n#\n# Example"..., 4096) = 503
open("/lib/libnss_files.so.2", O_RDONLY) = 3
open("/lib/libnss_mdns4_minimal.so.2", O_RDONLY) = 3
open("/lib/libnss_dns.so.2", O_RDONLY) = 3
A to jsou ty moduly, o kterých jsem mluvil.
L.
sal(a):
> Zdravím,
> dovoluji si nesouhlasit.
> 1) Pokud použiji volbu -static při závěrečném linkování binárky, vše, co
> normálně zavádí dynamický linker (ld.so) během spouštění binárky, včetně
> patřičných modulů glibc, bude součástí kódu.
> 2) Zbývají jedině moduly, které se takto nelinkují, ale program si je
> otevírá sám funkcí dlopen() či podobnými. Pokud by mělo dojít k něčemu
> takovému, použije se druhá část mého původního vysvětlení, a to "...
> případně přibalí vlastní verze všech knihoven, které to potřebuje". Pak je
> třeba ještě nějak zajistit, aby je to našlo, od čehož máme například
> proměnnou prostředí LD_LIBRARY_PATH, případně, pokud plánujeme ukládat
> náš produkt na nějaké pevné místo v systému, specifikovat linkeru při
> závěrečném linkování volbu -rpath.
> Licenční problémy nebývají neřešitelné, většina běžných knihoven je dnes
> pokud vím pod LGPL, která je právě pro tyto případy benevolentnější.
> Mimochodem, tento jev není přece neznámý ani u windows, spousta programů si
> také s sebou nese desítky různých .DLL, jako jsou nějaké ty MSCVRT nebo
> MFC nebo tak podobně, omlouvám se za případné komolení jmen....
> Zdraví Pavel
>
>
>> Ahoj,
>> statická kompilace je hezká teorie, bohužel v praxi nefunguje. Spousta
>> knihoven (počínaje glibc) má své dynamicky načítané moduly, které očekává v
>> souboru pevného jména. Tam zpravidla budou moduly distribuční verze a jsme
>> tam, kde jsme byli na začátku. Ano, lze je patchnout, ale už to postrádá tu
>> eleganci. U ne-GPL aplikace se k tomu přidávají ještě licenční problémy.
>> L.
>>
>> Dne 22.9.2012 19:50, Pavel Troller napsal(a):
>>
>>> Zdravím,
>>> toto je oblíbený argument "hledačů protiargumentů". Kdo chce, zkompiluje
>>> aplikaci zcela staticky, případně přibalí vlastní verze všech knihoven, které
>>> to potřebuje. Takto jsou distribuované např. Google aplikace nebo třeba
>>> Skype - je to velké, ale chodí to kdekoliv a prakticky to nemůže mít problém.
>>> Sám takto distribuji několik malých aplikací, vyvinutých pro systémy u nás ve
>>> firmě - lidé tam používají různé distribuce a chodí to všem.
>>> Zdraví Pavel
>>>
>>>
>> _______________________________________________
>> HW-list mailing list - sponsored by www.HW.cz
>> Hw-list na list.hw.cz
>> http://list.hw.cz/mailman/listinfo/hw-list
>>
> _______________________________________________
> HW-list mailing list - sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
>
Další informace o konferenci Hw-list