【发布时间】: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。无法重新安装编译器。