Reputation: 63
I have downloaded Eigenfaces algorithm in c++ from OpenCV official website and I've compile it with this command :
g++ `pkg-config --cflags --libs opencv` facerec_eigenfaces.cpp -o opencv
But i get these errors:
/tmp/cc0CsJ0b.o: In function `norm_0_255(cv::_InputArray const&)':
facerec_eigenfaces.cpp:(.text+0x51): undefined reference to `cv::noArray()'
facerec_eigenfaces.cpp:(.text+0x65): undefined reference to `cv::_OutputArray::_OutputArray(cv::Mat&)'
facerec_eigenfaces.cpp:(.text+0x9b): undefined reference to `cv::normalize(cv::_InputArray const&, cv::_OutputArray const&, double, double, int, int, cv::_InputArray const&)'
facerec_eigenfaces.cpp:(.text+0xa2): undefined reference to `cv::noArray()'
facerec_eigenfaces.cpp:(.text+0xb6): undefined reference to `cv::_OutputArray::_OutputArray(cv::Mat&)'
facerec_eigenfaces.cpp:(.text+0xec): undefined reference to `cv::normalize(cv::_InputArray const&, cv::_OutputArray const&, double, double, int, int, cv::_InputArray const&)'
I don't copy all of theme here but they are all are "undefined reference" and my OpenCV version is the same as the link I've mentioned.
Output of (pkg-config --cflags --libs opencv) :
-I/usr/local/include/opencv -I/usr/local/include /usr/local/lib/libopencv_calib3d.so /usr/local/lib/libopencv_contrib.so /usr/local/lib/libopencv_core.so /usr/local/lib/libopencv_features2d.so /usr/local/lib/libopencv_flann.so /usr/local/lib/libopencv_gpu.so /usr/local/lib/libopencv_highgui.so /usr/local/lib/libopencv_imgproc.so /usr/local/lib/libopencv_legacy.so /usr/local/lib/libopencv_ml.so /usr/local/lib/libopencv_nonfree.so /usr/local/lib/libopencv_objdetect.so /usr/local/lib/libopencv_ocl.so /usr/local/lib/libopencv_photo.so /usr/local/lib/libopencv_stitching.so /usr/local/lib/libopencv_superres.so /usr/local/lib/libopencv_ts.a /usr/local/lib/libopencv_video.so /usr/local/lib/libopencv_videostab.so /usr/local/lib/libopencv_viz.so /usr/lib/i386-linux-gnu/libXext.so /usr/lib/i386-linux-gnu/libX11.so /usr/lib/i386-linux-gnu/libICE.so /usr/lib/i386-linux-gnu/libSM.so /usr/lib/i386-linux-gnu/libGL.so /usr/lib/i386-linux-gnu/libGLU.so -ltbb -lrt -lpthread -lm -ldl
Upvotes: 0
Views: 5591
Reputation: 13003
Hypothesis.
Try to move your linker flags to the end of the command:
g++ facerec_eigenfaces.cpp -o opencv `pkg-config --cflags --libs opencv`
See also: Why does the order in which libraries are linked sometimes cause errors in GCC?
Upvotes: 5