undefined reference to checkIppStatus when compiling with -DWITH_IPP=OFF (Bug #4389)
Description
I was trying to compile OpenCV 3.0 ( https://github.com/Itseez/opencv/archive/3.0.0.tar.gz ) without IPP library on Fedora 22. It ended up with following error:
$ cmake . -DWITH_IPP=OFF
...
$ make VERBOSE=1
...
...
...
Linking CXX executable ../../bin/opencv_perf_core
cd /home/jmlich/workspace/fedora/opencv/opencv-3.0.0/modules/core && /usr/bin/cmake -E cmake_link_script CMakeFiles/opencv_perf_core.dir/link.txt --verbose=1
/usr/lib64/ccache/c++ -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wno-narrowing -Wno-delete-non-virtual-dtor -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -msse -msse2 -mno-avx -msse3 -mno-ssse3 -mno-sse4.1 -mno-sse4.2 -ffunction-sections -fvisibility=hidden -fvisibility-inlines-hidden -O3 -DNDEBUG -DNDEBUG CMakeFiles/opencv_perf_core.dir/perf/cuda/perf_gpumat.cpp.o CMakeFiles/opencv_perf_core.dir/perf/perf_sort.cpp.o CMakeFiles/opencv_perf_core.dir/perf/perf_dft.cpp.o CMakeFiles/opencv_perf_core.dir/perf/perf_reduce.cpp.o CMakeFiles/opencv_perf_core.dir/perf/perf_compare.cpp.o CMakeFiles/opencv_perf_core.dir/perf/perf_cvround.cpp.o CMakeFiles/opencv_perf_core.dir/perf/opencl/perf_matop.cpp.o CMakeFiles/opencv_perf_core.dir/perf/opencl/perf_bufferpool.cpp.o CMakeFiles/opencv_perf_core.dir/perf/opencl/perf_gemm.cpp.o CMakeFiles/opencv_perf_core.dir/perf/opencl/perf_dxt.cpp.o CMakeFiles/opencv_perf_core.dir/perf/opencl/perf_channels.cpp.o CMakeFiles/opencv_perf_core.dir/perf/opencl/perf_usage_flags.cpp.o CMakeFiles/opencv_perf_core.dir/perf/opencl/perf_arithm.cpp.o CMakeFiles/opencv_perf_core.dir/perf/perf_minmaxloc.cpp.o CMakeFiles/opencv_perf_core.dir/perf/perf_split.cpp.o CMakeFiles/opencv_perf_core.dir/perf/perf_abs.cpp.o CMakeFiles/opencv_perf_core.dir/perf/perf_main.cpp.o CMakeFiles/opencv_perf_core.dir/perf/perf_mat.cpp.o CMakeFiles/opencv_perf_core.dir/perf/perf_stat.cpp.o CMakeFiles/opencv_perf_core.dir/perf/perf_addWeighted.cpp.o CMakeFiles/opencv_perf_core.dir/perf/perf_inRange.cpp.o CMakeFiles/opencv_perf_core.dir/perf/perf_merge.cpp.o CMakeFiles/opencv_perf_core.dir/perf/perf_norm.cpp.o CMakeFiles/opencv_perf_core.dir/perf/perf_math.cpp.o CMakeFiles/opencv_perf_core.dir/perf/perf_bitwise.cpp.o CMakeFiles/opencv_perf_core.dir/perf/perf_dot.cpp.o CMakeFiles/opencv_perf_core.dir/perf/perf_convertTo.cpp.o CMakeFiles/opencv_perf_core.dir/perf/perf_arithm.cpp.o -o ../../bin/opencv_perf_core -rdynamic ../../lib/libopencv_ts.so.3.0.0 ../../lib/libopencv_highgui.so.3.0.0 -ldl -lm -lpthread -lrt ../../lib/libopencv_videoio.so.3.0.0 ../../lib/libopencv_imgcodecs.so.3.0.0 ../../lib/libopencv_imgproc.so.3.0.0 ../../lib/libopencv_core.so.3.0.0 ../../lib/libopencv_hal.so.3.0.0 -Wl,-rpath,/home/jmlich/workspace/fedora/opencv/opencv-3.0.0/lib
CMakeFiles/opencv_perf_core.dir/perf/perf_sort.cpp.o: In function `sortIdxFixture_sorIdx_sorIdx_Test::TestBody()':
perf_sort.cpp:(.text._ZN33sortIdxFixture_sorIdx_sorIdx_Test8TestBodyEv+0x2a): undefined reference to `checkIppStatus()'
perf_sort.cpp:(.text._ZN33sortIdxFixture_sorIdx_sorIdx_Test8TestBodyEv+0x34): undefined reference to `checkIppStatus()'
CMakeFiles/opencv_perf_core.dir/perf/perf_sort.cpp.o: In function `sortFixture_sort_sort_Test::TestBody()':
perf_sort.cpp:(.text._ZN26sortFixture_sort_sort_Test8TestBodyEv+0x2a): undefined reference to `checkIppStatus()'
perf_sort.cpp:(.text._ZN26sortFixture_sort_sort_Test8TestBodyEv+0x34): undefined reference to `checkIppStatus()'
CMakeFiles/opencv_perf_core.dir/perf/perf_dft.cpp.o: In function `Size_MatType_FlagsType_NzeroRows_dft_dft_Test::TestBody()':
perf_dft.cpp:(.text._ZN45Size_MatType_FlagsType_NzeroRows_dft_dft_Test8TestBodyEv+0x2a): undefined reference to `checkIppStatus()'
CMakeFiles/opencv_perf_core.dir/perf/perf_dft.cpp.o:perf_dft.cpp:(.text._ZN45Size_MatType_FlagsType_NzeroRows_dft_dft_Test8TestBodyEv+0x34): more undefined references to `checkIppStatus()' follow
CMakeFiles/opencv_perf_core.dir/perf/perf_main.cpp.o: In function `main':
perf_main.cpp:(.text.startup.main+0x12a): undefined reference to `cvtest::ocl::dumpOpenCLDevice()'
CMakeFiles/opencv_perf_core.dir/perf/perf_mat.cpp.o: In function `Size_MatType_Mat_Clone_Mat_Clone_Test::TestBody()':
perf_mat.cpp:(.text._ZN37Size_MatType_Mat_Clone_Mat_Clone_Test8TestBodyEv+0x2a): undefined reference to `checkIppStatus()'
perf_mat.cpp:(.text._ZN37Size_MatType_Mat_Clone_Mat_Clone_Test8TestBodyEv+0x34): undefined reference to `checkIppStatus()'
CMakeFiles/opencv_perf_core.dir/perf/perf_mat.cpp.o: In function `Size_MatType_Mat_Clone_Roi_Mat_Clone_Roi_Test::TestBody()':
perf_mat.cpp:(.text._ZN45Size_MatType_Mat_Clone_Roi_Mat_Clone_Roi_Test8TestBodyEv+0x2a): undefined reference to `checkIppStatus()'
perf_mat.cpp:(.text._ZN45Size_MatType_Mat_Clone_Roi_Mat_Clone_Roi_Test8TestBodyEv+0x34): undefined reference to `checkIppStatus()'
CMakeFiles/opencv_perf_core.dir/perf/perf_mat.cpp.o: In function `Size_MatType_Mat_Eye_Mat_Eye_Test::TestBody()':
perf_mat.cpp:(.text._ZN33Size_MatType_Mat_Eye_Mat_Eye_Test8TestBodyEv+0x2a): undefined reference to `checkIppStatus()'
CMakeFiles/opencv_perf_core.dir/perf/perf_mat.cpp.o:perf_mat.cpp:(.text._ZN33Size_MatType_Mat_Eye_Mat_Eye_Test8TestBodyEv+0x34): more undefined references to `checkIppStatus()' follow
../../lib/libopencv_core.so.3.0.0: undefined reference to `cv::hal::LU'
../../lib/libopencv_core.so.3.0.0: undefined reference to `cv::hal::normHamming(unsigned char const*, int, int)'
../../lib/libopencv_core.so.3.0.0: undefined reference to `cv::hal::sqrt(double const*, double*, int)'
../../lib/libopencv_core.so.3.0.0: undefined reference to `cv::hal::log(float const*, float*, int)'
../../lib/libopencv_core.so.3.0.0: undefined reference to `cv::hal::Cholesky(double*, unsigned long, int, double*, unsigned long, int)'
../../lib/libopencv_core.so.3.0.0: undefined reference to `cv::hal::invSqrt(double const*, double*, int)'
../../lib/libopencv_core.so.3.0.0: undefined reference to `cv::hal::normHamming(unsigned char const*, unsigned char const*, int)'
../../lib/libopencv_core.so.3.0.0: undefined reference to `cv::hal::magnitude(double const*, double const*, double*, int)'
../../lib/libopencv_core.so.3.0.0: undefined reference to `cv::hal::exp(double const*, double*, int)'
../../lib/libopencv_core.so.3.0.0: undefined reference to `cv::hal::LU'
../../lib/libopencv_core.so.3.0.0: undefined reference to `cv::hal::fastAtan2(float const*, float const*, float*, int, bool)'
../../lib/libopencv_core.so.3.0.0: undefined reference to `cv::hal::sqrt(float const*, float*, int)'
../../lib/libopencv_core.so.3.0.0: undefined reference to `cv::hal::normHamming(unsigned char const*, int)'
../../lib/libopencv_core.so.3.0.0: undefined reference to `cv::hal::normHamming(unsigned char const*, unsigned char const*, int, int)'
../../lib/libopencv_core.so.3.0.0: undefined reference to `cv::hal::magnitude(float const*, float const*, float*, int)'
../../lib/libopencv_core.so.3.0.0: undefined reference to `cv::hal::log(double const*, double*, int)'
../../lib/libopencv_core.so.3.0.0: undefined reference to `cv::hal::invSqrt(float const*, float*, int)'
../../lib/libopencv_core.so.3.0.0: undefined reference to `cv::hal::exp(float const*, float*, int)'
../../lib/libopencv_core.so.3.0.0: undefined reference to `cv::hal::Cholesky(float*, unsigned long, int, float*, unsigned long, int)'
collect2: error: ld returned 1 exit status
modules/core/CMakeFiles/opencv_perf_core.dir/build.make:767: recipe for target 'bin/opencv_perf_core' failed
make2: * [bin/opencv_perf_core] Error 1
make2: Leaving directory '/home/jmlich/workspace/fedora/opencv/opencv-3.0.0'
CMakeFiles/Makefile2:1293: recipe for target 'modules/core/CMakeFiles/opencv_perf_core.dir/all' failed
make1: [modules/core/CMakeFiles/opencv_perf_core.dir/all] Error 2
make1: Leaving directory '/home/jmlich/workspace/fedora/opencv/opencv-3.0.0'
Makefile:136: recipe for target 'all' failed
make: ** [all] Error 2
History
Updated by Maksim Shabunin almost 10 years ago
I've successfully built OpenCV withou IPPICV support. Please, try to make clean build. Provide some additional information about your config if this error occured again (cmake output).
Also, it is recommeded to build out-of-source:
cmake ../opencv -DWITH_IPP=OFF
- Status changed from New to Incomplete
- Priority changed from Normal to Low
- Assignee set to Maksim Shabunin
- Category set to build/install
- Target version changed from 3.0 to 3.1
Updated by Jozef Mlich almost 10 years ago
I am sorry for false alarm. I was trying to compile ts and hal module as shared library. It seems it doesn't work without IPP library.
- Status changed from Incomplete to Cancelled
- Assignee deleted (
Maksim Shabunin) - Target version changed from 3.1 to 3.0