gpt4 book ai didi

带有 CMake 版本 3.5.2 的 OpenCV 与 CMake 2.X.X

转载 作者:太空宇宙 更新时间:2023-11-03 20:42:30 25 4
gpt4 key购买 nike

我无法解决我遇到的特定问题:我无法查明罪魁祸首。

系统:Jetson TX1,arm64 内核,32b 用户空间,opencv4tegra

情况:一直在使用以下方式构建项目:

find_package( OpenCV )

这已经很好地编译了。

错误:我从源代码构建并安装了 CMake 3.5.2。现在我不能再构建任何依赖 OpenCV 的项目。我收到指向找不到的链接器错误:

opencv_dep_cudart

我假设问题是在 OpenCVCConfig.cmake 中引起的,围绕这一点:

# Import target "opencv_core" for configuration "Release"
set_property(TARGET opencv_core APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
set_target_properties(opencv_core PROPERTIES
IMPORTED_LINK_INTERFACE_LIBRARIES_RELEASE "opencv_dep_cudart;opencv_dep_nppc;opencv_dep_nppi;opencv_dep_npps;dl;m;pthread;rt;tbb"
IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/lib/libopencv_core.so.2.4.12"
IMPORTED_SONAME_RELEASE "libopencv_core.so.2.4"
)

文件外:/usr/share/OpenCV/OpenCVModules-release.cmake

但是,此文件在 CMake 版本之间不会更改,因为它是一个 OpenCV 文件。所以这一定是它的处理方式。

手动将我的 CMake 恢复到 2.8.12.2 允许我再次构建。下面是一个使用 OpenCV 的 make 命令示例。注意正确的 cuda 库:

Linking CXX executable DuoInterfaceTest
/usr/local/bin/cmake -E cmake_link_script CMakeFiles/DuoInterfaceTest.dir/link.txt --verbose=1
/usr/bin/c++ -O2 -g -DNDEBUG -std=gnu++11 CMakeFiles/DuoInterfaceTest.dir/src/mainTest.cpp.o -o DuoInterfaceTest -L/home/ubuntu/catkin_ws/duointerface/lib/linux/arm -rdynamic libDuoInterface.a /usr/lib/libopencv_vstab.so.2.4.12 /usr/lib/libopencv_tegra.so.2.4.12 /usr/lib/libopencv_imuvstab.so.2.4.12 /usr/lib/libopencv_facedetect.so.2.4.12 /usr/lib/libopencv_esm_panorama.so.2.4.12 /usr/lib/libopencv_detection_based_tracker.so.2.4.12 /usr/lib/libopencv_videostab.so.2.4.12 /usr/lib/libopencv_video.so.2.4.12 /usr/lib/libopencv_ts.a /usr/lib/libopencv_superres.so.2.4.12 /usr/lib/libopencv_stitching.so.2.4.12 /usr/lib/libopencv_photo.so.2.4.12 /usr/lib/libopencv_objdetect.so.2.4.12 /usr/lib/libopencv_ml.so.2.4.12 /usr/lib/libopencv_legacy.so.2.4.12 /usr/lib/libopencv_imgproc.so.2.4.12 /usr/lib/libopencv_highgui.so.2.4.12 /usr/lib/libopencv_gpu.so.2.4.12 /usr/lib/libopencv_flann.so.2.4.12 /usr/lib/libopencv_features2d.so.2.4.12 /usr/lib/libopencv_core.so.2.4.12 /usr/lib/libopencv_contrib.so.2.4.12 /usr/lib/libopencv_calib3d.so.2.4.12 /usr/lib/libopencv_tegra.so.2.4.12 /usr/lib/libopencv_stitching.so.2.4.12 /usr/lib/libopencv_gpu.so.2.4.12 /usr/lib/libopencv_photo.so.2.4.12 /usr/lib/libopencv_legacy.so.2.4.12 /usr/local/cuda-7.0/lib/libcufft.so /usr/lib/libopencv_video.so.2.4.12 /usr/lib/libopencv_objdetect.so.2.4.12 /usr/lib/libopencv_ml.so.2.4.12 /usr/lib/libopencv_calib3d.so.2.4.12 /usr/lib/libopencv_features2d.so.2.4.12 /usr/lib/libopencv_highgui.so.2.4.12 /usr/lib/libopencv_imgproc.so.2.4.12 /usr/lib/libopencv_flann.so.2.4.12 /usr/lib/libopencv_core.so.2.4.12 /usr/local/cuda-7.0/lib/libcudart.so /usr/local/cuda-7.0/lib/libnppc.so /usr/local/cuda-7.0/lib/libnppi.so /usr/local/cuda-7.0/lib/libnpps.so -ldl -lm -lpthread -lrt -ltbb -lDUO -Wl,-rpath,/home/ubuntu/catkin_ws/duointerface/lib/linux/arm:/usr/local/cuda-7.0/lib

想法?我希望能够在我的系统上保留较新的 CMake,但对解决问题的了解还不够。如果您认为这太系统独特,我将撤回这个问题。

最佳答案

正如 Michael Mairegger 所指出的,您必须在构建目录中执行 cmake

sudo cmake .. -DCUDA_USE_STATIC_CUDA_RUNTIME=false

但我注意到的另一件事是,如果我之后尝试make,除非我执行 cmake 命令两次,否则它不会工作.

关于带有 CMake 版本 3.5.2 的 OpenCV 与 CMake 2.X.X,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37534604/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com