Como você conectar-se a uma versão específica de uma biblioteca compartilhada no GCC
Pergunta
Estou compilando algum código que usa libcurl em um sistema Debian Linux. Minha máquina dev está rodando Debian 5, mas eu quero o binário para ser utilizável em Debian mais antigas 4 sistemas também.
Eu acho que se eu especificar -lcurl ele vai ligar para libcurl.so.4 mas Debian 4 sistemas só tem libcurl.so.3
Existe alguma maneira eu posso dizer GCC para ligação a qualquer libcurl.so.3 (que existe em ambos Debian 4 e 5) ou apenas libcurl.so por isso vai usar qualquer versão?
Solução
Você pode passar o arquivo .so real em vez de l na linha de comando vinculador, e que deveria fazer o que quiser.
Outras dicas
Em vez de usar "-lcurl" utilização "-l: libcurl.so.3" E é claro também usar "_installed_path -L _"
Como sobre a criação de um local de ligação simbólica para seu projeto que links para 0,3, em seguida, você pode apenas usar -L em tempo de compilação. Eu não tenho certeza se você deseja obter um conflito de nome, porém, mas você sempre pode chamá-lo libcurl-old.so apenas no caso.
Eu acho que a maneira correta de fazer isso é usar as bandeiras --filter
e --auxiliary
do vinculador.
Eles não são muito documentada, mas deve permitir que você carregar símbolos de diferentes versões da mesma biblioteca de acordo com a máquina que você está instalado.