¿Cómo enlazar usando GCC sin -l ni la ruta de codificación para una biblioteca que no sigue la convención de nombres libNAME.so?

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

Pregunta

Tengo una biblioteca compartida con la que deseo vincular un 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 -l habitual. (Resulta que también es una extensión de Python, por lo que no tiene el prefijo 'lib').

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

Por ejemplo:

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

¿Hay alguna forma de enlazar a esta biblioteca sin causar que la ruta sea codificada en el archivo ejecutable?

¿Fue útil?

Solución

Hay el ": " Prefijo que le permite dar diferentes nombres a sus bibliotecas. Si usas

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

debe buscar en su ruta el _mylib.so.

Otros consejos

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

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

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

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

Luego puede usar -l_mylib

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top