El problema de compilar la exportación de símbolos de biblioteca dinámica desde una biblioteca estática

con crvs liba.a liba1.a liba2.a

gcc -shared -o liban.so an.c liba.a

Generalmente, solo los símbolos utilizados en la biblioteca dinámica se exportarán de la biblioteca estática y se exportará todo el archivo de objeto que contiene el símbolo.

Cómo resolver el problema de que los símbolos de las bibliotecas estáticas no se pueden exportar:

             1) Llamar a la biblioteca dinámica

              2) Extraiga todos los archivos de objetos de la biblioteca estática y luego compile la biblioteca dinámica

              3) Opción de enlace, controlar todas las exportaciones -Wl, --whole-archive -Wl, --no-whole-archive Se exportan todos los símbolos de la biblioteca estática entre las opciones.

 

Ejemplos:

Los archivos de origen a1.c, a2.c, an.c y an_call.c se componen de la siguiente manera: archivos de destino a1.o, a2.o; archivos de biblioteca estática liba.a; archivos de biblioteca dinámica liban.so, liban_call. entonces, liban_opt .so; 

a1.c:

a2.c:

Congreso Nacional Africano:

an_call.c:

a1.o 、 a2.o:

liba.a:

liban.so:

liban_call.so:

liban_opt.so:

Supongo que te gusta

Origin blog.csdn.net/beebeeyoung/article/details/112256563
Recomendado
Clasificación