web-dev-qa-db-fra.com

Est-il possible d'installer des bibliothèques statiques d'apt en 18.04 x86_64?

J'essaie de construire un projet qui dépend de bibliothèques statiques distribuées binaires.

L'éditeur de liens se plaint de ne pas trouver les fonctions ini_config, entre autres:

config_params.c:(.text+0x16f): undefined reference to  `ini_get_config_valueobj'

Il trouve les bibliothèques dynamiques, mais pas la version statique:

attempt to open /usr/lib/gcc/x86_64-linux-gnu/7/libini_config.a failed
attempt to open /usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/libini_config.so succeeded

Ces fichiers sont présents sur l’extension Debian. Existe-t-il un moyen de les envoyer également sur Ubuntu?

1
stamm

Tous les paquets semblent installer leurs bibliothèques statiques. Ils peuvent être trouvés dans /usr/lib/x86_64-linux-gnu/.

Apparemment, l'éditeur de liens choisit d'abord les bibliothèques dynamiques lorsqu'il utilise -lsomelib. Pour remplacer cela, vous pouvez utiliser le -l:libsomelib.a, il ne fera alors que correspondre au nom de fichier exact somelib.a. Utilisez -L/usr/lib/x86_64-linux-gnu de la même manière que pour "relier" des bibliothèques dynamiques.

Pour déboguer la phase de recherche de la bibliothèque, vous pouvez ajouter -Wl,--versbose à vos LDFLAGS. Gcc affichera ensuite tous les chemins essayés pour vos options -lXXX.

N'oubliez pas que les archives ne sont vérifiées qu'une fois, comme indiqué dans cette réponse , si certains symboles ne sont toujours pas trouvés, vous devrez peut-être réorganiser les paramètres.

1
stamm