ROS编程中如何配置来调⽤外部的动态链接库
(.so⽂件)
在ubuntu下对ROS进⾏编程很经常的会⽤到动态链接库的调⽤,⽽ROS中的编译系统为catkin_make,和常规的CMake略有不同,具体不同点可参考这篇博客(),这就需要正确配置⽂件,以便编译系统到你引⽤的库和头⽂件。
总的来说其实很简单,下⾯将列举详细步骤和实例。
⽐如我需要引⽤⼀个动态链接库名字为libRobotBus.so。
与其对应的头⽂件有:
BytesObject.h
Common.h
DataObject.h
MessageBlock.h
MessageSerializable.h
MotorID.h
RobotMessage.h
RobotSession.h
1.将动态链接库(so⽂件)以及对应的头⽂件都保存到某⼀个⽂件夹.
cmake如何使用这⾥我直接将其保存在我的⼯作空间的库⽂件夹中(include/test_so),我的⼯作空间(3_so_test_ws)的⽂件树如下所⽰:
└── src
├── -> /opt/ros/indigo/share/catkin/ake
└── test_so
├──
├── ~
├── include
│  └── test_so
│      ├── BytesObject.h
│      ├── Common.h
│      ├── DataObject.h
│      ├── libRobotBus.so
│      ├── MessageBlock.h
│      ├── MessageSerializable.h
│      ├── MotorID.h
│      ├── RobotMessage.h
│      └── RobotSession.h
├── l
└── src
├── talker.cpp
└── talker.cpp~
2.修改⽂件。
在⽂件中,我们⾸先需要把这个动态链接库的绝对⽂件路径告诉编译器,这⾥增加的语句是:
include_directories(/home/shawn/ipal_files/3_so_test_ws/src/test_so/include/test_so)
然后使⽤target_link_libraries函数来指定可执⾏⽂件链接的库。这个要⽤在add_executable()后⾯,具体为:target_link_libraries(talker ${catkin_LIBRARIES} RobotBus)
这⾥编译系统默认的就是so⽂件,所以只需要添加RobotBus就可以了。
⾄此已经完成了动态链接库的配置,编译已经可以通过了,⽽且可以⾃由调⽤库中的对象及函数了。