OS:(Linux)多執行緒實現生產者-消費者問題--pthread庫
阿新 • • 發佈:2018-12-03
OS實驗——多執行緒實現生產者-消費者問題時,正確輸入程式碼生成檔案pthread.c,在終端執行:
gcc編譯:輸入gcc -o pthread pthread.c
無法成功編譯,錯誤提示如下:
CSDN查詢解決方案後,發現pthread庫並不是Linux系統預設的庫,連結時需要使用庫libpthread.a,所以使用pthread庫中的pthread_creat建立執行緒時,編譯中要加上-lpthread引數:
用gcc -o pthread -lpthread pthread.c,依然出現同樣錯誤提示:
不應該在目的碼檔案前加上-lptread,而應該在程式碼檔案後邊新增該選項
gcc pthread.c -o pthtrad -lpthread:
-pthread與-lpthread的區別:
編譯選項中指定 -pthread 會附加一個巨集定義 -D_REENTRANT ,該巨集會導致 libc 標頭檔案選擇那些thread-safe的實現;連結選項中指定 -pthread 則同 -lpthread 一樣,只表示連結 POSIX thread
庫。由於 libc 用於適應 thread-safe 的巨集定義可能變化,因此在編譯和連結時都使用 -pthread 選項而不是傳統的 -lpthread 能夠保持向後相容,並提高命令列的一致性。
解決方案來自CSDN,附上鍊接:https://blog.csdn.net/finlay_liu/article/details/9794417