1. 程式人生 > >並行程式開發之編譯環境搭建(Ubuntu+Eclipse+CDT)

並行程式開發之編譯環境搭建(Ubuntu+Eclipse+CDT)

     (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即可

截圖如下:




再次編譯執行:


成功!至此交叉編譯環境搭建結束,接下來就開啟並行程式設計啦!