¿Cómo establecer la ruta de ejecución (-rpath) de un ejecutable con gcc en Mac OSX?

Quiero establecer en Mac OSX la ruta de tiempo de ejecución de un ejecutable (para el vinculador) en el momento de la compilación, de modo que el vinculador dinámico encuentre las bibliotecas compartidas en ubicaciones no estándar al inicio del programa.

Bajo Linux esto es posible con -Xlinker -rpath -Xlinker / path / to (o usando -Wl, -rpath, / path / to) y bajo Solaris puede agregar -R / path / a la línea de comandos del compilador.

Encontré a some information que Mac OS X gcc tiene soporte de ruta desde 10.5, es decir, desde ~ 2008.

Traté de hacerlo funcionar con un ejemplo mínimo, sin éxito:

$ cat blah.c 
int blah(int b)
{
  return b+1;
}

Y:

$ cat main.c 

#include <stdio.h>

int blah(int);

int main ()
{
  printf("%d\n", blah(22));
  return 0;
}

Compilado así:

$ gcc -c  blah.c
$ gcc -dynamiclib blah.o -o libblah.dylib
$ gcc main.c -lblah -L`pwd`  -Xlinker -rpath -Xlinker `pwd`/t

Ahora la prueba:

$ mkdir t
$ mv libblah.dylib t
$ ./a.out
dyld: Library not loaded: libblah.dylib
  Referenced from: /Users/max/test/./a.out
  Reason: image not found
Trace/BPT trap

Por lo tanto, la pregunta: ¿Cómo establezco la ruta de tiempo de ejecución para el enlazador en Mac OSX?

Por cierto, la configuración de DYLD_LIBRARY_PATH funciona, pero no quiero usar este truco.

Edición: Respecto a otool -L:

$ otool -L a.out 
a.out:
        libblah.dylib (compatibility version 0.0.0, current version 0.0.0)
        /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.1)

Parece que otool -L solo imprime los nombres de las bibliotecas (y las ubicaciones probables en el momento del enlace) con las que se ejecutó el ejecutable y sin información de ruta de tiempo de ejecución.

Mejor respuesta
Encontrado por experimentación, e inspeccionando las líneas de comando generadas por Xcode para un reference rpath demo project by Dave Driblin:

otool -L muestra el nombre de instalación de las bibliotecas vinculadas. Para que funcione @rpath, necesita cambiar el nombre de instalación de la biblioteca:

$ gcc -dynamiclib blah.o -install_name @rpath/t/libblah.dylib -o libblah.dylib
$ mkdir t ; mv libblah.dylib t/
$ gcc main.c -lblah -L`pwd`/t -Xlinker -rpath -Xlinker `pwd`

Por favor indique la dirección original:¿Cómo establecer la ruta de ejecución (-rpath) de un ejecutable con gcc en Mac OSX? - Código de registro