OVH Cloud OVH Cloud

Drogue

114 réponses
Avatar
Patator
je fais tous les jours emerge --sync

vous apt-get ou rpmdrake?

10 réponses

Avatar
JolinFire
Le Tue, 25 Jul 2006 10:02:56 +0000, Nicolas George a écrit :

"JolinFire" , dans le message <44c5d478$0$856$,
a écrit :
Tu m'expliqueras l'intêret d'un ldd sur un binaire compilé de manière
statique.
<snip>

Car je compile *toujours* mes minefields en statique, jamais en dynamique.


Commence par nous expliquer comment ldd fait pour trouver deux pages de
bibliothèques partagées sur un binaire statique.


Surtout que les bibliothèques en question... se trouve dans le répertoire
même de firefox !

$ ls *.so
libfreebl3.so libnss3.so libplds4.so libssl3.so libxpistub.so
libmozjs.so libnssckbi.so libsmime3.so libxpcom_core.so
libnspr4.so libplc4.so libsoftokn3.so libxpcom.so

Donc, l'intérêt de lancer ldd sur un binaire statique ? A moins que les
produits de mozilla.org combinent les deux ?!


Avatar
Nicolas George
"JolinFire" , dans le message <44c5f595$0$824$,
a écrit :
Surtout que les bibliothèques en question... se trouve dans le répertoire
même de firefox !


Tu es schizophrène ou quoi ? Un message sur deux tu sors une ânerie, un
message sur deux tu sembles te moquer de ta propre ânerie. Il faudrait
savoir.

À deux messages d'intervalle, tu exhibes des dépendances dynamique d'un
binaire que tu prétends statique : il faudrait savoir, c'est contradictoire.

Avatar
JolinFire
Le Tue, 25 Jul 2006 10:45:13 +0000, Nicolas George a écrit :

"JolinFire" , dans le message <44c5f595$0$824$,
a écrit :
Surtout que les bibliothèques en question... se trouve dans le
répertoire même de firefox !


Tu es schizophrène ou quoi ? Un message sur deux tu sors une ânerie, un
message sur deux tu sembles te moquer de ta propre ânerie. Il faudrait
savoir.


Que je suis un âne ? C'est sur et certain. Schizophrène ? Non, juste
ubuntuiste, pourquoi ?


À deux messages d'intervalle, tu exhibes des dépendances dynamique d'un
binaire que tu prétends statique : il faudrait savoir, c'est
contradictoire.


Ce qui est marrant, c'est que firefox semble mélanger les deux : du
statique et du dynamique.

Soit un firefox 2.0 béta1 pour linux, téléchargé ici.

http://releases.mozilla.org/pub/mozilla.org/firefox/releases/2.0b1/linux-i686/fr/

Détargzipons le et entrons dans le répertoire du logiciel.

ls -lh f*
-rwxr-xr-x 1 fred fred 5,2K 2006-07-11 06:51 firefox
-rwxr-xr-x 1 fred fred 10M 2006-07-11 06:51 firefox-bin

10 Mo ? C'est surement du compilé statiquement. Or, si on s'amuse à faire
un ls -lh *.so...

-rwxr-xr-x 1 fred fred 227K 2006-07-11 06:51 libfreebl3.so
-rwxr-xr-x 1 fred fred 597K 2006-07-11 06:51 libmozjs.so
-rwxr-xr-x 1 fred fred 172K 2006-07-11 06:51 libnspr4.so
-rwxr-xr-x 1 fred fred 421K 2006-07-11 06:51 libnss3.so
-rwxr-xr-x 1 fred fred 238K 2006-07-11 06:51 libnssckbi.so
-rwxr-xr-x 1 fred fred 15K 2006-07-11 06:51 libplc4.so
-rwxr-xr-x 1 fred fred 8,1K 2006-07-11 06:51 libplds4.so
-rwxr-xr-x 1 fred fred 136K 2006-07-11 06:51 libsmime3.so
-rwxr-xr-x 1 fred fred 298K 2006-07-11 06:51 libsoftokn3.so
-rwxr-xr-x 1 fred fred 149K 2006-07-11 06:51 libssl3.so
-rwxr-xr-x 1 fred fred 93K 2006-07-11 06:51 libxpcom_compat.so
-rwxr-xr-x 1 fred fred 683K 2006-07-11 06:51 libxpcom_core.so
-rwxr-xr-x 1 fred fred 9,1K 2006-07-11 06:51 libxpcom.so
-rwxr-xr-x 1 fred fred 8,1K 2006-07-11 06:51 libxpistub.so


