Comment lier en utilisant GCC sans le chemin -l ni le chemin de codage en dur pour une bibliothèque qui ne suit pas la convention de nommage libNAME.so?

StackOverflow https://stackoverflow.com/questions/207069

Question

Je souhaite lier un exécutable à une bibliothèque partagée à l'aide de GCC. La bibliothèque partagée a un nom non standard, pas de la forme libNAME.so. Je ne peux donc pas utiliser l'option -l habituelle. (Il se trouve qu’il s’agit également d’une extension Python et n’a donc pas de préfixe 'lib'.)

Je peux passer le chemin du fichier de bibliothèque directement à la ligne de commande du lien, mais le chemin de la bibliothèque est codé en dur dans l'exécutable.

Par exemple:

g++ -o build/bin/myapp build/bin/_mylib.so

Existe-t-il un moyen de créer un lien vers cette bibliothèque sans que le chemin soit codé en dur dans l'exécutable?

Était-ce utile?

La solution

Il y a le ": " préfixe qui vous permet de donner des noms différents à vos bibliothèques. Si vous utilisez

g++ -o build/bin/myapp -l:_mylib.so other_source_files

devrait chercher votre chemin pour le _mylib.so.

Autres conseils

Si vous pouvez copier la bibliothèque partagée dans le répertoire de travail lorsque g ++ est appelé, cela devrait fonctionner:

g++ -o build/bin/myapp _mylib.so other_source_files

Si vous êtes sous Unix ou Linux, je pense que vous pouvez créer un lien symbolique vers la bibliothèque dans le répertoire dans lequel vous voulez la bibliothèque.

Par exemple:
ln -s build / bin / _mylib.so build / bin / lib_mylib.so

Vous pouvez alors utiliser -l_mylib

http://en.wikipedia.org/wiki/Symbolic_link

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top