在X3派开发板上编译c/c++代码,出现库文件找不到

用户您好,请详细描述您所遇到的问题:

  1. 系统软件版本: (通过 cat /etc/version 获得):X3派开发板,已经安装了TogetherROS功能包,并且测试成功了,版本为:

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

gobject-introspection/focal-updates 1.64.1-1~ubuntu20.04.1 arm64

libdbix-class-introspectablem2m-perl/focal 0.001002-1 all

libdbix-introspector-perl/focal 0.001005-1 all

libglib-object-introspection-perl/focal,now 0.048-2build1 arm64 [installed,automatic]

libmatroska-dev/focal 1.5.2-3build1 arm64

libmatroska6v5/focal 1.5.2-3build1 arm64

masakari-introspective-instance-monitor/focal-updates 9.0.0-0ubuntu0.20.04.1 all

python3-astroscrappy/focal 1.0.8-1build2 arm64

ruby-gobject-introspection/focal 3.4.1-2build1 arm64

ruby-introspection/focal 0.0.4-1 all

tros-hobot-audio/unknown 1.1.5 arm64

tros-orb-slam3/unknown 1.0.6 arm64

tros-performance-test/unknown 1.0.0 arm64

tros/unknown,now 1.1.5 arm64 [installed]

root@ubuntu:/home/sunrise/test04# cat /etc/version

x3_ubuntu_v1.1.5

并且在X3派开发板上已经测试成功:运行“Hello World”的例子,如下:

启动两个终端,均ssh登陆至旭日X3派

第一个终端运行

source /opt/tros/local_setup.bash

ros2 run examples_rclcpp_minimal_subscriber subscriber_member_function

第二个终端运行

source /opt/tros/local_setup.bash

ros2 run examples_rclcpp_minimal_publisher publisher_member_function

  1. 问题涉及的技术领域: (硬件、操作系统、驱动、其他) :

问题是:我在我的程序中引用了hobot_sensors-develop\hobot_usb_cam里面的两个文件:hobot_usb_cam.hpp和hobot_usb_cam.cpp,在CMakeLists.txt中包含了

这两个代码文件用到的头文件和库文件,ARGET_LINK_LIBRARIES(test04 spcdev opencv_world pthread rclcpp sensor_msgs hbm_img_msgs yaml_cpp_vendor)

现在编译通过了,链接的时候出现找不到库文件的错误,如下:

root@ubuntu:/home/sunrise/test04/build# make

[ 25%] Linking CXX executable test04

/usr/bin/ld: cannot find -lrclcpp

/usr/bin/ld: cannot find -lsensor_msgs

/usr/bin/ld: cannot find -lhbm_img_msgs

/usr/bin/ld: cannot find -lyaml_cpp_vendor

请问我还需要执行哪些命令或者安装哪些开发包,才能在X3派开发板上获得这些需要的库文件,非常感谢!

  1. 问题描述:(尽可能详细的描述在进行什么功能的开发或者测试,发现了什么问题,问题现象,并且提供预期的结果)

  2. 复现概率:(必现、高、中、低,并描述大致的概率数值) 已进行的排查措施、分析及结果:

  3. 硬件问题先排查供电和时钟

  4. 驱动问题先排查外设的供电、复位和时钟

  5. 功能异常,先排查一下是不是运行的代码和demo存在差异,修改不多的情况下直接用对比软件先对比

  6. 提供必要的问题日志:

  7. 软件上是否有做自定义修改:

我已经执行了/opt/tros目录下的全部的.bash后缀的文件,以及后缀为.sh的文件,但是,我还是找不到库文件啊。不知道我还需要操作哪些命令,非常感谢!

您好,请问编译前您有source /opt/tros/local_setup.bash这个操作吗?

我是在我自己的例子程序中调用/hobot_sensors-develop/里面的例子代码的,使用CMakeLists.txt文件进行编译配置的,但是,我编译完成后进行链接的时候,就一直找不到需要的库文件,然后我按照Hobot_USB_CAM的文档进行编译命令:colcon build --packages-select hobot_usb_cam ,这个能成功,我不知道我需要在CMakeLists.txt中如何写这个库文件和头文件的路径包含关系?

下面是我的CMakeLists.txt文件内容:

cmake_minimum_required(VERSION 3.0.0)

project(test04 LANGUAGES CXX C)

#ADD_COMPILE_OPTIONS(-Wall -Wextra -Wpedantic)

# Default to C99

if(NOT CMAKE_C_STANDARD)

set(CMAKE_C_STANDARD 99)

endif()

# Default to C++14

if(NOT CMAKE_CXX_STANDARD)

set(CMAKE_CXX_STANDARD 14)

endif()

#include(CTest)

#enable_testing()

set(BOOST_THREAD_LIBRARY boost_thread -pthread)

#find_package(ament_cmake REQUIRED)

#find_package(rclcpp REQUIRED)

#find_package(sensor_msgs REQUIRED)

#find_package(hbm_img_msgs REQUIRED)

#find_package(yaml_cpp_vendor REQUIRED)

INCLUDE_DIRECTORIES(SYSTEM usr/include)

INCLUDE_DIRECTORIES(SYSTEM usr/include/aarch64-linux-gnu)

INCLUDE_DIRECTORIES(BEFORE /opt/tros/include/)

INCLUDE_DIRECTORIES(BEFORE /opt/tros/opt/yaml_cpp_vendor/include/)

LINK_DIRECTORIES(BEFORE opt/tros/lib/)

LINK_DIRECTORIES(BEFORE usr/lib/aarch64-linux-gnu)

LINK_DIRECTORIES(SYSTEM usr/lib)

# add_executable(test04 ${SRC_LIST} ${HEAD_LIST})

# add_executable(test04 test04.cpp TestClass.cpp hobot_usb_cam.cpp)

add_executable(test04 test04.cpp TestClass.cpp)

set(CPACK_PROJECT_NAME ${PROJECT_NAME})

set(CPACK_PROJECT_VERSION ${PROJECT_VERSION})

include(CPack)

TARGET_LINK_LIBRARIES(test04 spcdev opencv_world pthread v4l-utils rclcpp sensor_msgs hbm_img_msgs yaml_cpp_vendor)

#TARGET_LINK_LIBRARIES(test04 spcdev avformat avcodec avutil opencv_world pthread)