with make library how compiler compilador c++ gcc linker shared-libraries dynamic-linking

c++ - make - ¿Cómo vincular el uso de GCC sin-l ni la ruta de hardcoding para una biblioteca que no sigue la convención de nomenclatura de libNAME.so?



how to make a dynamic library in c (3)

Tengo una biblioteca compartida que deseo vincular un archivo ejecutable contra el uso de GCC. La biblioteca compartida tiene un nombre no estándar que no tiene el formato libNAME.so, por lo que no puedo usar la opción usual -l. (Pasa a ser también una extensión de Python, y por lo tanto no tiene el prefijo ''lib'').

Puedo pasar la ruta al archivo de la biblioteca directamente a la línea de comando del enlace, pero esto hace que la ruta de acceso de la biblioteca sea codificada en el archivo ejecutable.

Por ejemplo:

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

¿Hay alguna forma de vincularse a esta biblioteca sin hacer que la ruta sea codificada en el ejecutable?


Existe el prefijo ":" que le permite asignar diferentes nombres a sus bibliotecas. Si utiliza

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

debe buscar su ruta para el _mylib.so.


Si está en Unix o Linux, creo que puede crear un enlace simbólico a la biblioteca en el directorio que desea la biblioteca.

Por ejemplo:
ln -s build/bin/_mylib.so build/bin/lib_mylib.so

Entonces podrías usar -l_mylib

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


Si puede copiar la biblioteca compartida en el directorio de trabajo cuando se invoca g ++, esto debería funcionar:

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