Fusionar múltiples bibliotecas compartidas .so

Digamos que tengo a.so y b.so. ¿Puedo producir c.so como una única biblioteca compartida con todas las funciones exportadas por ay b, por supuesto, resolviendo todas las intradependencias (es decir, todas las funciones de b.so llamado por a.so y viceversa)?

Lo intenté

  gcc -shared -Wl, soname, c.so -o c.so a.so b.so 

pero no funciona.

Lo mismo ocurre si archivo ao y bo en aa y ba (que no debe modificar ao y bo), y hago

  gcc -shared -Wl, soname, c.so -o c.so aa ba 

Gracias

La fusión de varias bibliotecas compartidas en una es prácticamente imposible en todos los UNIXen, excepto en AIX: el vinculador considera el .so un producto “final”.

Pero fusionar archivos en .so no debería ser un problema:

gcc -shared -o c.so -Wl,--whole-archive aa ba -Wl,--no-whole-archive 

En la práctica, no es posible.

Desde el punto de vista del enlazador, una biblioteca SO es un producto final que no contiene la información de reubicación necesaria para vincular.

Si tiene acceso a los archivos de origen o de objeto para ambas bibliotecas, es sencillo comstackr / vincular un SO combinado de ellos.