C++編譯出現錯誤(.text+0x20): undefined reference to `main'


# ./configure
# make
.....省略中間打印.....
/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64/crt1.o: In function `_start':
(.text+0x20): undefined reference to `main'
collect2: error: ld returned 1 exit status

為什么會報“undefined reference to `main'”?
當然我寫了main函數。

最后清醒了一下腦子,發現自己是Makefile.am中的“-I選項”少包含了main函數所在的目錄。

搜索過程中也發現別人有的說要"-L"要包含當前目錄的"-L ."。那種情況是引用的動態庫在當前目錄。

也有人說少頭文件的,少編譯選項“-lrt -ldl”

總結

也就是出問題,要檢查以下幾個地方:
(1)Makefile有沒有覆蓋到main函數;(比如你把main函數賦值給一個變量MAINCPP,引用變量的時候沒有使用$(MAINCPP),結果報錯)
(2)有沒有包含到需要的頭文件目錄;
(3)有沒有包含到需要的庫文件目錄;
(4)有沒有包含到庫文件所需的庫,比如依賴sqlite.a同時編譯時可能要加上-lpthread -lrt -ldl等選項。
(5)有沒有包含到".o"文件的目錄。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM