Mi programa está construido como un cargador y muchos módulos que son bibliotecas compartidas. Ahora, una de esas bibliotecas usa pthreads y parece estar vinculada al módulo de forma dinámica (cargada al inicio). Ahora sería más simple si pudiera forzar pthreads a vincularse en el archivo del módulo. GCC en Linux, ¿cómo lo hago? Supongo que un libpthread.a es necesario ...Fuerza GCC al enlace estático p. pthreads (y no enlace dinámico)
Respuesta
Si bien teóricamente es posible enlazar libpthread.a
en una biblioteca compartida, es realmente mala idea. La razón es que libpthread
es parte de glibc
, y todas partes de glibc
deben coincidir exactamente, o verá bloqueos extraños e inesperables.
Así que une libpthread.a
en su Biblioteca compartida:
- causa de su programa se bloquee cuando se mueve a una máquina con una versión diferente de
glibc
- causa de su programa existente se bloquee cuando es de su máquina actual
glibc
actualizado, pero su módulo no se vuelve a vincular con ellibpthread.a
actualizado.
Sálgase de la molestia y no haga eso.
: o Dios mío, Dios mío, está bien que lo diga. Pero cuando su parte de glibc, .../me se deripula ... – imacake
Gracias. Como la respuesta. Una consulta, sin embargo: si libpthread es parte de libc/glibc, ¿por qué se proporciona como una biblioteca separada? Casi todas las bibliotecas se vinculan a libc y luego, lo que entonces era la necesidad de libpthread – Kiran
@Kiran "¿Por qué se proporciona como una biblioteca separada?" Porque muchos programas no necesitan subprocesos, y la vinculación en 'libpthread' impone una sobrecarga innecesaria en tales programas. –
- 1. Diferencia entre enlace estático y enlace dinámico
- 2. Enlace estático de Android vs enlace dinámico contra glibc
- 3. Enlace de tiempo de ejecución estático/dinámico
- 4. enlace gcc contra enlace simbólico
- 5. Envío dinámico y enlace
- 6. Aumentar el enlace estático
- 7. Enlace dinámico == enlace tardío en Java o no?
- 8. Ventajas de enlace estático
- 9. Enlace estático o dinámico de CRT, MFC, ATL, etc.
- 10. enlace dinámico con LLVM
- 11. enlace estático de la función de biblioteca compartida en gcc
- 12. Al importar una clase de biblioteca java desde jar, ¿esto se considera enlace estático? o dinámico?
- 13. gcc diferencia entre -pthread y -pthreads?
- 14. Diferencia entre el enlace dinámico en tiempo de carga y el enlace dinámico en tiempo de ejecución
- 15. Enlace estático de Qt e implementación
- 16. Enlace dinámico en la plantilla WGT DataGridCell
- 17. Enlace estático wxHaskell en Mac OS X
- 18. Enlace estático de Cython con tiempo de ejecución de Python?
- 19. Enlace de valor dinámico del componente JSF
- 20. Enlace a un archivo estático de Hamlet
- 21. depuración vtable errores de enlace en GCC
- 22. Enlace estático del controlador firebird para dbexpress
- 23. Bloques de código, MinGW, Boost y problemas de enlace estático
- 24. WPF Enlace: El recurso estático no se puede resolver
- 25. Pregunta sobre la sobrecarga de Java y el enlace dinámico
- 26. Opciones de enlace de OpenSSL -lssl y -lcrypto en GCC
- 27. ¿Cómo entender si un comportamiento usará enlace estático o dinámico en Java?
- 28. Construyendo gráficos dirigidos por fuerza desde solo datos de enlace
- 29. ¿Forzar el enlace estático de la biblioteca vinculada al objetivo de Xcode?
- 30. Ububtu, opencv y enlace
¿En qué instancia tiene que hacer algo más que incluir el encabezado pthread para que se genere? ¿Tienes un ejemplo de fuente? ¿Este método de compilación es obligatorio? –