# ./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"文件的目錄。