Une bonne quinzaine de bibliothèques dynamiques.

Lançons le dit firefox et entrons about:buildconfig.

Voici quelles sont les options de compilations :

--enable-application=browser --enable-update-channel¾ta
--enable-update-packaging --enable-official-branding --disable-debug
'--enable-optimize=-Os -freorder-blocks -fno-reorder-functions -gstabs+'
--disable-tests --enable-default-toolkit=gtk2 --enable-xft
--disable-freetype2 --enable-svg --enable-canvas --enable-static
--disable-shared

Or, à moins que je sois d'une nullité monstrueuse en anglais, c'est bien
une compilation statique.

A moins que des programmes compilés en statique ne fonctionnent avec des
bibliothèque dynamique ?!

Dans le même genre, Pan 0.104 que j'utilise pour répondre.

/usr/local/bin$ ldd pan
linux-gate.so.1 => (0xffffe000)
libgnome-2.so.0 => /usr/lib/libgnome-2.so.0 (0xb7f40000)
libpopt.so.0 => /lib/libpopt.so.0 (0xb7f28000)
libgnomevfs-2.so.0 => /usr/lib/libgnomevfs-2.so.0 (0xb7ecc000)
libbonobo-2.so.0 => /usr/lib/libbonobo-2.so.0 (0xb7e75000)
libgconf-2.so.4 => /usr/lib/libgconf-2.so.4 (0xb7e45000)
libgobject-2.0.so.0 => /usr/lib/libgobject-2.0.so.0 (0xb7e0d000)
libbonobo-activation.so.4 => /usr/lib/libbonobo-activation.so.4 (0xb7df9000)
libORBit-2.so.0 => /usr/lib/libORBit-2.so.0 (0xb7da8000)
libgmodule-2.0.so.0 => /usr/lib/libgmodule-2.0.so.0 (0xb7da4000)
libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0xb7da1000)
libgthread-2.0.so.0 => /usr/lib/libgthread-2.0.so.0 (0xb7d9d000)
libglib-2.0.so.0 => /usr/lib/libglib-2.0.so.0 (0xb7d19000)
libgtkspell.so.0 => /usr/lib/libgtkspell.so.0 (0xb7d14000)
libaspell.so.15 => /usr/lib/libaspell.so.15 (0xb7c5f000)
libgtk-x11-2.0.so.0 => /usr/lib/libgtk-x11-2.0.so.0 (0xb7989000)
libgdk-x11-2.0.so.0 => /usr/lib/libgdk-x11-2.0.so.0 (0xb790c000)
libatk-1.0.so.0 => /usr/lib/libatk-1.0.so.0 (0xb78f3000)
libgdk_pixbuf-2.0.so.0 => /usr/lib/libgdk_pixbuf-2.0.so.0 (0xb78de000)
libm.so.6 => /lib/tls/i686/cmov/libm.so.6 (0xb78bc000)
libpangocairo-1.0.so.0 => /usr/lib/libpangocairo-1.0.so.0 (0xb78b4000)
libfontconfig.so.1 => /usr/lib/libfontconfig.so.1 (0xb7885000)
libXext.so.6 => /usr/lib/libXext.so.6 (0xb7878000)
libXrender.so.1 => /usr/lib/libXrender.so.1 (0xb7870000)
libXinerama.so.1 => /usr/lib/libXinerama.so.1 (0xb786d000)
libXi.so.6 => /usr/lib/libXi.so.6 (0xb7865000)
libXrandr.so.2 => /usr/lib/libXrandr.so.2 (0xb7862000)
libXcursor.so.1 => /usr/lib/libXcursor.so.1 (0xb7858000)
libXfixes.so.3 => /usr/lib/libXfixes.so.3 (0xb7854000)
libpango-1.0.so.0 => /usr/lib/libpango-1.0.so.0 (0xb781c000)
libcairo.so.2 => /usr/lib/libcairo.so.2 (0xb77d6000)
libX11.so.6 => /usr/lib/libX11.so.6 (0xb76f0000)
libgmime-2.0.so.2 => /usr/lib/libgmime-2.0.so.2 (0xb76a5000)
libz.so.1 => /usr/lib/libz.so.1 (0xb7690000)
libnsl.so.1 => /lib/tls/i686/cmov/libnsl.so.1 (0xb767b000)
libpcre.so.3 => /usr/lib/libpcre.so.3 (0xb764d000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0xb7578000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0xb756e000)
libpthread.so.0 => /lib/tls/i686/cmov/libpthread.so.0 (0xb755c000)
libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb742c000)
libesd.so.0 => /usr/lib/libesd.so.0 (0xb7422000)
libaudiofile.so.0 => /usr/lib/libaudiofile.so.0 (0xb7402000)
libxml2.so.2 => /usr/lib/libxml2.so.2 (0xb72f3000)
libgnutls.so.12 => /usr/lib/libgnutls.so.12 (0xb728a000)
libavahi-glib.so.1 => /usr/lib/libavahi-glib.so.1 (0xb7287000)
libavahi-common.so.3 => /usr/lib/libavahi-common.so.3 (0xb727c000)
libavahi-client.so.3 => /usr/lib/libavahi-client.so.3 (0xb726d000)
libresolv.so.2 => /lib/tls/i686/cmov/libresolv.so.2 (0xb725a000)
libutil.so.1 => /lib/tls/i686/cmov/libutil.so.1 (0xb7257000)
libORBitCosNaming-2.so.0 => /usr/lib/libORBitCosNaming-2.so.0 (0xb7253000)
/lib/ld-linux.so.2 (0xb7f57000)
libpangoft2-1.0.so.0 => /usr/lib/libpangoft2-1.0.so.0 (0xb722e000)
libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0xb71c5000)
libexpat.so.1 => /usr/lib/libexpat.so.1 (0xb71a6000)
libXau.so.6 => /usr/lib/libXau.so.6 (0xb71a3000)
libpng12.so.0 => /usr/lib/libpng12.so.0 (0xb717f000)
libasound.so.2 => /usr/lib/libasound.so.2 (0xb70ca000)
libtasn1.so.2 => /usr/lib/libtasn1.so.2 (0xb70ba000)
libgcrypt.so.11 => /usr/lib/libgcrypt.so.11 (0xb706e000)
libgpg-error.so.0 => /usr/lib/libgpg-error.so.0 (0xb706a000)
libdbus-1.so.2 => /usr/lib/libdbus-1.so.2 (0xb7032000)

