Você tem basicamente três opções:
-
Use um wrapper em torno de suas bibliotecas, que irá definir
LD_LIBRARY_PATH
apropriadamente e depois executar a biblioteca desejada - algo como:#!/bin/sh export LD_LIBRARY_PATH="path/goes/here" exec "$@"
-
link com
-rpath
(-Wl,rpath
), que adiciona o caminho de pesquisa do vinculador dinâmico ao binário (consulte também SO resposta - também menciona o wrapper). -
Você não vai gostar de ler este aqui: atualize o seu cluster (observe a ênfase em "seu"). Isso terá que ser feito um dia ou outro, então porque não hoje. "Não é uma opção" é um pouco strong na maioria dos casos. Outros usuários provavelmente têm os mesmos problemas.
Quanto aos binários antigos com problemas - os binários têm seu vinculador dinâmico preferido embutido neles. E o antigo vinculador dinâmico não entende a nova ABI. Tente chamar os binários assim: path/to/your/ld-linux-<arch>.so binary
.
Construindo o GCC: você sempre pode tentar exportar CFLAGS
no ambiente de criação do GCC - mas tenho certeza que eles serão propagados. Buildscripts de várias distribuições podem lhe dar algumas pistas (por exemplo: para o openSUSE, olhe em volta da linha 1880 no . Arquivo de especificação ).