Link error: undefined reference to cv::FAST() [was: "installing Hokuyo"]

Hi

I am getting the following error while installing this sensor in mrpt.

[ 40%] Built target mrpt-base
[ 51%] Built target mrpt-opengl
[ 56%] Built target mrpt-obs
[ 62%] Built target mrpt-vision
[ 64%] Built target mrpt-scanmatching
[ 64%] Built target mrpt-bayes
[ 67%] Built target mrpt-maps
[ 73%] Built target mrpt-slam
[ 76%] Built target mrpt-gui
[100%] Built target mrpt-hwdrivers
Linking CXX executable HOKUYO_laser_test
../../lib/libmrpt-vision.so.0.9.1: undefined reference to `cv::FAST(cv::Mat const&, std::vector >&, int, bool)'
collect2: ld returned 1 exit status
make[2]: *** [samples/HOKUYO_laser_test/HOKUYO_laser_test] Error 1
make[1]: *** [samples/HOKUYO_laser_test/CMakeFiles/HOKUYO_laser_test.dir/all] Error 2
make: *** [all] Error 2

Can you please tell me what could be the problem?

jlblanco's picture

Hi, What version of OpenCV

Hi,

What version of OpenCV did MRPT detected? (at mrpt build dir, do "cmake . | grep OpenCV")
Was OpenCV installed in the system with apt-get/aptitude/yum or built from sources?

I think the problem is solved in the SVN HEAD version of MRPT (future 0.9.2), but please let me know this information to make sure.

Best,
JL

shahzadiqbal10's picture

Hi OpenCv version is

Hi

OpenCv version is 2.0.0

Since it was a long time ago, I dont remember how I installed opencv. Is there a way to check this?
cheers,
Shahzad

jlblanco's picture

Check if a directory

Check if a directory /usr/include/opencv/ exists (installed from repositories), if it's /usr/local/include/opencv/ (compiled and "make install"ed), or if MRPT said "found through OpenCVConfig.cmake" that means you built it from sources and probably don't "make install" it.

Anyway, thanks for the report, I'll investigate it...

shahzadiqbal10's picture

opencv exists in both

opencv exists in both locations/directories :S

jlblanco's picture

Ah! That's probably the

Ah! That's probably the problem... I've verified in the meanwhile that 0.9.1 builds OK against opencv 2.0, either "make installed" or thru OpenCVConfig.cmake.

In theory both versions (in /usr/ & /usr/local) can live together... unless one is corrupt or half-uninstalled.
You can try completely uninstalling the version from the repositories (with synaptics, aptitude,...) OR the local one, as you prefer (you may have to do a "sudo make uninstall" from the directory where you built opencv, if the directory still exists....). Notice that OpenCV comes in different packages: libcv, libcvaux, libhighgui,... and all should be installed/uninstalled together.
When there's only one version of OpenCV in the system, try rebuilding MRPT from scratch ("make clean all").

It's weird you're not the first one to report that exact error, but I can't reproduce it... Have you enabled BUILD_SHARED_LIBS=OFF in MRPT or anything else different from defaults?

JL

Syndicate content

The Mobile Robot Programming Toolkit (MRPT) initiative (C) 2012