Pregunta

Estoy compilando algo de código que usa libcurl en un sistema Debian Linux. Mi máquina dev está ejecutando Debian 5, pero quiero que el binario se pueda utilizar en sistemas Debian 4 más antiguos.

Encuentro que si especifico -lcurl se vinculará a libcurl.so.4 pero los sistemas Debian 4 solo tienen libcurl.so.3

¿Hay alguna manera de decirle a GCC que se vincule a libcurl.so.3 (que existe en Debian 4 y 5) o solo a libcurl.so para que use la versión que esté disponible?

¿Fue útil?

Solución

Puede pasar el archivo .so real en lugar de -l en la línea de comandos del vinculador, y debería hacer lo que quiera.

Otros consejos

En lugar de usar " -lcurl " utilice " -l: libcurl.so.3 " Y, por supuesto, también use " -L _ ruta_de_instalación_ "

¿Qué tal si creas un enlace simbólico local a tu proyecto que se enlaza a .3, entonces puedes usar -L en tiempo de compilación? Sin embargo, no estoy seguro de si obtendrías un conflicto de nombres, pero siempre puedes llamarlo libcurl-old.so por si acaso.

Creo que la forma correcta de hacerlo es utilizar las marcas --filter y --auxiliary del vinculador.

No están muy documentados, pero deberían permitirle cargar símbolos de diferentes versiones de la misma biblioteca según la máquina en la que esté instalado.

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