我无法解决我遇到的一个特殊问题:我无法查明罪魁祸首.
系统: Jetson TX1,arm64内核,32b用户空间,opencv4tegra
情况:使用以下方式构建项目:
find_package( OpenCV )
Run Code Online (Sandbox Code Playgroud)
这已经很好地编译了.
故障:我从源码构建并安装了CMake 3.5.2.现在我不再构建任何依赖OpenCV的项目了.我收到了点找不到的链接器错误:
opencv_dep_cudart
Run Code Online (Sandbox Code Playgroud)
我假设问题是在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"
)
Run Code Online (Sandbox Code Playgroud)
出文件: /usr/share/OpenCV/OpenCVModules-release.cmake
但是,此文件在CMake版本之间不会更改,因为它是OpenCV文件.所以这必须是它的处理方式.
手动将我的CMake恢复到2.8.12.2允许我再次构建.以下是使用OpenCV的make命令的示例.注意正确的cuda libs:
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 …Run Code Online (Sandbox Code Playgroud)