首页 > 解决方案 > Opencv静态库无法在eclipse中链接(添加了-ldl!)

问题描述

我想在我的 c++ 程序中静态链接 opencv,这样用户就不必自己下载 opencv。

我已经尝试了互联网上的所有方法来尝试在我的 c++ 程序中使用 opencv 静态库,但它不起作用。

  1. 我已经使用 -DBUILD_SHARED_LIBS=OFF 编译了 opencv 静态库,以在 /usr/local/lib 中生成 opencv lib 文件。所有文件都有.a 扩展名。我将这些文件移动到我的程序中的一个文件夹中,并将其与 eclipse 链接到 ("${workspace_loc:/${ProjName}/opencv lib}")

  2. 我已经包含了 -ljpeg -lpng -ltiff -lzlib -lpthread -lrt -ldl -lz -lm

  3. 我放了 -static 标志

  4. 我试图链接 /usr/local/include/opencv 和 /usr/local/bin

错误消息显示了一堆代码,例如 ... sum.cpp:(.text._ZN2cv3sumERKNS_11_InputArrayE+0xb19): undefined reference to `ippicviSum_16s_C4R'

...

/home/vivian/cuda-workspace/AutoVideoAnalyze_v4/opencv lib/libdl.a(dlopen.o):在函数dlopen': (.text+0x5): undefined reference to__dlopen'/home/vivian/cuda-workspace/AutoVideoAnalyze_v4/opencv lib/libdl.a(dlclose.o)中:在函数dlclose': (.text+0x1): undefined reference to__dlclose'/home/vivian/cuda-workspace/AutoVideoAnalyze_v4/opencv lib/libdl.a(dlsym.o) 中:在函数dlsym': (.text+0x5): undefined reference to__dlsym'collect2:错误:ld 返回 1 退出状态 make:*** [AutoVideoAnalyze_v4] 错误 1

我在谷歌上尝试了许多组合和不同的方式,但没有任何效果。有没有人真的在他们的 c++ 程序上静态链接了 opencv?请问可以分享你的作品吗?

标签: c++opencv

解决方案


最后静态链接opencv我eclipse!我使用了 Opencv Cuda、IPP、ffmpeg 和许多其他库,所以还有更多库要包含!

gcc c++ linker: Libraries(-l): opencv_cudabgsegm, opencv_cudaobjdetect ,opencv_cudastereo, opencv_stitching, opencv_cudafeatures2d, opencv_superres, opencv_cudacodec, opencv_videostab, opencv_cudaoptflow, opencv_cudalegacy, opencv_cudawarping, opencv_aruco, opencv_bgsegm, opencv_bioinspired, opencv_ccalib, opencv_cvv, opencv_dnn_objdetect, opencv_dpm, opencv_face, opencv_photo, opencv_cudaimgproc, opencv_cudafilters, opencv_freetype, opencv_fuzzy, opencv_hdf, opencv_hfs, opencv_img_hash, opencv_line_descriptor, opencv_optflow, opencv_reg, opencv_rgbd, opencv_saliency, opencv_stereo, opencv_structured_light, opencv_phase_unwrapping, opencv_surface_matching, opencv_tracking, opencv_datasets, opencv_text, opencv_dnn, opencv_plot, opencv_xfeatures2d, opencv_shape, opencv_video, opencv_ml, opencv_cudaarithm,opencv_ximgproc,opencv_calib3d,opencv_features2d,opencv_highgui,opencv_videoio,opencv_flann,opencv_xobjdetect,opencv_imgcodecs,opencv_objdetect,opencv_xphoto,opencv_imgproc,opencv_core,opencv_cudev,libprotobuf,GLU,GL,gstpbutils-1.0,gstriff-1.0,gstapp-1.0,gstvideo-1.0,gstbase-1.0,gstbase-1.0 1.0、gobject-2.0、glib-2.0、avcodec、avformat、swscale、avutil、avfilter、swresample、avresample、avdevice、postproc、m、z、x264、lzma、rt、dc1394、tbb、gphoto2_port、gphoto2、xine、jpeg、 webp, png, tiff, jasper, Imath, hdf5, lept, sz, IlmImf, cudart, nppc, nppial, nppicc, nppicom, nppidei, nppif, nppig, nppim, nppist, nppisu, nppitc, npps, cublas, cufft, ippiw, ippicv、ittnotify、dl、pthreadGL,gstpbutils-1.0,gstriff-1.0,gstapp-1.0,gstvideo-1.0,gstbase-1.0,gstreamer-1.0,gobject-2.0,glib-2.0,avcodec,avformat,swscale,avutil,avfilter,swresample,avresample,avdevice, postproc, m, z, x264, lzma, rt, dc1394, tbb, gphoto2_port, gphoto2, xine, jpeg, webp, png, tiff, jasper, Imath, hdf5, lept, sz, IlmImf, cudart, nppc, nppial, nppicc, nppicom, nppidei, nppif, nppig, nppim, nppist, nppisu, nppitc, npps, cublas, cufft, ippiw, ippicv, ittnotify, dl, pthreadGL,gstpbutils-1.0,gstriff-1.0,gstapp-1.0,gstvideo-1.0,gstbase-1.0,gstreamer-1.0,gobject-2.0,glib-2.0,avcodec,avformat,swscale,avutil,avfilter,swresample,avresample,avdevice, postproc, m, z, x264, lzma, rt, dc1394, tbb, gphoto2_port, gphoto2, xine, jpeg, webp, png, tiff, jasper, Imath, hdf5, lept, sz, IlmImf, cudart, nppc, nppial, nppicc, nppicom, nppidei, nppif, nppig, nppim, nppist, nppisu, nppitc, npps, cublas, cufft, ippiw, ippicv, ittnotify, dl, pthreadnppig, nppim, nppist, nppisu, nppitc, npps, cublas, cufft, ippiw, ippicv, ittnotify, dl, pthreadnppig, nppim, nppist, nppisu, nppitc, npps, cublas, cufft, ippiw, ippicv, ittnotify, dl, pthread

库搜索路径(-L):/usr/include、/usr/lib/x86_64-linux-gnu、/usr/lib/x86_64-linux-gnu/hdf5/serial/、/usr/local/share/OpenCV/3rdparty /lib、/usr/local/cuda-9.2/lib64、/usr/local/lib

如果你想知道你需要包含什么库,你可以看下看起来像下面脚本的General配置(*在构建opencv时出现)并将脚本中的每个库都包含到你想要链接的程序中静态的opencv。

General configuration for OpenCV 3.4.2 =====================================
--   Version control:               3.4.2
-- 
--   Extra modules:
--     Location (extra):            /home/vivian/Downloads/opencv_contrib/modules
--     Version control (extra):     3.4.2
-- 
--   Platform:
--     Timestamp:                   2019-01-17T01:23:08Z
--     Host:                        Linux 4.15.0-43-generic x86_64
--     CMake:                       3.10.2
--     CMake generator:             Unix Makefiles
--     CMake build tool:            /usr/bin/make
--     Configuration:               RELEASE
-- 
--   CPU/HW features:
--     Baseline:                    SSE SSE2 SSE3
--       requested:                 SSE3
--     Dispatched code generation:  SSE4_1 SSE4_2 FP16 AVX AVX2 AVX512_SKX
--       requested:                 SSE4_1 SSE4_2 AVX FP16 AVX2 AVX512_SKX
--       SSE4_1 (3 files):          + SSSE3 SSE4_1
--       SSE4_2 (1 files):          + SSSE3 SSE4_1 POPCNT SSE4_2
--       FP16 (2 files):            + SSSE3 SSE4_1 POPCNT SSE4_2 FP16 AVX
--       AVX (5 files):             + SSSE3 SSE4_1 POPCNT SSE4_2 AVX
--       AVX2 (9 files):            + SSSE3 SSE4_1 POPCNT SSE4_2 FP16 FMA3 AVX AVX2
--       AVX512_SKX (1 files):      + SSSE3 SSE4_1 POPCNT SSE4_2 FP16 FMA3 AVX AVX2 AVX_512F AVX512_SKX
-- 
--   C/C++:
--     Built as dynamic libs?:      NO
--     C++11:                       YES
--     C++ Compiler:                /usr/bin/c++  (ver 7.3.0)
--     C++ flags (Release):         -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 -Wuninitialized -Winit-self -Wsuggest-override -Wno-narrowing -Wno-delete-non-virtual-dtor -Wno-comment -Wimplicit-fallthrough=3 -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -ffast-math -ffunction-sections -fdata-sections  -msse -msse2 -msse3 -fvisibility=hidden -fvisibility-inlines-hidden -O3 -DNDEBUG  -DNDEBUG
--     C++ flags (Debug):           -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 -Wuninitialized -Winit-self -Wsuggest-override -Wno-narrowing -Wno-delete-non-virtual-dtor -Wno-comment -Wimplicit-fallthrough=3 -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -ffast-math -ffunction-sections -fdata-sections  -msse -msse2 -msse3 -fvisibility=hidden -fvisibility-inlines-hidden -g  -O0 -DDEBUG -D_DEBUG
--     C Compiler:                  /usr/bin/cc
--     C flags (Release):           -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -Wuninitialized -Winit-self -Wno-narrowing -Wno-comment -Wimplicit-fallthrough=3 -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -ffast-math -ffunction-sections -fdata-sections  -msse -msse2 -msse3 -fvisibility=hidden -O3 -DNDEBUG  -DNDEBUG
--     C flags (Debug):             -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -Wuninitialized -Winit-self -Wno-narrowing -Wno-comment -Wimplicit-fallthrough=3 -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -ffast-math -ffunction-sections -fdata-sections  -msse -msse2 -msse3 -fvisibility=hidden -g  -O0 -DDEBUG -D_DEBUG
--     Linker flags (Release):      
--     Linker flags (Debug):        
--     ccache:                      NO
--     Precompiled headers:         NO
--     Extra dependencies:          /usr/lib/x86_64-linux-gnu/libtbb.so /usr/lib/x86_64-linux-gnu/libcuda.so /usr/lib/x86_64-linux-gnu/libnvcuvid.so Qt5::Test Qt5::Concurrent Qt5::OpenGL /usr/lib/x86_64-linux-gnu/libwebp.so /usr/lib/x86_64-linux-gnu/libpng.so /usr/lib/x86_64-linux-gnu/libtiff.so /usr/lib/x86_64-linux-gnu/libjasper.so /usr/lib/x86_64-linux-gnu/libjpeg.so /usr/lib/x86_64-linux-gnu/libImath.so /usr/lib/x86_64-linux-gnu/libIlmImf.so /usr/lib/x86_64-linux-gnu/libIex.so /usr/lib/x86_64-linux-gnu/libHalf.so /usr/lib/x86_64-linux-gnu/libIlmThread.so gstbase-1.0 gstreamer-1.0 gobject-2.0 glib-2.0 gstvideo-1.0 gstapp-1.0 gstriff-1.0 gstpbutils-1.0 dc1394 xine avformat z avcodec lzma swresample swscale avutil avresample gphoto2 gphoto2_port Qt5::Core Qt5::Gui Qt5::Widgets freetype harfbuzz /usr/lib/x86_64-linux-gnu/hdf5/serial/libhdf5.so /usr/lib/x86_64-linux-gnu/libpthread.so /usr/lib/x86_64-linux-gnu/libsz.so /usr/lib/x86_64-linux-gnu/libz.so /usr/lib/x86_64-linux-gnu/libdl.so /usr/lib/x86_64-linux-gnu/libm.so tesseract lept dl m pthread rt /usr/lib/x86_64-linux-gnu/libGL.so /usr/lib/x86_64-linux-gnu/libGLU.so cudart nppc nppial nppicc nppicom nppidei nppif nppig nppim nppist nppisu nppitc npps cublas cufft -L/usr/local/cuda-9.2/lib64
--     3rdparty dependencies:       ittnotify libprotobuf ippiw ippicv
-- 
--   OpenCV modules:
--     To be built:                 aruco bgsegm bioinspired calib3d ccalib core cudaarithm cudabgsegm cudacodec cudafeatures2d cudafilters cudaimgproc cudalegacy cudaobjdetect cudaoptflow cudastereo cudawarping cudev cvv datasets dnn dnn_objdetect dpm face features2d flann freetype fuzzy hdf hfs highgui img_hash imgcodecs imgproc java java_bindings_generator line_descriptor ml objdetect optflow phase_unwrapping photo plot python2 python3 python_bindings_generator reg rgbd saliency shape stereo stitching structured_light superres surface_matching text tracking ts video videoio videostab xfeatures2d ximgproc xobjdetect xphoto
--     Disabled:                    js world
--     Disabled by dependency:      -
--     Unavailable:                 cnn_3dobj matlab ovis sfm viz
--     Applications:                tests perf_tests apps
--     Documentation:               NO
--     Non-free algorithms:         NO
-- 
--   GUI: 
--     QT:                          YES (ver 5.9.5)
--       QT OpenGL support:         YES (Qt5::OpenGL 5.9.5)
--     GTK+:                        NO
--     OpenGL support:              YES (/usr/lib/x86_64-linux-gnu/libGL.so /usr/lib/x86_64-linux-gnu/libGLU.so)
--     VTK support:                 NO
-- 
--   Media I/O: 
--     ZLib:                        /usr/lib/x86_64-linux-gnu/libz.so (ver 1.2.11)
--     JPEG:                        /usr/lib/x86_64-linux-gnu/libjpeg.so (ver 80)
--     WEBP:                        /usr/lib/x86_64-linux-gnu/libwebp.so (ver encoder: 0x020e)
--     PNG:                         /usr/lib/x86_64-linux-gnu/libpng.so (ver 1.6.34)
--     TIFF:                        /usr/lib/x86_64-linux-gnu/libtiff.so (ver 42 / 4.0.9)
--     JPEG 2000:                   /usr/lib/x86_64-linux-gnu/libjasper.so (ver 1.900.1)
--     OpenEXR:                     /usr/lib/x86_64-linux-gnu/libImath.so /usr/lib/x86_64-linux-gnu/libIlmImf.so /usr/lib/x86_64-linux-gnu/libIex.so /usr/lib/x86_64-linux-gnu/libHalf.so /usr/lib/x86_64-linux-gnu/libIlmThread.so (ver 2.2.0)
--     HDR:                         YES
--     SUNRASTER:                   YES
--     PXM:                         YES
-- 
--   Video I/O:
--     DC1394:                      YES (ver 2.2.5)
--     FFMPEG:                      YES
--       avcodec:                   YES (ver 58.25.100)
--       avformat:                  YES (ver 58.17.103)
--       avutil:                    YES (ver 56.19.100)
--       swscale:                   YES (ver 5.2.100)
--       avresample:                YES (ver 3.7.0)
--     GStreamer:                   
--       base:                      YES (ver 1.14.1)
--       video:                     YES (ver 1.14.1)
--       app:                       YES (ver 1.14.1)
--       riff:                      YES (ver 1.14.1)
--       pbutils:                   YES (ver 1.14.1)
--     libv4l/libv4l2:              NO
--     v4l/v4l2:                    linux/videodev2.h
--     Xine:                        YES (ver 1.2.8)
--     gPhoto2:                     YES
-- 
--   Parallel framework:            TBB (ver 2017.0 interface 9107)
-- 
--   Trace:                         YES (with Intel ITT)
-- 
--   Other third-party libraries:
--     Intel IPP:                   2017.0.3 [2017.0.3]
--            at:                   /home/vivian/Downloads/opencv/build/3rdparty/ippicv/ippicv_lnx
--     Intel IPP IW:                sources (2017.0.3)
--               at:                /home/vivian/Downloads/opencv/build/3rdparty/ippicv/ippiw_lnx
--     Lapack:                      NO
--     Eigen:                       YES (ver 3.3.4)
--     Custom HAL:                  NO
--     Protobuf:                    build (3.5.1)
-- 
--   NVIDIA CUDA:                   YES (ver 9.2, CUFFT CUBLAS NVCUVID FAST_MATH)
--     NVIDIA GPU arch:             61
--     NVIDIA PTX archs:
-- 
--   OpenCL:                        YES (no extra features)
--     Include path:                /home/vivian/Downloads/opencv/3rdparty/include/opencl/1.2
--     Link libraries:              Dynamic load
-- 
--   Python 2:
--     Interpreter:                 /usr/bin/python2.7 (ver 2.7.15)
--     Libraries:                   /usr/lib/x86_64-linux-gnu/libpython2.7.so (ver 2.7.15rc1)
--     numpy:                       /home/vivian/.local/lib/python2.7/site-packages/numpy/core/include (ver 1.15.2)
--     packages path:               lib/python2.7/dist-packages
-- 
--   Python 3:
--     Interpreter:                 /usr/bin/python3 (ver 3.6.7)
--     Libraries:                   /usr/lib/x86_64-linux-gnu/libpython3.6m.so (ver 3.6.7)
--     numpy:                       /home/vivian/.local/lib/python3.6/site-packages/numpy/core/include (ver 1.15.4)
--     packages path:               lib/python3.6/dist-packages
-- 
--   Python (for build):            /usr/bin/python2.7
-- 
--   Java:                          
--     ant:                         /usr/bin/ant (ver 1.10.3)
--     JNI:                         /usr/lib/jvm/default-java/include /usr/lib/jvm/default-java/include/linux /usr/lib/jvm/default-java/include
--     Java wrappers:               YES
--     Java tests:                  YES
-- 
--   Matlab:                        NO
-- 
--   Install to:                    /usr/local


推荐阅读