制作OpenCV时出错

时间:2012-11-27 08:57:13

标签: c++ opencv makefile cmake

我收到了这个错误:

  

OpenCV-2.4.3 / modules / features2d / src / freak.cpp:437:错误:无法   在“GENERAL_REGS”课程中找到要注册的注册表

完成后:

tar xfj OpenCV-2.4.3.tar.bz2
cd OpenCV-2.4.3
mkdir release
cd release
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D BUILD_NEW_PYTHON_SUPPORT=ON -D BUILD_EXAMPLES=ON ..
make

同样的程序适用于另一台机器。有什么想法吗?

4 个答案:

答案 0 :(得分:15)

你需要深入了解Makefile以删除-O for freak.cpp。

更新: 这正是人们应该如何做到的(用2.4.3和2.4.4测试)。

你需要编辑

YOUR_BUILD_DIR/modules/features2d/CMakeFiles/opencv_features2d.dir/build.make

搜索freak.cpp。您可以找到三个块:构建CXX ...,预处理CXX ......和编译CX ....我只需要更改Building部分。该块的最后一行如下所示:

.... YOUR_COMPILER $(CXX_DEFINES) $(CXX_FLAGS) ...

如果你检查你发现CXX_FLAGS中有一个-O3。如果在CXX_FLAGS之后添加-O0,则会抑制O3。所以你的行应该是这样的。

.... YOUR_COMPILER $(CXX_DEFINES) $(CXX_FLAGS) -O0 ...

这至少在这里工作!

答案 1 :(得分:7)

我在CentOS 5.x boxen上花了好几个小时的努力,这是我的解决方案。

很明显你需要更新'gcc'但是通过RPM本地升级或者只是随机获取RPM,导致服务器上出现严重的配置管理问题。我现在也没有时间通过​​源代码编译gcc / g ++。在回购中放牧一段时间之后,我发现在基础回购中确实有4.x版本的gcc。

如果OP没有访问权限,请执行此操作(或具有'root'的人执行此操作):

  # yum install gcc44 gcc44-c++ -y

...... CentOS / RHEL捆绑了gcc-4.4.6的预览RPM。

然后当你去'cmake'建立你的发布环境时,至少做以下事情(你的cmake参数可能会有所不同):

  # cd /path/to/OpenCV-2.4.3
  # mkdir release && cd release 
  # env CC=/usr/bin/gcc44 CXX=/usr/bin/g++44 cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/place/to/install/ -D BUILD_PYTHON_SUPPORT=ON /path/to/OpenCV-2.4.3/

这将使您在CenOS / RHEL 5.x中成功构建OpenCV-2.4.3。

答案 2 :(得分:1)

遇到了同样的问题,只需稍加改动即可解决它:

# yum install gcc44 gcc44-c++ -y
# mkdir release && cd release 
# cmake -D CMAKE_BUILD_TYPE=RELEASE -DCMAKE_CXX_COMPILER=/usr/bin/g++44 -DCMAKE_C_COMPILER=/usr/bin/gcc44 <OpenCV_Dir> 

答案 3 :(得分:1)

我将c++更新为指向g++44,而不是4.1的默认g++,我发现问题有待解决。

在执行此步骤之前,以root验证文件是否相同,可能没有必要。

diff /usr/bin/c++ /usr/bin/g++

如果文件相同,则不应返回任何内容。如果是这种情况,请继续。 备份旧文件。您也可以删除该文件,因为它与g++相同,但我要小心。

mv /usr/bin/c++ /usr/bin/c++4.1

创建一个链接,以便C++指向您的g++44。你也可以在这里使用符号链接。

ln /usr/bin/g++44 /usr/bin/c++

完成。