Extender una biblioteca compartida enlazada dinámica?

Soy nuevo en C, lo siento por mi falta de conocimiento (mi C-book aquí es realmente masivo :)

Me gustaría extender una biblioteca compartida (libcustomer.so) con código cerrado, pero con una API conocida.

¿Es algo como esto posible?

renombrar libcustomer.so a liboldcustomer.socree una biblioteca compartida extendida libcustomer.so (para que otros usen implícitamente la extendida)enlace liboldcustomer.so a mi libcustomer.so extendido a través de -loldcustomerreenvíe cualquier método no implementado directamente al antiguo "liboldcustomer.so"

No creo que funcione de esa manera (el nombre se compila en .so, ¿no es así?). Pero ¿cuál es la alternativa?

Para el # 4: ¿hay una forma general de hacer esto, o tengo que escribir un método llamado como el anterior y reenviar la llamada (cómo?)

Debido a que el libcustomer.so original (= liboldcustomer.so) puede cambiar de vez en cuando, todo eso debería funcionar dinámicamente.

Por razones de seguridad, nuestro sistema no tiene LD_PRELOAD (de lo contrario, tomaría eso :().

Piense en las verificaciones de validación extendidas y en algunas mejores manipulaciones de NPE.

¡Gracias de antemano por tu ayuda!

EDITAR:

Solo estoy implementando mi extensión como se muestra en la respuesta, pero tengo un caso no manejado en este momento:

¿Cómo puedo "proxy" las estructuras de la biblioteca extendida?

Por ejemplo tengo esto:

cliente.h:

struct customer;

cliente.c:

struct customer {
    int children:1;
    int age;
    struct house *house_config;
};

Ahora, en mi extensión-cliente.c Estoy escribiendo todos los métodos públicos del formulario cliente.c, pero ¿cómo "paso" las estructuras?

Muchas gracias por tu tiempo y ayuda!

Respuestas a la pregunta(1)

Su respuesta a la pregunta