xerces enlazados estáticamente 3.0.0 no funciona mientras dinámica funciona en Linux
-
29-09-2019 - |
Pregunta
Así que estoy tratando de enlazar estáticamente Xerces 3.0.0 en Linux.
Ya lo hice con enlace dinámico y funciona, pero con el fin de evitar dependencia Quiero hacerlo de forma estática.
Me cambió todos los archivos make Para hacerlo en forma adecuada
-Wl,-Bstatic ... -lxerces-c -Wl,-Bdynamic ...
Pero estoy recibiendo errores siguientes:
undefined reference to '__ctype_b'
undefined reference to '__ctype_tolower'
undefined reference to '__ctype_toupper'
Me fijo aquellos con método de fuerza bruta encontré aquí
Pero había otro tipo de errores relacionados con xerces.
Xerces/3.0.0/lib/libxerces-c.a(PosixMutexMgr.o):
In function `xercesc_3_0::PosixMutexMgr::create(xercesc_3_0::MemoryManager*)':
PosixMutexMgr.cpp:(.text+0x84): undefined reference to `pthread_mutexattr_init'
PosixMutexMgr.cpp:(.text+0x95): undefined reference to `pthread_mutexattr_settype'
PosixMutexMgr.cpp:(.text+0xad): undefined reference to `pthread_mutexattr_destroy'
PosixMutexMgr.cpp:(.text+0xd0): undefined reference to `pthread_mutexattr_destroy'
Parece que su falta pthread así que intentado añadir, pero eso no soluciona el problema ... Estos errores están viniendo de Xerces ... y versión dinámica funciona un buen estática está fallando.
¿Ideas ???
Gracias
Solución
La versión dinámica de los xerces tendrá dependencias en libpthread que aseguren el cargador va a recoger la biblioteca correcta.
Especificación de libphtread en su línea de comandos enlazador debe fijar esas externos sin resolver, que hizo (a) poner en en el lugar correcto en la línea de comandos como los asuntos de pedidos y (b) ¿trató las versiones tanto la estática y dinámica de libpthread?
Otros consejos
El orden de los asuntos lib vinculado para el enlazador, pruebe a cambiar el orden para lib pthread.