当前位置:网站首页>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
边栏推荐
- 目标检测——Pytorch 利用mobilenet系列(v1,v2,v3)搭建yolov4目标检测平台
- China's high purity aluminum target market status and investment forecast report (2022 Edition)
- 优秀的软件测试人员,都具备这些能力
- 3. File operation 3-with
- 【MySQL】数据库的存储过程与存储函数通关教程(完整版)
- Char to leading 0
- On the inverse order problem of 01 knapsack problem in one-dimensional state
- JVM performance tuning and practical basic theory - Part 1
- @JsonBackReference和@JsonManagedReference(解决对象中存在双向引用导致的无限递归)
- Online yaml to CSV tool
猜你喜欢
What is CSRF (Cross Site Request Forgery)?
Mobile phones and computers on the same LAN access each other, IIS settings
2022.02.13 - 238. Maximum number of "balloons"
Sublime text using ctrl+b to run another program without closing other runs
Sublime text in CONDA environment plt Show cannot pop up the problem of displaying pictures
Wincc7.5 download and installation tutorial (win10 system)
【MySQL】鎖
Synchronized solves problems caused by sharing
角色动画(Character Animation)的现状与趋势
[MySQL] lock
随机推荐
egg. JS directory structure
Colorlog结合logging打印有颜色的日志
【ROS】usb_cam相机标定
Unified ordering background interface product description Chinese garbled
JS inheritance method
Restful API design specification
Hungry for 4 years + Ali for 2 years: some conclusions and Thoughts on the road of research and development
leetcode刷题 (5.29) 哈希表
sublime text中conda环境中plt.show无法弹出显示图片的问题
Image,cv2读取图片的numpy数组的转换和尺寸resize变化
Day29-t77 & t1726-2022-02-13-don't answer by yourself
VMware virtualization cluster
Fibonacci sequence
指针进阶---指针数组,数组指针
生成器参数传入参数
JVM performance tuning and practical basic theory - Part 1
Leetcode question brushing (5.28) hash table
View computer devices in LAN
C语言双指针——经典题型
[cloud native topic -45]:kubesphere cloud Governance - Introduction and overall architecture of enterprise container platform based on kubernetes