[Debian] Compiler en binaire statique + changer l'archi

Compiler en binaire statique + changer l'archi [Debian] - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 09-05-2007 à 16:34:54    

Bonjour,
 
Je cherche à compiler une exécutable en binaire statique, ce qui est indispensable pour pouvoir l'intégrer à un System Rescue CD. Le seul hic c'est que je ne sais pas faire.
 
J'ai cru comprende qu'il fallait faire un ./configure --enable-static --disable-shared suivi d'un make.
 
Mais ensuite? Si je fait un make intall, je ne risque pas de corrompre mon système hôte qui dispose du même logiciel mais dans une autre version?
 
J'ai farfouilé sur Google mais j'ai rein trouvé de cohérant, merci de votre aide.
 
A+


Message édité par nicephore17 le 10-05-2007 à 13:48:03

---------------
Mac Pro powered (sorry)
Reply

Marsh Posté le 09-05-2007 à 16:34:54   

Reply

Marsh Posté le 09-05-2007 à 16:35:28    

Je comprend pas le truc du "static", quelqu'un peut expliquer ?


---------------
The Toast, un docu-fiction qui teste la loi de murphy et les films en carton
Reply

Marsh Posté le 09-05-2007 à 16:44:59    

dr-freuderick a écrit :

Je comprend pas le truc du "static", quelqu'un peut expliquer ?


compiler un binaire en statique te permet de ne pas dépendre de ton environnement (les librairies sur lesquelles tu linkes sont inclues dans le binaire). Ca fait grossir les binaires accessoirement.
 
exemple :
 

