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