Tengo una biblioteca estática y una biblioteca dinámica con el mismo nombre: libclsocket.a y libclsocket.so Cuando especifico a qué biblioteca quiero vincular simplemente ingreso -lclsocket como la biblioteca. Mi programa cumple y funciona perfectamente bien, pero ¿qué biblioteca estoy usando? la biblioteca estática o la biblioteca dinámica? Quiero darle a mi amigo mi programa y no estoy seguro si necesito incluir las bibliotecas en el lanzamiento. C++, codelite, pcLinuxOS 2010En Linux, ¿cómo puedo saber si estoy enlazando a una biblioteca estática o dinámica?
Respuesta
Puede intentar ejecutar ldd
en el ejecutable y ver si se está detectando .so como se requiere en la lista de dependencias.
ldd página de manual es here.
Está vinculando a las bibliotecas compartidas. Entonces, ¿cómo me vincularía a una lib estática? También estoy asumiendo que está predeterminado a bibliotecas compartidas. – TheFuzz
Si usa el indicador -static
, todos los componentes se convertirán en estáticos. Y -l
puede incluir bibliotecas compartidas. Por lo tanto, especificar el nombre de archivo de la biblioteca estática (por ejemplo, con /usr/lib/libfoo.a
por ejemplo, no -l
antepuesto), debe obtener el efecto deseado.
- 1. ¿Cómo compilar una biblioteca estática en Linux?
- 2. Biblioteca estática y Biblioteca dinámica: Confusión
- 3. ¿Cómo puedo saber si estoy corriendo en una máquina virtual VMWARE (desde Linux)?
- 4. ¿Cómo puedo saber si estoy en el depurador en Android?
- 5. ¿Cómo compilar Haskell a una biblioteca estática?
- 6. ¿Cómo puedo saber si estoy antes de guardar desde una edición o una creación? CakePHP
- 7. ¿Cómo puedo saber si estoy huyendo de JRuby vs. Ruby?
- 8. Biblioteca compartida dinámica de C++ en Linux
- 9. ¿Cómo saber si estoy en una devolución de datos?
- 10. GCC/Linux: agregar una biblioteca estática a .so?
- 11. ¿Cómo puedo saber si estoy en x64 o x86 usando .NET?
- 12. ¿Cómo puedo saber en qué subrutina estoy?
- 13. cómo usar mi propia biblioteca dinámica en Linux (Makefile)
- 14. cómo vincular la biblioteca estática a la biblioteca dinámica en gcc
- 15. Detecta si la dirección IP pública es dinámica o estática
- 16. Cómo convertir una dll dinámica a lib estática?
- 17. ¿Cómo saber si un tipo es una clase estática?
- 18. Restricción de símbolos en una biblioteca estática de Linux
- 19. ¿Cómo saber qué distribución de Linux estoy usando?
- 20. ¿Cómo puedo saber si necesito conservar o asignar una propiedad?
- 21. saber si .lib es estático o importar
- 22. En C#, ¿cómo puedo saber si una propiedad es estática? (.Net CF 2.0)
- 23. ¿Cómo puedo saber si estoy en una pila de excepción de Delphi?
- 24. ¿Cómo puedo vincular una biblioteca dinámica en Xcode?
- 25. ¿Convertir una biblioteca estática a una biblioteca compartida?
- 26. ¿Puede una biblioteca estática XCode requerir vinculación con una biblioteca dinámica?
- 27. ¿Debo usar __bridge o __bridge_retained si estoy enlazando un objeto liberado automáticamente con Core Foundation?
- 28. ¿Cómo saber si se ejecuta en una consola de linux frente a una sesión de ssh?
- 29. ¿Cómo puedo forzar el enlace con una biblioteca estática cuando hay una biblioteca compartida del mismo nombre?
- 30. Cómo forzar a los símbolos de una biblioteca estática a ser incluidos en una compilación de biblioteca compartida?
No especificó el indicador '-estático' cuando compila con GCC, por lo que es muy probable que esté enlazando con el objeto compartido. Como respondió @Soo Wei Tan, puede usar 'ldd' en el binario para determinar sus dependencias del enlazador en tiempo de ejecución. – birryree
¿Puedo especificar que quiero que la biblioteca esté vinculada estáticamente? – TheFuzz
puede hacer un enlace estático selectivo al pasar el nombre completo de la biblioteca. Como 'gcc -o OutFile -l: libclsocket.a'. Tenga en cuenta el ':', es muy importante. Me gustaría encontrar documentación oficial para este comportamiento, pero las páginas de manual de 'gcc' no mencionan este uso. –
birryree