Supongamos que tengo un archivo main.cpp
que usa la función sin()
que se define en libmath
. Supongamos también que tenemos tanto libmath.a como libmath.so disponibles en el mismo directorio. Ahora, si ejecuto el comando g++ -o main main.cpp -lmath
, el comportamiento predeterminado de Linux es vincular a la biblioteca compartida libmath.so
. Quiero saber si hay alguna manera de forzar al programa a vincularse con la biblioteca estática libmath.a
sin eliminar o mover la biblioteca compartida.¿Cómo puedo forzar el enlace con una biblioteca estática cuando hay una biblioteca compartida del mismo nombre?
Respuesta
Deberá pasar el estado-estático al vinculador, pero solo para las bibliotecas particulares que desee. por ejemplo:
g++ -o main main.cpp -Wl,-Bstatic -lmath -Wl,-Bdynamic
Creo que te refieres a "-Bstatic" en lugar de "-static". Lástima que las ediciones de un solo carácter no están permitidas ... –
Seguramente no debería importar para gcc/binutils, -static y -Bstatic son sinónimos en el enlazador GNU. – nos
Utilice esta función:
g++ -o main main.cpp /path_to/libmath.a
Si el enlazador apoya -l:<filename>
puede usar:
g++ -o main main.cpp -l:libmath.a
- 1. ¿Convertir una biblioteca estática a una biblioteca compartida?
- 2. Cómo forzar a los símbolos de una biblioteca estática a ser incluidos en una compilación de biblioteca compartida?
- 3. Cómo exportar símbolos de una biblioteca compartida
- 4. Compilar una biblioteca compartida estáticamente
- 5. SCons para hacer una biblioteca compartida (.so) con una biblioteca estática (.a)
- 6. Vinculación de una biblioteca compartida con una biblioteca estática: ¿la biblioteca estática debe compilarse de forma diferente que si una aplicación estuviera vinculándola?
- 7. Vinculación estática selectiva de funciones de biblioteca en biblioteca compartida
- 8. g ++ linker: forzar el enlace estático si existe una biblioteca estática?
- 9. ¿Puede un enlace de biblioteca estática de C++ a la biblioteca compartida?
- 10. Cómo inicializar una biblioteca compartida en Linux
- 11. ¿Es posible construir una biblioteca compartida con la biblioteca usada de enlace estático?
- 12. Convierta una biblioteca estática a una biblioteca compartida (cree libsome.so de libsome.a): ¿dónde están mis símbolos?
- 13. Cómo forzar la inclusión de un archivo de objeto en una biblioteca estática cuando se establece un enlace en ejecutable?
- 14. ¿Evita que se eliminen las funciones de una biblioteca estática cuando se vinculan a una biblioteca compartida?
- 15. Prueba de unidad con una biblioteca estática
- 16. ¿Cómo construir una biblioteca estática Objective-C?
- 17. Crear biblioteca estática y compartida con GNU libtool?
- 18. Contenido de una biblioteca estática
- 19. ¿Cómo seguir el orden de enlace cuando se enlaza con la biblioteca estática con gnu-make?
- 20. ¿Puedo construir una biblioteca compartida mediante el enlace de bibliotecas estáticas?
- 21. cómo vincular una biblioteca estática para iOS
- 22. enlace estático de la función de biblioteca compartida en gcc
- 23. ¿Por qué los símbolos de una biblioteca compartida no se resuelven en el momento del enlace?
- 24. ¿Cómo compilar Haskell a una biblioteca estática?
- 25. Cargar copias múltiples de una biblioteca compartida
- 26. Variable global compartida en la biblioteca estática de C++
- 27. ¿Cómo compilar una biblioteca estática en Linux?
- 28. ¿Qué significa -fPIC cuando construyes una biblioteca compartida?
- 29. Autoconf - incluyendo una biblioteca estática (novato)
- 30. Pruebas de Boost.Test en una biblioteca estática
duplicado posible de [g ++ enlazador: forzar la vinculación estática si existe biblioteca estática? ] (http://stackoverflow.com/questions/3698321/g-linker-force-static-linking-if-static-library-exists) –