paulo1205
(usa Ubuntu)
Enviado em 03/05/2013 - 09:49h
A opção "-L" serve para informar a localização de bibliotecas em tempo de compilação, mas não em tempo de execução. Os nomes da bibliotecas, especificados com "-l" (L minúsculo), são embutidas no executável, mas o caminho do diretório onde a biblioteca está contida, especificado com "-L" (maiúsculo), não é.
Você pode aotar uma das seguintes opções.
1) Compilar do jeito como já vem compilando e, no momento da execução, especificar os diretórios onde bibliotecas podem ser buscadas por meio da variável de ambiente
LD_LIBRARY_PATH.
2) Definir um local fixo (caminho absoluto, claro!, nunca confiando em diretório corrente e caminhos relativos) onde as bibliotecas serão instaladas, e usar outra opção do linker, "-rpath", que forçar a embutir no executável diretórios onde bibliotecas podem ser buscadas.
3) Usar a opção "-rpath", mas colocando no caminho de busca o nome especial "$ORIGIN" (com cuidado de escapar o "$", para não ser interpolado nem pelo
make nem pelo shell). Esse valor faz com que o loader em tempo de execução procure pelas bibliotecas no mesmo diretório em que reside a aplicação. Ele pode também ser usado para compor um caminho, de modo que usar "-rpath $ORIGIN/../lib", tendo a aplicação sido executada a partir do caminho "/usr/local/my_app/bin/my_app", implicará que as bibliotecas podem ser buscadas em "/usr/local/my_app/lib".