我使用K8055板进行了编码,该板需要libusb和opencv作为快速的“ proc”。我已经使用apt install libusb-dev安装了libusb-dev(ubuntu 18.04)。我可以通过以下方式构建项目,而不会出现任何问题:
g++ -c main.cpp -o main.o
g++ -o REACS main.o -lk8055 -lusb -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_ml -lopencv_video -lopencv_features2d -lopencv_calib3d -lopencv_objdetect -lopencv_videoio -lopencv_imgcodecs -lopencv_flann
为了简化工作,我想在以后的较大项目中使用cmake,但它会产生链接错误。
我不想安装libusb-1.0.0-dev,因为我的本机生成方法运行良好,并且我想了解问题,而不是在上面放更多库。
此刻我的CMakeList.txt如下:
cmake_minimum_required(VERSION 3.10)
project(REACS)
set(CMAKE_CXX_STANDARD 14)
find_package( OpenCV REQUIRED )
find_library( LIBUSB NAMES usb usb-1.0 )
find_library( LIBK8055 NAMES k8055 )
include_directories( ${OpenCV_INCLUDE_DIRS} )
add_executable(REACS main.cpp)
target_link_libraries( REACS ${OpenCV_LIBS} ${LIBUSB} ${LIBK8055})
但是我已经尝试过find_package(libusb)和https://github.com/FreeRDP/FreeRDP/blob/master/cmake/Findlibusb-1.0.cmake的代码
使VERBOSE = 1显示:
/local_homes/andreas/CLion-2019.1.4/clion-2019.1.4/bin/cmake/linux/bin/cmake -S/home/andreas/Projekte/REACS -B/home/andreas/Projekte/REACS --check-build-system CMakeFiles/Makefile.cmake 0
/local_homes/andreas/CLion-2019.1.4/clion-2019.1.4/bin/cmake/linux/bin/cmake -E cmake_progress_start /home/andreas/Projekte/REACS/CMakeFiles /home/andreas/Projekte/REACS/CMakeFiles/progress.marks
make -f CMakeFiles/Makefile2 all
make[1]: Verzeichnis „/home/andreas/Projekte/REACS“ wird betreten
make -f CMakeFiles/REACS.dir/build.make CMakeFiles/REACS.dir/depend
make[2]: Verzeichnis „/home/andreas/Projekte/REACS“ wird betreten
cd /home/andreas/Projekte/REACS && /local_homes/andreas/CLion-2019.1.4/clion-2019.1.4/bin/cmake/linux/bin/cmake -E cmake_depends "Unix Makefiles" /home/andreas/Projekte/REACS /home/andreas/Projekte/REACS /home/andreas/Projekte/REACS /home/andreas/Projekte/REACS /home/andreas/Projekte/REACS/CMakeFiles/REACS.dir/DependInfo.cmake --color=
make[2]: Verzeichnis „/home/andreas/Projekte/REACS“ wird verlassen
make -f CMakeFiles/REACS.dir/build.make CMakeFiles/REACS.dir/build
make[2]: Verzeichnis „/home/andreas/Projekte/REACS“ wird betreten
[ 50%] Linking CXX executable REACS
/local_homes/andreas/CLion-2019.1.4/clion-2019.1.4/bin/cmake/linux/bin/cmake -E cmake_link_script CMakeFiles/REACS.dir/link.txt --verbose=1
/usr/bin/c++ -g CMakeFiles/REACS.dir/main.cpp.o -o REACS -L/usr/local/lib -Wl,-rpath,/usr/local/lib /usr/lib/x86_64-linux-gnu/libopencv_shape.so.3.2.0 /usr/lib/x86_64-linux-gnu/libopencv_stitching.so.3.2.0 /usr/lib/x86_64-linux-gnu/libopencv_superres.so.3.2.0 /usr/lib/x86_64-linux-gnu/libopencv_videostab.so.3.2.0 /usr/lib/x86_64-linux-gnu/libopencv_aruco.so.3.2.0 /usr/lib/x86_64-linux-gnu/libopencv_bgsegm.so.3.2.0 /usr/lib/x86_64-linux-gnu/libopencv_bioinspired.so.3.2.0 /usr/lib/x86_64-linux-gnu/libopencv_ccalib.so.3.2.0 /usr/lib/x86_64-linux-gnu/libopencv_datasets.so.3.2.0 /usr/lib/x86_64-linux-gnu/libopencv_dpm.so.3.2.0 /usr/lib/x86_64-linux-gnu/libopencv_face.so.3.2.0 /usr/lib/x86_64-linux-gnu/libopencv_freetype.so.3.2.0 /usr/lib/x86_64-linux-gnu/libopencv_fuzzy.so.3.2.0 /usr/lib/x86_64-linux-gnu/libopencv_hdf.so.3.2.0 /usr/lib/x86_64-linux-gnu/libopencv_line_descriptor.so.3.2.0 /usr/lib/x86_64-linux-gnu/libopencv_optflow.so.3.2.0 /usr/lib/x86_64-linux-gnu/libopencv_plot.so.3.2.0 /usr/lib/x86_64-linux-gnu/libopencv_reg.so.3.2.0 /usr/lib/x86_64-linux-gnu/libopencv_saliency.so.3.2.0 /usr/lib/x86_64-linux-gnu/libopencv_stereo.so.3.2.0 /usr/lib/x86_64-linux-gnu/libopencv_structured_light.so.3.2.0 /usr/lib/x86_64-linux-gnu/libopencv_surface_matching.so.3.2.0 /usr/lib/x86_64-linux-gnu/libopencv_text.so.3.2.0 /usr/lib/x86_64-linux-gnu/libopencv_ximgproc.so.3.2.0 /usr/lib/x86_64-linux-gnu/libopencv_xobjdetect.so.3.2.0 /usr/lib/x86_64-linux-gnu/libopencv_xphoto.so.3.2.0 -lusb -lk8055 /usr/lib/x86_64-linux-gnu/libopencv_video.so.3.2.0 /usr/lib/x86_64-linux-gnu/libopencv_viz.so.3.2.0 /usr/lib/x86_64-linux-gnu/libopencv_phase_unwrapping.so.3.2.0 /usr/lib/x86_64-linux-gnu/libopencv_rgbd.so.3.2.0 /usr/lib/x86_64-linux-gnu/libopencv_calib3d.so.3.2.0 /usr/lib/x86_64-linux-gnu/libopencv_features2d.so.3.2.0 /usr/lib/x86_64-linux-gnu/libopencv_flann.so.3.2.0 /usr/lib/x86_64-linux-gnu/libopencv_objdetect.so.3.2.0 /usr/lib/x86_64-linux-gnu/libopencv_ml.so.3.2.0 /usr/lib/x86_64-linux-gnu/libopencv_highgui.so.3.2.0 /usr/lib/x86_64-linux-gnu/libopencv_photo.so.3.2.0 /usr/lib/x86_64-linux-gnu/libopencv_videoio.so.3.2.0 /usr/lib/x86_64-linux-gnu/libopencv_imgcodecs.so.3.2.0 /usr/lib/x86_64-linux-gnu/libopencv_imgproc.so.3.2.0 /usr/lib/x86_64-linux-gnu/libopencv_core.so.3.2.0
/usr/local/lib/libk8055.so: Warnung: undefinierter Verweis auf »usb_open«
/usr/local/lib/libk8055.so: Warnung: undefinierter Verweis auf »usb_interrupt_write«
/usr/local/lib/libk8055.so: Warnung: undefinierter Verweis auf »usb_interrupt_read«
/usr/local/lib/libk8055.so: Warnung: undefinierter Verweis auf »usb_set_altinterface«
/usr/local/lib/libk8055.so: Warnung: undefinierter Verweis auf »usb_strerror«
/usr/local/lib/libk8055.so: Warnung: undefinierter Verweis auf »usb_close«
/usr/local/lib/libk8055.so: Warnung: undefinierter Verweis auf »usb_get_busses«
/usr/local/lib/libk8055.so: Warnung: undefinierter Verweis auf »usb_find_busses«
/usr/local/lib/libk8055.so: Warnung: undefinierter Verweis auf »usb_find_devices«
/usr/local/lib/libk8055.so: Warnung: undefinierter Verweis auf »usb_set_configuration«
/usr/local/lib/libk8055.so: Warnung: undefinierter Verweis auf »usb_init«
/usr/local/lib/libk8055.so: Warnung: undefinierter Verweis auf »usb_get_driver_np«
/usr/local/lib/libk8055.so: Warnung: undefinierter Verweis auf »usb_claim_interface«
/usr/local/lib/libk8055.so: Warnung: undefinierter Verweis auf »usb_detach_kernel_driver_np«
collect2: error: ld returned 1 exit status
CMakeFiles/REACS.dir/build.make:126: recipe for target 'REACS' failed
make[2]: *** [REACS] Error 1
make[2]: Verzeichnis „/home/andreas/Projekte/REACS“ wird verlassen
CMakeFiles/Makefile2:72: recipe for target 'CMakeFiles/REACS.dir/all' failed
make[1]: *** [CMakeFiles/REACS.dir/all] Error 2
make[1]: Verzeichnis „/home/andreas/Projekte/REACS“ wird verlassen
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2
您可以看到存在... gnu / libopencv_xphoto.so.3.2.0 -lusb -lk8055 /usr/lib/x86_64-linux-gnu/libopencv_video.so.3.2.0 ...在链接器命令中。 c ++是g ++的符号链接
因此,我认为它的作用与手动构建相同,但结果不同。我在做什么错了?
非常感谢。