Et Pan doit être compilé en statique, car il pèse 12 Mo !

/usr/local/bin$ ls -lh p*
-rwxr-xr-x 1 root root 12M 2006-07-23 20:19 pan

J'avoue y perdre mon latin...


Avatar
Nicolas George
"JolinFire" , dans le message <44c5fa64$0$882$,
a écrit :
10 Mo ? C'est surement du compilé statiquement.


N'importe quoi.

--enable-application=browser --enable-update-channel¾ta
--enable-update-packaging --enable-official-branding --disable-debug
'--enable-optimize=-Os -freorder-blocks -fno-reorder-functions -gstabs+'
--disable-tests --enable-default-toolkit=gtk2 --enable-xft
--disable-freetype2 --enable-svg --enable-canvas --enable-static
--disable-shared

Or, à moins que je sois d'une nullité monstrueuse en anglais, c'est bien
une compilation statique.


Tu n'es pas d'une nullité monstrueuse en anglais, mais je n'en dirais pas
autant pour comprendre une ligne de configure. Usuellement, --enable-static
a pour effet d'activer la construction des versions statique des
bibliothèques, en plus de la version dynamique. Ça n'a pas d'effet sur
l'application elle-même s'il y en a une.

Avatar
JolinFire
Le Tue, 25 Jul 2006 13:21:04 +0000, Nicolas George a écrit :

