未定义符号:_ZL22__gthrw_pthread_cancelm错误
undefined symbol: _ZL22__gthrw_pthread_cancelm error
我有一个c++/C应用程序,需要编译为32位应用程序(因为有某些第三方库仅适用于32位)。但是,编译和执行将发生在CentOS 6.4 x86_64机器上。
我正在使用gnu autotools进行构建。在做了大量的谷歌搜索之后,我终于找到了一组可以给./configure
创建32位可执行文件/共享对象的选项。将LD_LIBRARY_PATH
改为在/lib, /usr/lib/, /usr/lib/gcc/...
中搜索,而不是在/lib64, ...
中搜索。验证使用file
命令生成的。so和可执行文件均为32位
但是我得到错误:" undefined symbol: _ZL22__gthrw_pthread_cancelm
"如果我运行可执行文件。
什么线索吗?
似乎你忘记链接到pthreads与-lpthread
。
GCC在pthreads之上添加了一个抽象层,并且这个抽象层使用弱符号,因此您可以构建没有链接错误但在运行时失败的可执行文件。
目标主机上是否有32位pthread库?如果没有,我想你需要安装一个。还要检查目标主机上ldd <my-program>
的输出,这可能有助于找出缺少的内容。
相关文章:
- 在 c++11 中为 pthread 设置调度参数
- 如果不包含 pthread,为什么 GCC 的线程标准库实现会抛出异常?
- pthread只有在线程数量较少时才可以正常工作
- pthread执行时间比顺序执行时间差
- 使用 -pthread 如何不违反 ODR 规则?
- 使用 pthread 的多线程
- 销毁 pthread 互斥体和 C++ 中的取消初始化顺序
- 函数 AfxEndThread 中的读取访问冲突"pThread-> was nullptr"
- 锁定步进pthread互斥
- Pthread段错误,使用指向main中变量的指针
- pthread导致的内存泄漏
- GCC:--静态链接到pthread的整个存档配方在最近的GCC版本中停止工作
- 正确地编写一个类,并将pthread与vlc库和c++一起使用
- 直接读取 pthread 互斥锁的所有者字段是否安全?
- 为什么 pthread 会减慢代码速度?
- 对 pthread CLion 的未定义引用
- C++ 17:pthread的生成文件标志
- 将带有结构的参数传递给 pthread
- Posix 线程类和启动例程 (pthread)
- 在 pthread 中使用共享变量