首页 > 解决方案 > 使用 g++ 在 AIX 上编译 pthread.h 的东西

问题描述

我尝试编译这个非常简化的程序:

#include <pthread.h>

int main(){
    pthread_yield();
    return 0;
}

像 IBM 方面那样使用 -pthread 说:

$ 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。我必须自己定义这个还是通过添加一些标志来完成?

谢谢!

标签: c++gccposixaix

解决方案


除了定义符号之外_AIX_PTHREADS_D7,您还必须使用库libpthreads_compat

g++ -o marscode marscode.cc -D_AIX_PTHREADS_D7 -lpthreads_compat -lpthreads

推荐阅读