2010-10-06 6 views
2

J'ai une application qui lie à un certain nombre de librairies, la plupart d'entre elles sont disponibles en tant que librairies statiques et dynamiques sur ma machine. Voici la sortie de la commande ldd.Liaison statique des librairies dans linux

linux-gate.so.1 => (0xffffe000) 
libssl.so.0.9.8 => /usr/lib/libssl.so.0.9.8 (0xb782c000) 
libc.so.6 => /lib/libc.so.6 (0xb76cc000) 
libcrypto.so.0.9.8 => /usr/lib/libcrypto.so.0.9.8 (0xb755a000) 
/lib/ld-linux.so.2 (0xb788d000) 
libdl.so.2 => /lib/libdl.so.2 (0xb7555000) 
libz.so.1 => /lib/libz.so.1 (0xb7540000) 

Je veux lier statiquement bibliothèque libssl mais selon la documentation de gcc, par défaut, il relie chaque bibliothèque dynamiquement. Quelle est la méthode pour indiquer à gcc de lier statiquement une bibliothèque spécifique, même sa version dynamique est également disponible sur le système?

+0

http://stackoverflow.com/questions/809794/use-both-static-and-dynamically-linked-libraries-in-gcc répond à cette question – Habbie

Répondre

3

gcc a un drapeau -statique.

+0

mais force toutes les bibliothèques à se lier statiquement. Je veux relier certaines bibliothèques statiquement et dynamiquement. –

+3

-static mot-clé va appliquer les bibliothèques de liaison qui viennent après elle statiquement liée. et pareil pour le drapeau dynamique. De cette façon, vous pouvez spécifier les liens dynamiques et les liens statiques. – rgngl

+0

@bad zeppelin: Pourriez-vous nous donner un exemple s'il vous plaît? – jyz

Questions connexes