[nico@moria:~] ldd `which evolution`
        linux-gate.so.1 =>  (0xffffe000)
        libeshell.so.0 => /usr/lib/evolution/2.10/libeshell.so.0 (0xb7f1b000)
        libetimezonedialog.so.0 => /usr/lib/evolution/2.10/libetimezonedialog.so.0 (0xb7f16000)
        libemiscwidgets.so.0 => /usr/lib/evolution/2.10/libemiscwidgets.so.0 (0xb7eb7000)
        libeutil.so.0 => /usr/lib/evolution/2.10/libeutil.so.0 (0xb7e87000)
        liblpint-bonobo.so.0 => /usr/lib/liblpint-bonobo.so.0 (0xb7e72000)
        liblaunchpad-integration.so.0 => /usr/lib/liblaunchpad-integration.so.0 (0xb7e6e000)
        libgnomeui-2.so.0 => /usr/lib/libgnomeui-2.so.0 (0xb7de0000)
        libglade-2.0.so.0 => /usr/lib/libglade-2.0.so.0 (0xb7dc7000)
        libbonoboui-2.so.0 => /usr/lib/libbonoboui-2.so.0 (0xb7d69000)
        libgnomevfs-2.so.0 => /usr/lib/libgnomevfs-2.so.0 (0xb7d10000)
        libgnome-keyring.so.0 => /usr/lib/libgnome-keyring.so.0 (0xb7d03000)
        libgnomecanvas-2.so.0 => /usr/lib/libgnomecanvas-2.so.0 (0xb7cd9000)
        libgnome-2.so.0 => /usr/lib/libgnome-2.so.0 (0xb7cc4000)
        libpopt.so.0 => /lib/libpopt.so.0 (0xb7cbb000)
        libart_lgpl_2.so.2 => /usr/lib/libart_lgpl_2.so.2 (0xb7ca6000)
        libpangoft2-1.0.so.0 => /usr/lib/libpangoft2-1.0.so.0 (0xb7c7b000)
        libbonobo-2.so.0 => /usr/lib/libbonobo-2.so.0 (0xb7c1f000)
        libbonobo-activation.so.4 => /usr/lib/libbonobo-activation.so.4 (0xb7c0a000)
        libgconf-2.so.4 => /usr/lib/libgconf-2.so.4 (0xb7bd7000)
        libORBit-2.so.0 => /usr/lib/libORBit-2.so.0 (0xb7b84000)
        libgthread-2.0.so.0 => /usr/lib/libgthread-2.0.so.0 (0xb7b7f000)
        libgtk-x11-2.0.so.0 => /usr/lib/libgtk-x11-2.0.so.0 (0xb7827000)
        libxml2.so.2 => /usr/lib/libxml2.so.2 (0xb770a000)
        libgdk-x11-2.0.so.0 => /usr/lib/libgdk-x11-2.0.so.0 (0xb7684000)
        libatk-1.0.so.0 => /usr/lib/libatk-1.0.so.0 (0xb7668000)
        libgdk_pixbuf-2.0.so.0 => /usr/lib/libgdk_pixbuf-2.0.so.0 (0xb7651000)
        libpangocairo-1.0.so.0 => /usr/lib/libpangocairo-1.0.so.0 (0xb7649000)
        libpango-1.0.so.0 => /usr/lib/libpango-1.0.so.0 (0xb760b000)
        libcairo.so.2 => /usr/lib/libcairo.so.2 (0xb759b000)
        libgmodule-2.0.so.0 => /usr/lib/libgmodule-2.0.so.0 (0xb7598000)
        libgobject-2.0.so.0 => /usr/lib/libgobject-2.0.so.0 (0xb755d000)
        libglib-2.0.so.0 => /usr/lib/libglib-2.0.so.0 (0xb74c8000)
        libnm_glib.so.0 => /usr/lib/libnm_glib.so.0 (0xb74c3000)
        libgtkhtml-3.14.so.19 => /usr/lib/libgtkhtml-3.14.so.19 (0xb7420000)
        libecal-1.2.so.7 => /usr/lib/libecal-1.2.so.7 (0xb737d000)
        libdbus-glib-1.so.2 => /usr/lib/libdbus-glib-1.so.2 (0xb7362000)
        libdbus-1.so.3 => /usr/lib/libdbus-1.so.3 (0xb732f000)
        libcamel-provider-1.2.so.10 => /usr/lib/libcamel-provider-1.2.so.10 (0xb72df000)
        libcamel-1.2.so.10 => /usr/lib/libcamel-1.2.so.10 (0xb7294000)
        libSM.so.6 => /usr/lib/libSM.so.6 (0xb728b000)
        libICE.so.6 => /usr/lib/libICE.so.6 (0xb7273000)
        libgnomeprintui-2-2.so.0 => /usr/lib/libgnomeprintui-2-2.so.0 (0xb7232000)
        libgnomeprint-2-2.so.0 => /usr/lib/libgnomeprint-2-2.so.0 (0xb71ca000)
        libedataserverui-1.2.so.8 => /usr/lib/libedataserverui-1.2.so.8 (0xb71a3000)
        libebook-1.2.so.9 => /usr/lib/libebook-1.2.so.9 (0xb7170000)
        libedataserver-1.2.so.9 => /usr/lib/libedataserver-1.2.so.9 (0xb714c000)
        libplds4.so => /usr/lib/libplds4.so (0xb7149000)
        libplc4.so => /usr/lib/libplc4.so (0xb7143000)
        libnspr4.so => /usr/lib/libnspr4.so (0xb7111000)
        libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb6fd0000)
        libpthread.so.0 => /lib/tls/i686/cmov/libpthread.so.0 (0xb6fb9000)
        librt.so.1 => /lib/tls/i686/cmov/librt.so.1 (0xb6fb0000)
        libXext.so.6 => /usr/lib/libXext.so.6 (0xb6fa2000)
        libXinerama.so.1 => /usr/lib/libXinerama.so.1 (0xb6f9e000)
        libXi.so.6 => /usr/lib/libXi.so.6 (0xb6f96000)
        libXrandr.so.2 => /usr/lib/libXrandr.so.2 (0xb6f90000)
        libXcursor.so.1 => /usr/lib/libXcursor.so.1 (0xb6f87000)
        libXfixes.so.3 => /usr/lib/libXfixes.so.3 (0xb6f82000)
        libz.so.1 => /usr/lib/libz.so.1 (0xb6f6e000)
        libfontconfig.so.1 => /usr/lib/libfontconfig.so.1 (0xb6f42000)
        libpng12.so.0 => /usr/lib/libpng12.so.0 (0xb6f1f000)
        libXrender.so.1 => /usr/lib/libXrender.so.1 (0xb6f17000)
        libX11.so.6 => /usr/lib/libX11.so.6 (0xb6e26000)
        libm.so.6 => /lib/tls/i686/cmov/libm.so.6 (0xb6dff000)
        libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0xb6dfb000)
        libhal.so.1 => /usr/lib/libhal.so.1 (0xb6df0000)
        libnotify.so.1 => /usr/lib/libnotify.so.1 (0xb6de9000)
        libetable.so.0 => /usr/lib/evolution/2.10/libetable.so.0 (0xb6d77000)
        libetext.so.0 => /usr/lib/evolution/2.10/libetext.so.0 (0xb6d5c000)
        libevolution-widgets-a11y.so.0 => /usr/lib/evolution/2.10/libevolution-widgets-a11y.so.0 (0xb6d52000)
        libevolution-a11y.so.0 => /usr/lib/evolution/2.10/libevolution-a11y.so.0 (0xb6d3e000)
        libjpeg.so.62 => /usr/lib/libjpeg.so.62 (0xb6d1f000)
        libgnutls.so.13 => /usr/lib/libgnutls.so.13 (0xb6cae000)
        libavahi-glib.so.1 => /usr/lib/libavahi-glib.so.1 (0xb6cab000)
        libavahi-common.so.3 => /usr/lib/libavahi-common.so.3 (0xb6ca0000)
        libavahi-client.so.3 => /usr/lib/libavahi-client.so.3 (0xb6c91000)
        libresolv.so.2 => /lib/tls/i686/cmov/libresolv.so.2 (0xb6c7e000)
        libselinux.so.1 => /lib/libselinux.so.1 (0xb6c67000)
        libutil.so.1 => /lib/tls/i686/cmov/libutil.so.1 (0xb6c63000)
        libesd.so.0 => /usr/lib/libesd.so.0 (0xb6c59000)
        libaudiofile.so.0 => /usr/lib/libaudiofile.so.0 (0xb6c37000)
        libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0xb6bcc000)
        libORBitCosNaming-2.so.0 => /usr/lib/libORBitCosNaming-2.so.0 (0xb6bc6000)
        libgailutil.so.18 => /usr/lib/libgailutil.so.18 (0xb6bbf000)
        libnsl.so.1 => /lib/tls/i686/cmov/libnsl.so.1 (0xb6ba8000)
        libnss3.so => /usr/lib/libnss3.so (0xb6b35000)
        libsmime3.so => /usr/lib/libsmime3.so (0xb6b11000)
        libssl3.so => /usr/lib/libssl3.so (0xb6ae7000)
        libsoftokn3.so => /usr/lib/libsoftokn3.so (0xb6a98000)
        libkrb5.so.3 => /usr/lib/libkrb5.so.3 (0xb6a1b000)
        libk5crypto.so.3 => /usr/lib/libk5crypto.so.3 (0xb69f6000)
        libcom_err.so.2 => /lib/libcom_err.so.2 (0xb69f2000)
        libgssapi_krb5.so.2 => /usr/lib/libgssapi_krb5.so.2 (0xb69d6000)
        libdb-4.4.so => /usr/lib/libdb-4.4.so (0xb68d8000)
        /lib/ld-linux.so.2 (0xb7f2c000)
        libXau.so.6 => /usr/lib/libXau.so.6 (0xb68d4000)
        libexpat.so.1 => /usr/lib/libexpat.so.1 (0xb68b4000)
        libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0xb68af000)
        libtasn1.so.3 => /usr/lib/libtasn1.so.3 (0xb6899000)
        libgcrypt.so.11 => /usr/lib/libgcrypt.so.11 (0xb6848000)
        libgpg-error.so.0 => /usr/lib/libgpg-error.so.0 (0xb6844000)
        libsepol.so.1 => /lib/libsepol.so.1 (0xb6803000)
        libasound.so.2 => /usr/lib/libasound.so.2 (0xb673e000)
        libkrb5support.so.0 => /usr/lib/libkrb5support.so.0 (0xb6739000)


 
