2011-04-14 82 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),并且一切正常。