"JolinFire" , dans le message <44c5fa64$0$882$,
a écrit :
10 Mo ? C'est surement du compilé statiquement.


N'importe quoi.


Pourquoi ? Un exécutable de 10 Mo en un seul morceau, ce n'est pas le

signe d'une compilation statique ?!

--enable-application=browser --enable-update-channel¾ta
--enable-update-packaging --enable-official-branding --disable-debug
'--enable-optimize=-Os -freorder-blocks -fno-reorder-functions
-gstabs+' --disable-tests --enable-default-toolkit=gtk2 --enable-xft
--disable-freetype2 --enable-svg --enable-canvas --enable-static
--disable-shared

Or, à moins que je sois d'une nullité monstrueuse en anglais, c'est
bien une compilation statique.


Tu n'es pas d'une nullité monstrueuse en anglais, mais je n'en dirais
pas autant pour comprendre une ligne de configure. Usuellement,
--enable-static a pour effet d'activer la construction des versions
statique des bibliothèques, en plus de la version dynamique. Ça n'a pas
d'effet sur l'application elle-même s'il y en a une.


Si j'essaye de renommer / supprimer un fichier .so, le résultat est net :

./firefox-bin: error while loading shared libraries: libxpcom.so: cannot
open shared object file: No such file or directory

Je vais voir la taille d'un firefox-bin avec une compilation dynamique,
tiens :p


Avatar
Nicolas George
"JolinFire" , dans le message <44c631cf$0$865$,
a écrit :
Pourquoi ? Un exécutable de 10 Mo en un seul morceau, ce n'est pas le
signe d'une compilation statique ?!


Non. C'est signe d'une application grosse, probablement car complexe. Elle
serait juste _encore plus_ grosse si elle était statique.

Si j'essaye de renommer / supprimer un fichier .so, le résultat est net :

./firefox-bin: error while loading shared libraries: libxpcom.so: cannot
open shared object file: No such file or directory


Ce qui est une preuve de plus que c'est lié dynamiquement.

Avatar
JolinFire
Le Tue, 25 Jul 2006 15:46:58 +0000, Nicolas George a écrit :

"JolinFire" , dans le message <44c631cf$0$865$,
a écrit :
Pourquoi ? Un exécutable de 10 Mo en un seul morceau, ce n'est pas le
signe d'une compilation statique ?!


Non. C'est signe d'une application grosse, probablement car complexe. Elle
serait juste _encore plus_ grosse si elle était statique.


Grosse application ? Le code source de pan 0.104 pèse... 1,9 Mo !

http://pan.rebelbase.com/download/releases/0.104/SOURCE/


Si j'essaye de renommer / supprimer un fichier .so, le résultat est net :

./firefox-bin: error while loading shared libraries: libxpcom.so: cannot
open shared object file: No such file or directory


Ce qui est une preuve de plus que c'est lié dynamiquement.


Merdre.

Alors, Mozilla.org raconte n'importe quoi en disant que la
compilation est statique ?

Faudra leur dire que ce sont des menteurs ! :)


Avatar
Stéphane Zuckerman
On Tue, 25 Jul 2006, JolinFire wrote:

Le Tue, 25 Jul 2006 15:46:58 +0000, Nicolas George a écrit :

"JolinFire" , dans le message <44c631cf$0$865$,
a écrit :
Pourquoi ? Un exécutable de 10 Mo en un seul morceau, ce n'est pas le
signe d'une compilation statique ?!


Non. C'est signe d'une application grosse, probablement car complexe. Elle
serait juste _encore plus_ grosse si elle était statique.


Grosse application ? Le code source de pan 0.104 pèse... 1,9 Mo !

http://pan.rebelbase.com/download/releases/0.104/SOURCE/


Si j'essaye de renommer / supprimer un fichier .so, le résultat est net :

./firefox-bin: error while loading shared libraries: libxpcom.so: cannot
open shared object file: No such file or directory


Ce qui est une preuve de plus que c'est lié dynamiquement.


Merdre.

Alors, Mozilla.org raconte n'importe quoi en disant que la
compilation est statique ?

