Força o vinculador a localizar a biblioteca stdc ++ em um diretório não padrão

0

Li muito de orientação que diz que LD_LIBRARY_PATH é pesquisada antes de qualquer outra coisa, mas uma das minhas bibliotecas .so está vinculando com libtdc++.so.6 em /usr/lib64 .

ldd mylib.so:
...
libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007f82abd18000)
...

Eu quero que mylib.so vincule com libstdc++.so.6 em outro local, como /apps/gcc_4.8.0/lib/libstdc++.so.6

Então, adiciono /apps/gcc_4.8.0/lib a LD_LIBRARY_PATH , que não tem /usr/lib64 , mas ainda não o encontra lá.

Se eu adicionar:

setenv LD_PRELOAD /apps/gcc_4.8.0/lib/libstdc++.so.6

para o meu ambiente, não há mais erros de vinculação. Mas isso não resolve o problema. Usuários a jusante não vão querer depender dessa biblioteca estar no lugar certo. POR QUE ISN "T LD_LIBRARY_PATH ESTÁ PROCURANDO PRIMEIRO!?!

    
por KyleEnglish 10.06.2016 / 17:25

1 resposta

0

Ele deve funcionar com a opção de compilador Wl,--rpath=/apps/gcc_4.8.0/lib/libstdc++.so.6 .

Atualização: Se você precisar também do novo carregador, use este parâmetro do compilador: -Wl,--dynamic-linker=<path-to-the-new-dynamic-linker>

    
por 10.06.2016 / 17:45