因此,我试图在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的顺序。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top