Faudra leur dire que ce sont des menteurs ! :)



Non mais tu dois le faire exprès, c'est pas possible... :-)
Si en supprimant un fichier .so, qui est l'extension des bibliothèques
chargées /dynamiquement/, firefox-bin ne fonctionne pas, alors c'est qu'il
en est dépendant, non ? Une archive/bibliothèque statique est intégrée
directement au sein du binaire. Le côté "statique" de ton appli est
peut-être dû au fait que si jamais tu lances un thunderbird "statique" lui
aussi, les mêmes bibliothèques seront chargées deux fois. Et encore, c'est
pas sûr.

--
"Je deteste les ordinateurs : ils font toujours ce que je dis, jamais ce
que je veux !"
"The obvious mathematical breakthrough would be development of an easy
way to factor large prime numbers." (Bill Gates, The Road Ahead)



Avatar
JolinFire
Le Tue, 25 Jul 2006 18:36:58 +0200, =?ISO-8859-1?Q?Stéphane_Zuckerman? a écrit :

[...]

Non mais tu dois le faire exprès, c'est pas possible...


Ah ?!

Si en supprimant un fichier .so, qui est l'extension des bibliothèques
chargées /dynamiquement/, firefox-bin ne fonctionne pas, alors c'est qu'il
en est dépendant, non ? Une archive/bibliothèque statique est intégrée


Alors pourquoi est-il vraiment compilé en statique / en dynamique ou un
mélange des deux ?!

directement au sein du binaire. Le côté "statique" de ton appli est
peut-être dû au fait que si jamais tu lances un thunderbird "statique"
lui aussi, les mêmes bibliothèques seront chargées deux fois. Et encore,
c'est pas sûr.


Donc, finalement ?

- statique ?
- dynamique ?
- mélange des deux ?

Avatar
Kevin Denis
Le 25-07-2006, JolinFire a écrit :
a écrit :
10 Mo ? C'est surement du compilé statiquement.


N'importe quoi.

Pourquoi ? Un exécutable de 10 Mo en un seul morceau, ce n'est pas le

signe d'une compilation statique ?!

Le signe d'une "compilation statique" (je met entre guillemets car

je trouve ca mal dit) c'est:
:~$ file /sbin/init
/sbin/init: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV),
statically linked, stripped
^^^^^^^^^^^^^^^^^
la, statically linked. et oh surprise:
:~$ ldd /sbin/init
not a dynamic executable

mais firefox:
:~$ file /usr/src/firefox/firefox-bin
/usr/src/firefox/firefox-bin: ELF 32-bit LSB executable, Intel 80386,
version 1 (SYSV), dynamically linked (uses shared libs), stripped

dynamically linked, uses shared libs, cela signifie quoi?

La taille d'un executable n'a rien a voir avec ses proprietes dynamiques
ou statiques
:~$ ls -l /sbin/init
-rwxr-xr-x 1 root bin 470972 aoû 4 2005 /sbin/init*

470ko, ce n'est rien, et c'est du statique.
--enable-application=browser --enable-update-channel¾ta
--enable-update-packaging --enable-official-branding --disable-debug
'--enable-optimize=-Os -freorder-blocks -fno-reorder-functions
-gstabs+' --disable-tests --enable-default-toolkit=gtk2 --enable-xft
--disable-freetype2 --enable-svg --enable-canvas --enable-static
--disable-shared

Or, à moins que je sois d'une nullité monstrueuse en anglais, c'est
bien une compilation statique.


Tu n'es pas d'une nullité monstrueuse en anglais, mais je n'en dirais
pas autant pour comprendre une ligne de configure. Usuellement,
--enable-static a pour effet d'activer la construction des versions
statique des bibliothèques, en plus de la version dynamique. Ça n'a pas
d'effet sur l'application elle-même s'il y en a une.


Si j'essaye de renommer / supprimer un fichier .so, le résultat est net :

./firefox-bin: error while loading shared libraries: libxpcom.so: cannot
open shared object file: No such file or directory

Je vais voir la taille d'un firefox-bin avec une compilation dynamique,
tiens :p



--
Kevin