Error in making OpenCV

I'm getting this error:

OpenCV-2.4.3/modules/features2d/src/freak.cpp:437: error: unable to find a register to spill in class 'GENERAL_REGS'

After doing:

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

The same procedure works on another machine. Any ideas?

Answers


You need to dig into the Makefiles to remove -O for freak.cpp.

UPDATE: This is exactly how one should do it (tested with 2.4.3 and 2.4.4).

you need to edit

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

Search for freak.cpp. You find three blocks: Building CXX..., Preprocessing CXX..., and Compiling CX.... I just needed to change the Building part. The last line of that block looks like this:

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

and if you check you find out that CXX_FLAGS has a -O3 in it. If you add -O0 after CXX_FLAGS it suppresses the O3. So your lines should look like this.

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

This is at least working here!


I struggled with this for quite a few hours as well on my CentOS 5.x boxen, and here's my solution.

It's apparent you need to update 'gcc' but natively upgrading via RPM or just grabbing RPM's at random causing some serious config mgmt issues on your server. I don't have time to compile gcc/g++ via source right now either. After grazing out in the repo for a while, I found that there is, indeed, an 4.x release of gcc in the base repo.

Do this (or someone with 'root' to do it in case of OP who doesn't have access):

  # yum install gcc44 gcc44-c++ -y

...CentOS/RHEL have bundled a preview RPM of gcc-4.4.6.

Then when you go to do 'cmake' to build your release environment, do at least the following (your cmake params may vary):

  # 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/

That will give you a successful build of OpenCV-2.4.3 natively with CenOS/RHEL 5.x.


Had the same problem and solved it like wisehippy with one slight change:

# 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> 

I found the problem to be solved once I updated my c++ to point to g++44, instead of the default g++ which was 4.1.

As root verify that the files are the same before doing this step, it may not be necessary for you.

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

There should be nothing returned if the files are the same. If this is the case, continue. Backup your old file. You can delete the file as well because it's the same as g++, but I like to be careful.

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

Create a link so that C++ points to your g++44. You could use symbolic link here as well.

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

Done.


Need Your Help

android SQL DB Helper

android sql sqlite android-activity android-sqlite

Firstly, please be patient with me as i'm still a novice with android and java.

Squid access log not logging CONNECT full urls

squid

I need to log all HTTPS connects to test my clients app. How can I configure SQUID to log all the HTTPS traffic urls?