使用 g++ 在 AIX 上编译 pthread.h 的东西
Posted
技术标签:
【中文标题】使用 g++ 在 AIX 上编译 pthread.h 的东西【英文标题】:Compile pthread.h stuff on AIX using g++ 【发布时间】:2019-07-27 11:31:32 【问题描述】:我尝试编译这个非常简化的程序:
#include <pthread.h>
int main()
pthread_yield();
return 0;
使用 -pthread 就像 IBM 方面所说:
$ g++ -pthread test.cpp -o test
并得到这个错误:
test.cpp: In function 'int main()':
test.cpp:4:15: error: 'pthread_yield' was not declared in this scope
pthread_yield();
我也尝试了很多其他的错误,但到目前为止没有任何效果。 pthread.h 位于 /usr/includes 但 pthread_yield() 需要定义 _AIX_PTHREADS_D7。 我必须自己定义还是通过添加一些标志来完成?
谢谢!
【问题讨论】:
-pthread
标志应该是您所需要的。你检查过你的安装吗?可以重新安装编译器吗?您使用的是什么版本的 GCC?
如果您使用标准 C++ 线程而不是 pthreads 是否有效?
是的,您将手动定义此_AIX_PTHREADS_D7
符号。是的,有点蹩脚,但pthread_yield
是一个非标准扩展。
当我使用 -D_AIX_PTHREADS_D7 编译时,我得到 pthread_yield 的未定义符号错误,这至少让我更进一步,但在 /usr/lib 中显式链接到 libpthread.a 并不能解决未定义的问题符号错误。
@Galik GCC 在 AIX 7.1 上是 6.4.0。无法重新安装编译器。
【参考方案1】:
除了定义符号_AIX_PTHREADS_D7
,您还必须使用库libpthreads_compat
。
g++ -o marscode marscode.cc -D_AIX_PTHREADS_D7 -lpthreads_compat -lpthreads
【讨论】:
以上是关于使用 g++ 在 AIX 上编译 pthread.h 的东西的主要内容,如果未能解决你的问题,请参考以下文章
使用xlC 13.1.2在AIX 7.1上编译boost C ++库
在 AIX 5.3 上编译 Python 2.6.4 时出现问题
尝试使用Powershell和MinGW MSYS在Windows上编译Carabiner。在pthreads_rwlock_t中出现gflags错误