5
votes

i've got a Problem with a self compiled opencv...

XUbuntu 13.10 x64 gcc version 4.8.1

cmake -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_QT=ON -D WITH_OPENGL=ON -D WITH_OPENMP=ON ..

Everthing looks fine. Simple examples will be work. My problem is, i want to use the nonfree(SURF) package in xubuntu.

Now i want to compile these example http://docs.opencv.org/doc/tutorials/features2d/feature_detection/feature_detection.html and get this error (Topic)

g++ -I/usr/local/include/opencv -I/usr/local/include/opencv2 -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"example.d" -MT"example.d" -o "example.o" "../example.cpp" Finished building: ../example.cpp

Building target: SURF_Example Invoking: GCC C++ Linker

g++ -L/usr/local/lib -o "SURF_Example" ./example.o -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_objdetect -lopencv_nonfree

libopencv_features2d.so.2.4: error adding symbols: DSO missing from command line

Any help?

2

2 Answers

7
votes

Probably, problem is in incorrect linking order and missing lib features2d. Try

g++ -L/usr/local/lib -o "SURF_Example" ./example.o -lopencv_nonfree -lopencv_objdetect -lopencv_features2d -lopencv_imgproc -lopencv_highgui -lopencv_core  
0
votes

I had a similar problem with self-compiled OpenCV 3.2:

/usr/local/lib/libopencv_imgcodecs.so: error adding symbols: DSO missing from command line

It turned out my compiler commandline was wrong, too. The correct commandline became:

g++ `pkg-config --cflags opencv` main.cpp `pkg-config --libs opencv`

Please note that it is g++, not gcc, and compiler switches must come BEFORE your module, but linker switches must come AFTER, thus using pkg-config twice.