gpt4 book ai didi

c++ - 静态链接的 xerces 3.0.0 在 Linux 上动态工作时不起作用

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:11:49 26 4
gpt4 key购买 nike

所以我正在尝试在 Linux 上静态链接 Xerces 3.0.0。

我已经使用动态链接做到了并且它有效,但为了避免依赖我想静态地做到这一点。

我更改了所有的 make 文件以适当的方式完成它

-Wl,-Bstatic ... -lxerces-c -Wl,-Bdynamic ...

但我收到以下错误:

  undefined reference to '__ctype_b'
undefined reference to '__ctype_tolower'
undefined reference to '__ctype_toupper'

我修复了那些发现的蛮力方法 here

但是还有另外一种与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) 在命令行的正确位置放置了顺序问题,并且 (b) 您是否尝试了静态和动态版本libp线程?

关于c++ - 静态链接的 xerces 3.0.0 在 Linux 上动态工作时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4327421/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com