错误信息 /usr/bin/ld: 找不到 -ltf2: 没有那个文件或目录 和 /usr/bin/ld: 找不到 -ltf2_ros: 没有那个文件或目录 表明链接器(ld)在尝试链接你的程序时找不到 tf2 和 tf2_ros 这两个库。这通常意味着这些库没有被正确安装在你的系统上,或者它们的安装路径没有被添加到链接器的搜索路径中。

解决步骤

确认库的安装

确保你已经安装了 tf2 和 tf2_ros 库。这些库通常是通过 ROS(Robot Operating System)安装的。 如果你使用的是 ROS 1,你可以通过以下命令安装这些库(如果它们还未安装):sudo apt-get install ros-<distro>-tf2 ros-<distro>-tf2-ros 其中 <distro> 应该替换为你使用的 ROS 发行版,如 melodic、noetic 等。

检查库文件

安装完成后,你可以使用 find 命令来查找这些库文件(通常是 .so 文件)。例如:sudo find / -name "libtf2*.so*" sudo find / -name "libtf2_ros*.so*" 这将帮助你确认库文件是否存在于你的系统中,以及它们的位置。

设置环境变量

如果库文件存在但不在标准路径下,你可能需要设置 LD_LIBRARY_PATH 环境变量来包含这些库的路径。例如:export LD_LIBRARY_PATH=/path/to/your/libs:$LD_LIBRARY_PATH 替换 /path/to/your/libs 为实际库文件所在的目录。

CMakeLists.txt 修改

确保你的 CMakeLists.txt 文件正确链接了这些库。你已经在使用 target_link_libraries,这是正确的。但确认库名是否正确,有时需要指定完整的库名(包括前缀 lib 和后缀 .so 的版本号,但通常只写基本名即可)。 确保 find_package 指令包含了 tf2 和 tf2_ros(如果它们是独立的 ROS 包)。

重新编译

清理你的构建目录(通常是 catkin_ws/build 和 catkin_ws/devel),然后重新编译整个工作空间:cd ~/catkin_ws catkin_make clean catkin_make

检查 ROS 环境

确保你的 ROS 环境已经正确设置。运行 source ~/catkin_ws/devel/setup.bash(或你的工作空间对应的路径)来设置环境变量。

如果以上步骤仍然不能解决问题,可能需要检查你的 ROS 安装是否完整或考虑重新安装 ROS 和相关库。

以上为生成回答,仅供参考~