Para a opção de Nathan, eu adicionaria patchelf , o que permite alterar o RPATH de um executável. Eu pessoalmente prefiro aplicar RPATH na definição de LD_LIBRARY_PATH e afins, pois o Ubuntu tem problemas para defini-los em profile e também como se não definisse isso em profile , isso economiza a necessidade de um script wrapper.
Para definir um executável RPATH que é relativo ao diretório do aplicativo (se você desejar, isso não é obrigatório), você precisa usar $ORIGIN tomando cuidado para escapar do $ que deve aparecer literalmente (então use $ORIGIN se você invocar patchelf de um shell). Ex. se o aplicativo pertencer a um diretório bin e as bibliotecas pertencerem a um diretório peer lib , você usará $ORIGIN/../lib para o RPATH .
Você também pode usar um RPATH absoluto, se preferir.
Veja Patchelf (nixos.org) .