Tengo una biblioteca compartida 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 usual -l. (También pasa a ser una extensión de Python, y no tiene el prefijo 'lib')¿Cómo vincular usando GCC sin -l ni la ruta de hardcoding para una biblioteca que no sigue la convención de nomenclatura de libNAME.so?
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 la biblioteca sea codificado en el ejecutable.
Por ejemplo:
g++ -o build/bin/myapp build/bin/_mylib.so
¿Hay una manera de ligar esta biblioteca sin causar el camino a hardcoded en el ejecutable?
Esto, señor, es exactamente lo que estaba buscando. ¡Gracias! – kbluck
me ayudó mucho, gracias. –
Estoy descubriendo que esto da como resultado 'build/bin/_mylib.so' incrustado en la biblioteca que se vinculó usando' -l: '- en lugar de incrustar' _mylib.so' como lo hace normalmente para los sonames estándar. Como resultado, cuando intenta cargar '_mylib.so', estaría buscando esa ruta completa (' ldd' se mostraría) y no encontrará '_mylib.so' por sí mismo. –