当前位置:网站首页>ROS compilation calls the third-party dynamic library (xxx.so)
ROS compilation calls the third-party dynamic library (xxx.so)
2022-07-06 08:35:00 【Will_ Ye】
1. Problem
In the process of doing the project , Inevitable , Sometimes you need to use some third-party open source libraries , Or write your own dynamic library , Then you need to CMakeLists Add the path corresponding to these dynamic libraries , Compile .
The suffix of the dynamic library that needs to be called is generally .so
, Sometimes I will encounter something except libxxx.so
, also libxxx.so.x
and libxxx.so.x.y.z
these , Such as libzzz.so
, also libzzz.so.1
and libzzz.so.1.0.0
In the suffix .so
These figures after , In fact, it represents different versions , Used for version management , So the file name of the whole dynamic library is exquisite . such as libzzz.so.1.2.3
,lib It is a fixed representative shared library ,zzz Is the shared library name ,.so Is a fixed suffix ,1 Indicates the major version number ,2 Indicates the minor version number ,3 Indicates the release version number .
The major version number : Incompatibility between different version numbers
Sub version number : Incremental upgrade , Backward compatibility
Release number : Error correction and performance improvement corresponding to the next version , Does not affect compatibility
And the longest name libxxx.so.x.y.z
, Is the actual library file , It contains executable binary code . So you can use instructions readelf -d libzzz.so.1.2.3
Read this file .
In fact, when generating the Library , You can also directly generate only one libzzz.so
As the actual library file , It depends on the individual , The standard point is that we should do a good job in library version management .
2. Method
stay ROS Of package in , Generally, two folders are created (include and lib), Deposit .h
The header file and .so
Dynamic library files , therefore , We just put the third-party dynamic library files into lib
In the folder , Don't forget to put the relevant libxxx.so.x
and libxxx.so.x.y.z
Also put it in , No one can do without .
After the dynamic library file is placed , Revise it CMakeList That's all right.
cmake_minimum_required(VERSION 2.8.3)
SET(CMAKE_BUILD_TYPE Debug)
add_compile_options( -std=c++11)
project(gazebo_mobile_manipulator)
find_package(PCL 1.8 REQUIRED)
find_package(OpenCV REQUIRED)
find_package(catkin REQUIRED COMPONENTS
nav_msgs
roscpp
rospy
serial
tf
std_msgs
std_srvs
actionlib
actionlib_msgs
message_generation
geometry_msgs
pcl_conversions
pcl_ros
PCL
)
catkin_package(
CATKIN_DEPENDS roscpp rospy serial std_msgs message_runtime
INCLUDE_DIRS include
)
include_directories(
include
${catkin_INCLUDE_DIRS}
)
link_directories(
${catkin_LIB_DIRS} lib
)
add_executable(test src/test1.cpp)
target_link_libraries(test ${PCL_LIBRARIES} ${catkin_LIBRARIES} ${OpenCV_LIBRARIES} libzzz.so)
Pay attention to the last line , stay target_link_libraries
Inside , Just add libzzz.so
That's all right. , There is no need to add the version number that follows , adopt .so This will search for others .
then catkin_make Just compile it
边栏推荐
- Visual implementation and inspection of visdom
- [2022 广东省赛M] 拉格朗日插值 (多元函数极值 分治NTT)
- China high purity silver nitrate Market Research and investment strategy report (2022 Edition)
- 软件卸载时遇到trying to use is on a network resource that is unavailable
- vulnhub hackme: 1
- @JsonBackReference和@JsonManagedReference(解决对象中存在双向引用导致的无限递归)
- Online yaml to CSV tool
- Deep analysis of C language pointer
- 如何进行接口测试测?有哪些注意事项?保姆级解读
- [MySQL] log
猜你喜欢
2. File operation - write
MySQL learning records 12jdbc operation transactions
View computer devices in LAN
【MySQL】数据库的存储过程与存储函数通关教程(完整版)
What is CSRF (Cross Site Request Forgery)?
生成器参数传入参数
sublime text中conda环境中plt.show无法弹出显示图片的问题
2022.02.13 - NC001. Reverse linked list
Pointer advanced --- pointer array, array pointer
Image, CV2 read the conversion and size resize change of numpy array of pictures
随机推荐
[secretly kill little partner pytorch20 days -day01- example of structured data modeling process]
【刷题】牛客网面试必刷TOP101
What is CSRF (Cross Site Request Forgery)?
C语言双指针——经典题型
China high purity silver nitrate Market Research and investment strategy report (2022 Edition)
指针进阶---指针数组,数组指针
ROS编译 调用第三方动态库(xxx.so)
Bottom up - physical layer
pcd转ply后在meshlab无法打开,提示 Error details: Unespected eof
[2022 广东省赛M] 拉格朗日插值 (多元函数极值 分治NTT)
The ECU of 21 Audi q5l 45tfsi brushes is upgraded to master special adjustment, and the horsepower is safely and stably increased to 305 horsepower
Online yaml to CSV tool
sublime text中conda环境中plt.show无法弹出显示图片的问题
Double pointeur en langage C - - modèle classique
Yyds dry goods inventory three JS source code interpretation eventdispatcher
软件卸载时遇到trying to use is on a network resource that is unavailable
[MySQL] lock
PC easy to use essential software (used)
Wincc7.5 download and installation tutorial (win10 system)
2022.02.13 - NC003. Design LRU cache structure