¿Cómo puedo cambiar el nombre de archivo de una biblioteca compartida después de crear un programa que depende de ella?

Tengo un programa que depende de una biblioteca compartida que espera encontrar en el interior de una estructura de directorios. Me gustaría trasladar esa biblioteca compartida a un lugar mejor. En OS X, esto se puede hacer con install_name_tool. No puedo encontrar un equivalente para Linux.

Para referencia,readelf -d myprogram escupe la siguiente salida parafraseada:

Dynamic section at offset 0x1e9ed4 contains 30 entries:
  Tag        Type                         Name/Value
 0x00000001 (NEEDED)                     Shared library: [this/is/terrible/library.so]
 0x00000001 (NEEDED)                     Shared library: [libGL.so.1]
 0x00000001 (NEEDED)                     Shared library: [libGLU.so.1]
 0x00000001 (NEEDED)                     Shared library: [libstdc++.so.6]
(continues in an uninteresting fashion)

(y por solicitud,ldd myprogram:)

    linux-gate.so.1 =>  (0x0056a000)
    this/is/terrible/library.so => not found
    libGL.so.1 => /usr/lib/mesa/libGL.so.1 (0x0017d000)
    libGLU.so.1 => /usr/lib/libGLU.so.1 (0x00a9c000)
    libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00710000)
   (etc, etc)

y me gustaría errar "this / is / terrible / library.so" para ser "shared / library.so". Tenga en cuenta que, si el programa se deja en su ubicación "construida", donde la ruta relativa this / is / terrible / library.so realmente existe, entonces ldd puede encontrarlo, como era de esperar.

Sé sobre RPATH y no es lo que estoy buscando, no necesito cambiar las rutas de búsqueda a nivel mundial.

Respuestas a la pregunta(4)

Su respuesta a la pregunta