這篇文章主要講解了“Linux下編譯時出現(xiàn)的錯誤及解決方案”,文中的講解內(nèi)容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Linux下編譯時出現(xiàn)的錯誤及解決方案”吧!
創(chuàng)新互聯(lián)2013年至今,先為大足等服務建站,大足等地企業(yè),進行企業(yè)商務咨詢服務。為大足企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務解決您的所有建站問題。
(1)由于是Linux新手,所以現(xiàn)在才開始接觸線程編程,照著GUN/Linux編程指南中的一個例子輸入編譯,結果出現(xiàn)如下錯誤:
undefined reference to 'pthread_create'
undefined reference to 'pthread_join'
問題原因:
pthread 庫不是 Linux 系統(tǒng)默認的庫,連接時需要使用靜態(tài)庫 libpthread.a,所以在使用pthread_create()創(chuàng)建線程,以及調(diào)用 pthread_atfork()函數(shù)建立fork處理程序時,需要鏈接該庫。
問題解決:
在編譯中要加 -lpthread參數(shù)
gcc -o thread thread.c -lpthread
thread.c為你些的源文件,不要忘了加上頭文件#include
(2)出現(xiàn)警告:內(nèi)建函數(shù)strlen不兼容的隱式聲明,內(nèi)建函數(shù)exit不兼容的隱式聲明
問題原因:因為函數(shù)strlen在string內(nèi),exit在stdlib內(nèi)。在文件中沒有添加頭文件 string.h和stdlib
問題解決:在文件中添加頭文件 string.h和stdlib
(3)出現(xiàn)錯誤:sem_union的存儲大小未知
問題原因:在新版2.6內(nèi)核中關于union sem_union 這個聯(lián)合體已經(jīng)被注釋了,需要自己寫這個聯(lián)合體
問題解決:在C文件中先定義
union semun {int val; struct semid_ds *buf; unsigned short *array;} sem_union;
隨后編譯時它就能找到預先定義好的sem_union聯(lián)合體了。
感謝各位的閱讀,以上就是“Linux下編譯時出現(xiàn)的錯誤及解決方案”的內(nèi)容了,經(jīng)過本文的學習后,相信大家對Linux下編譯時出現(xiàn)的錯誤及解決方案這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關知識點的文章,歡迎關注!