bon c'est un peu violent OK [:pingouino]  
 


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
Reply

Marsh Posté le 09-05-2007 à 17:14:32    

Heu, Black_Lord, je dois prendre ça comme une explication?


---------------
Mac Pro powered (sorry)
Reply

Marsh Posté le 09-05-2007 à 17:54:30    

Sisi c'en est une :o
 
En compilation statique, l'exécutable généré contient toutes les librairies externes auxquelles il peut faire appel, ce qui gonfle sa taille par rapport au même exécutable compilé dynamiquement. Ce dernier sera plus petit mais se viandera si il y a un souci avec lesdites librairies (absentes, version trop ancienne, ...)

Reply

Marsh Posté le 09-05-2007 à 18:06:53    

Oui, je le sais ça... c'est juste que COMMENT FAIT ON? J'ai les sources, j'ai l'environnement, j'ai plein de choses mais je ne sais pas comment tranformer mes sources en binaire statique... HELP  :cry:


---------------
Mac Pro powered (sorry)
Reply

Marsh Posté le 09-05-2007 à 19:48:09    

Je ne vois pas en quoi le fait d'avoir des binaires linkés dynamiquement est un problème pour un rescue CD. Si tu boot sur ton CD, le CD contient les binaires et leurs libraries, et les binaires du CD utilisent les lib du CD... Ca change quoi d'avoir des binaires linkés statiquement ?

