Como vincular usando o GCC sem caminho -l nem codificar para uma biblioteca que não segue a convenção de nomenclatura libNAME.so?

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

Pergunta

Eu tenho uma biblioteca compartilhada que deseja vincular um executável contra o uso de GCC. A biblioteca compartilhada tem um nome fora do padrão não da forma libNAME.so, então eu não pode usar a opção -l habitual. (Ele passa a ser também uma extensão de Python, e por isso não tem 'lib' prefixo.)

Eu sou capaz de passar no caminho para o arquivo de biblioteca diretamente para a linha de comando link, mas isso faz com que o caminho da biblioteca para ser codificado no executável.

Por exemplo:

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

Existe uma maneira de vincular a esta biblioteca sem causar o caminho a ser codificado no executável?

Foi útil?

Solução

Há o ":" prefixo que lhe permite dar nomes diferentes para as suas bibliotecas. Se você usar

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

deve procurar o seu caminho para o _mylib.so.

Outras dicas

Se você pode copiar a biblioteca compartilhada para o diretório de trabalho quando g ++ é invocado então isso deve funcionar:

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

Se você estiver em Unix ou Linux Eu acho que você pode criar um link simbólico para a biblioteca no diretório que você quer a biblioteca.

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

Você poderia, então, usar -l_mylib

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

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