(Ubuntu+Eclipse+CDT环境搭建详见附件)
接下来创建第一个C程序:
1.
2.
3.
#include <stdio.h>
#include <pthread.h>
#define THREADNUM 3
void thread(int i) {
printf("This is thread:%d\n", i);
pthread_exit(NULL);
}
int main(void) {
pthread_t id[THREADNUM];
int ret, i;
for(i=0; i<THREADNUM; i++) {
ret = pthread_create(&id[i], NULL, (void *)thread, i);
if(ret != 0) {
printf("Create thread error!\n");
exit(1);
}
}
for(i=0; i<THREADNUM; i++) {
pthread_join(id[i], NULL);
}
printf("This is the main process.\n");
return 0;
}
将代码放入文件进行编译时(Ctrl+B)报错:
此时报错是编译环境还有点问题(主要指交叉编译环境):
(2)在进入run Confingurations 发现添加的不是一个工程,而是一个.cpp文件,然后点击search project
(3)此时编译还会报错(如下):
问题原因:
pthread 库不是 Linux 系统默认的库,连接时需要使用静态库 libpthread.a,所以在使用pthread_create()创建线程,以及调用 pthread_atfork()函数建立fork处理程序时,需要链接该库。
解决办法:
(a)直接使用命令行时:
在编译中要加 -lpthread参数
gcc thread.c -o thread -lpthread
thread.c为你些的源文件,不要忘了加上头文件#include<pthread.h>
(b)在Eclipse中:
解决方法如下:
Project->Properties->C/C++ Build->Settings->GCC C++ Linker->Libraries
在Libraries(-l)中添加pthread即可
在Libraries(-l)中添加crypto即可
截图如下:
再次编译运行:
成功!至此交叉编译环境搭建结束,接下来就开启并行编程啦!