Reply

Marsh Posté le 09-05-2007 à 19:51:02    

Sinon pour ta question, je pense qu'il suffit de donner au script configure le rep sous lequel tu veux faire l'install. Le make install ne touchera rien en dehors de ce rep. Par exemple si tu fais ./configure --prefix=/rescue_cd, le make install installera le soft sous /rescue_cd/bin, /rescue_cd/lib, /rescue_cd/etc...

Reply

Marsh Posté le 09-05-2007 à 19:56:35    

nicephore17 a écrit :

Heu, Black_Lord, je dois prendre ça comme une explication?


c'est pour dr freuderick l'explication [:dawa] perso je compile rarement (jamais même) en statique


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
Reply

Marsh Posté le 09-05-2007 à 23:56:54    

matafan a écrit :

Je ne vois pas en quoi le fait d'avoir des binaires linkés dynamiquement est un problème pour un rescue CD. Si tu boot sur ton CD, le CD contient les binaires et leurs libraries, et les binaires du CD utilisent les lib du CD... Ca change quoi d'avoir des binaires linkés statiquement ?


 
Disons que j'ai procédé intelligement, j'ai demandé son avis au mainteneur du CD et il me conseille de le faire en binaire statique. Reste à savoir comment.
 
Je sais bien que vous êtes tous de Alpha Geek comme moi mais là la question n'est pas de la raison mais de la méthode  :( (moi aussi le statique c'est pas mon truc et c'est bien pour ça que je ne sais pas faire).


Message édité par nicephore17 le 09-05-2007 à 23:58:03

---------------
Mac Pro powered (sorry)
Reply

Marsh Posté le 09-05-2007 à 23:56:54   

Reply

Marsh Posté le 10-05-2007 à 09:12:05    

T'as essayé de faire comme matafan t'a dit ?
 

matafan a écrit :

Sinon pour ta question, je pense qu'il suffit de donner au script configure le rep sous lequel tu veux faire l'install. Le make install ne touchera rien en dehors de ce rep. Par exemple si tu fais ./configure --prefix=/rescue_cd, le make install installera le soft sous /rescue_cd/bin, /rescue_cd/lib, /rescue_cd/etc...


 


---------------
TriScale innov
Reply

Marsh Posté le 10-05-2007 à 09:17:10    

Ouaip c'est pas mal le truc de matafan, merci.
 
Par contre j'ai un autre souci, il le compile en i486 alors que je le préférerais en i386, vous savez comment faire?
 
(PS: j'avais pas vu le post de matafan)


---------------
Mac Pro powered (sorry)
Reply

Marsh Posté le 10-05-2007 à 14:12:39    

nicephore17 a écrit :

Ouaip c'est pas mal le truc de matafan, merci.
 
Par contre j'ai un autre souci, il le compile en i486 alors que je le préférerais en i386, vous savez comment faire?
 
(PS: j'avais pas vu le post de matafan)


 
 
http://www.gnu.org/software/autoco [...] oconf.html     15.6 je pense :o


---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed