静态链接的XERCES 3.0.0在Linux上的动态工作时不起作用
-
29-09-2019 - |
题
因此,我试图在Linux上静态地链接XERCES 3.0.0。
我已经使用了动态链接并起作用,但是为了避免依赖,我想静态地进行。
我更改了所有制作文件以适当的方式执行此操作
-Wl,-Bstatic ... -lxerces-c -Wl,-Bdynamic ...
但是我遇到了以下错误:
undefined reference to '__ctype_b'
undefined reference to '__ctype_tolower'
undefined reference to '__ctype_toupper'
我固定了发现的那些发现的那些 这里
但是还有另一种与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'
似乎它缺少Pthread,所以我尝试添加它,但这并不能解决问题……这些错误来自Xerces ...而动态版本的工作正常静态静态。
有任何想法吗???
谢谢
解决方案
XERCES的动态版本将对LIBPTHREAD具有依赖性,以确保加载程序将拾取正确的库。
在链接器命令行上指定libphtread应该修复那些未解决的外部,您(a)是否(a)在订购事项时放在命令行上的正确位置,(b)您是否尝试过libpthread的静态和动态版本?
其他提示
LIB链接的顺序对于链接器,请尝试更改Pthread Lib的顺序。
不隶属于 StackOverflow