Eclipse + CDT:
pthread_create函數(shù)編譯時報錯:undefined reference to `pthread_create’
undefined reference to `pthread_create’
undefined reference to `MD5′
由于pthread 庫不是 Linux 系統(tǒng)默認(rèn)的庫,,連接時需要使用靜態(tài)庫 libpthread.a,,所以在使用pthread_create()創(chuàng)建線程,以及調(diào)用 pthread_atfork()函數(shù)建立fork處理程序時,,在編譯中要加 -lpthread參數(shù),。
例如:在加了頭文件#include
gcc thread.c -o thread -lpthread
這種情況類似于
+++++++++
Linux上編譯pthread程序,默認(rèn)會出錯,。如題,。原因如下。
-pthread
Add support for multithreading using the POSIX threads library.
This option sets flags for both the preprocessor and linker. It
does not affect the thread safety of object code produced by the
compiler or that of libraries supplied with it. These are HP-UX
specific flags.
所以如果在gcc的編譯中(更準(zhǔn)確的說是鏈接中)沒有啟動pthread的話,,就會出現(xiàn)如下的鏈接錯誤,。
pthread_test.c:(.text+0x8a): undefined reference to `pthread_create’
collect2: ld returned 1 exit status
另外一個參數(shù)-lpthread也能起到同樣的作用。所以可以看出-pthread的本質(zhì)應(yīng)當(dāng)時引入了thread對應(yīng)的library,。默認(rèn)情況下,,pthread對應(yīng)的library在gcc編譯鏈接中是不會被引入的。
所以 gcc -o backupfile backupfiles.c -pthread
出現(xiàn)如下錯誤:
undefined reference to ‘pthread_create’
undefined reference to ‘pthread_join’
問題原因:
pthread 庫不是 Linux 系統(tǒng)默認(rèn)的庫,,連接時需要使用靜態(tài)庫 libpthread.a,,所以在使用pthread_create()創(chuàng)建線程,以及調(diào)用 pthread_atfork()函數(shù)建立fork處理程序時,,需要鏈接該庫,。
問題解決:
在編譯中要加 -lpthread參數(shù)
gcc thread.c -o thread -lpthread
thread.c為你些的源文件,不要忘了加上頭文件#include
+++++++++
eclipse
解決方法如下:
Project->Properties->C/C++ Build->Settings->GCC C++ Linker->Libraries
在Libraries(-l)中添加pthread即可
在Libraries(-l)中添加crypto即可