Como você conectar-se a uma versão específica de uma biblioteca compartilhada no GCC

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

  •  06-07-2019
  •  | 
  •  

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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top