在Ubuntu18.04系统上,Ros项目编译后,可执行文件找不到

问题描述:

  在学习Ros系统的过程中,使用c++语言编写项目之后需要对项目进行编译才能运行。有时候会出现这种情况:使用source指令导入环境变量,但执行rosrun指令运行就报错

zg@zg-virtual-machine:~/Project/Receive_lidar$ source ./devel/setup.bash 
zg@zg-virtual-machine:~/Project/Receive_lidar$ rosrun lidar_test lidarTest_node
[rosrun] Couldn't find executable named lidarTest_node below /home/zg/Project/Receive_lidar/src/lidar_test

原因分析:

  这是由于项目编译之后,可执行文件不在devel/lib/your_project_name路径下,我们可以来到devel目录下,使用查找功能查找对应的可执行文件名,我的项目编译完后,可执行文件落在了build路径下(大多数都是这种情况吧)
在这里插入图片描述


解决方案:

  查阅过相关问题的解决办法,有的说是包下面的CMakeLists.txt文件需要加上catkin_package()就可以,有的说需要将catkin_package()放在add_executable之前,我试过了都没效果
  最终的解决办法是,设定生成路径,在CMakeLists.txt文件里添加以下指令即可,位置任意:

set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CATKIN_DEVEL_PREFIX}/lib/${PROJECT_NAME})

  最终我的CMakeLists.txt内容如下,可供参考:

cmake_minimum_required(VERSION 3.0.2)
project(lidar_test)

find_package(catkin REQUIRED COMPONENTS
roscpp
std_msgs
)
find_package(PCL 1.9.1 REQUIRED)
 
include_directories(${PCL_INCLUDE_DIRS})
link_directories(${PCL_LIBRARY_DIRS})
add_definitions(${PCL_DEFINITIONS})
# target_link_libraries(lidarTest_node ${PCL_LIBRARIES})

# 指定可执行文件生成在devel目录下
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CATKIN_DEVEL_PREFIX}/lib/${PROJECT_NAME})
catkin_package(
#  INCLUDE_DIRS include
#  LIBRARIES lidar_test
#  CATKIN_DEPENDS roscpp std_msgs
#  DEPENDS system_lib
)
add_executable(lidarTest_node src/lidarTest_node.cpp)
# 如果依赖多个库,需按照以下格式,将多个库并列排开,如${catkin_LIBRARIES} ${PCL_LIBRARIES}
# 若分成多句target_link_libraries,如:target_link_libraries(lidarTest_node ${catkin_LIBRARIES})
# target_link_libraries(lidarTest_node ${PCL_LIBRARIES})会报错
target_link_libraries(lidarTest_node ${catkin_LIBRARIES} ${PCL_LIBRARIES})


###########
## Build ##
###########

## Specify additional locations of header files
## Your package locations should be listed before other locations
include_directories(
# include
  ${catkin_INCLUDE_DIRS}
)

  执行编译,在对应目录下可查看到对应的可执行文件,完结撒花。
在这里插入图片描述

zg@zg-virtual-machine:~/Project/Receive_lidar$ rosrun lidar_test lidarTest_node  

  因为没有连接雷达,没有订阅到相关话题,所以看不到数据输出

  • 10
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值