una que librerías librerias libreria lenguaje estatica dinámicas dinamicas dinamica desarrolladas crear creacion crea con compilar como c gcc static linker

que - ¿Puedo mezclar bibliotecas estáticas y de objetos compartidos al vincular?



librerías dinámicas dll desarrolladas con java (1)

Al mirar este hilo , puede ver que se puede hacer. Los chicos de GNU sugieren

gcc foo.c -Wl,-Bstatic -lbar -lbaz -lqux -Wl,-Bdynamic -lcorge -o foo.exe

Tengo un proyecto en C que produce diez ejecutables, a todos los cuales me gustaría vincular de forma estática. El problema al que me enfrento es que uno de estos ejecutables utiliza una biblioteca de terceros, de la cual solo está disponible la versión de objeto compartido.

Si paso el indicador -static a gcc, ld dará error diciendo que no puede encontrar la biblioteca en cuestión (supongo que está buscando la versión .a) y el ejecutable no se compilará. Idealmente, me gustaría poder decir ''ld'' para vincular estáticamente tanto como pueda y conmutar por error a la biblioteca de objetos compartidos si no se puede encontrar una biblioteca estática.

En el interio probé algo como gcc -static -lib1 -lib2 -shared -lib3rdparty foo.c -o foo.exe con la esperanza de que ''ld'' se vincule estáticamente en lib1 y lib2, pero solo tenga una dependencia en tiempo de ejecución en lib3rdparty. Desafortunadamente, esto no funcionó como pretendía; en su lugar, la -shared compartida compartió la bandera -shared y todo se compiló como objetos compartidos.

Está vinculando estáticamente un acuerdo de todo o nada, o hay alguna forma en que puedo mezclar y combinar?