gcc編譯小認識

今天在寫程序後,使用交叉編譯器編譯程序,出現了以下問題。


看圖,運行Makefile,編譯出現問題,其中open_serial()函數和serial_init()函數在serial.c中定義,socket_init()函數在tcp.c中定義,但main.c中有調用socket_init(),open_serial(),serial_init()函數,所以我將main.c程序換了下位置,放在了serial.c和tcp.c之後,然後直接用交叉編譯器編譯,該問題解決,如下圖


但是編譯時沒有帶-lpthread選項,所以又出現了其他錯誤,開始以爲是pthread_create等函數的頭文件忘了定義,結果程序中有,編譯時加上-lpthread就好了,


****************************************

其實,我在Makefile中改了main.c順序還是報錯誤


下面是我最開始的Makefile文件


後來想了下,改了Makefile文件,將-Wall和-Werror選項去掉,如下


再進行make,成功!


總結:應該是-Werror選項將gcc所有警告當成錯誤處理了,這是警告,可能是我程序之間的連接有些問題,但是可以運行成功的

***********************************************

OK!!

發佈了36 篇原創文章 · 獲贊 19 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章