並行程式開發之編譯環境搭建(Ubuntu+Eclipse+CDT)
阿新 • • 發佈:2019-02-15
(Ubuntu+Eclipse+CDT環境搭建詳見附件)
接下來建立第一個C程式:
1.
2.
3.
將程式碼放入檔案進行編譯時(Ctrl+B)報錯:#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; }
此時報錯是編譯環境還有點問題(主要指交叉編譯環境):
(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即可
截圖如下:
再次編譯執行:
成功!至此交叉編譯環境搭建結束,接下來就開啟並行程式設計啦!