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>
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!?!
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>