2011-04-14 81 views
0

我正在開發由svn下載的opencv實現的代碼。這些代碼如SIFT或SURF和OpenCV的代碼被前完美的工作,但突然而我想編譯任何代碼關注的OpenCV編譯錯誤opencv

/usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/crt1.o: In function `_start': 
(.text+0x18): undefined reference to `main' 
collect2: ld returned 1 exit status 

那麼,如何解決這個問題請,我已經紅紅的,我得到這個錯誤有些問題,但他們對我的情況沒有幫助,例如我必須將編輯代碼從g++ SIFT.cpp -o SIFT ....更改爲g++ -o SIFT SIFT.cpp ....,但它不適用於我。

謝謝。

+0

如果沒有看到「SIFT.cpp」的內容,很難幫到你。問題在於你試圖鏈接一個沒有定義'main'函數的可執行文件。 – 2011-04-14 01:15:58

回答

1

main是執行任何C++程序的起點。而你可能忘了建立具有main功能的源文件。由於您構建的文件沒有main,因此鏈接程序無法找到執行的起點。

g++ SIFT.cpp fileThatHasMainFunctionDefinition.cpp -o SIFT 

或可替代地在SIFT.cpp提供main本身。

+0

事情是,我之前編譯過,它工作得很好,我得到了很好的結果,這些程序已經實現了,而不是我做了那些,但現在我明白了。你認爲最好的做法是什麼? gcc sift.cpp'pkg-config --libs --cflags opencv' -o test 這就是我如何編譯 – Mario 2011-04-14 01:23:56

+0

@Mario - 我不知道openCV,但鏈接器未能找到'main'全部在哪裏我可以從錯誤消息中說出。抱歉。 – Mahesh 2011-04-14 01:26:03

5

我知道這是舊的,但我只是有一個類似的問題(與OpenCV的2.4.4a(也是2.4.1)),這是第一個彈出的谷歌。

我禁用了OpenCV配置中的「預編譯頭文件」選項(從cmake-gui開始,或者在生成時將-DENABLE_PRECOMPILED_HEADERS=OFF傳遞到cmake),並且一切正常。