当前位置:网站首页>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
边栏推荐
- Research and investment forecast report of citronellol industry in China (2022 Edition)
- 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
- 【刷题】牛客网面试必刷TOP101
- Deep analysis of C language data storage in memory
- Beijing invitation media
- Colorlog结合logging打印有颜色的日志
- On the inverse order problem of 01 knapsack problem in one-dimensional state
- 2022 Inner Mongolia latest water conservancy and hydropower construction safety officer simulation examination questions and answers
- The network model established by torch is displayed by torch viz
- hutool优雅解析URL链接并获取参数
猜你喜欢

What is CSRF (Cross Site Request Forgery)?

synchronized 解决共享带来的问题

PLT in Matplotlib tight_ layout()

Configuring OSPF load sharing for Huawei devices

Visual implementation and inspection of visdom

Beijing invitation media

Sort according to a number in a string in a column of CSV file

sublime text没关闭其他运行就使用CTRL+b运行另外的程序问题

Sublime text using ctrl+b to run another program without closing other runs

Summary of phased use of sonic one-stop open source distributed cluster cloud real machine test platform
随机推荐
电脑清理,删除的系统文件
[brush questions] top101 must be brushed in the interview of niuke.com
深度剖析C语言数据在内存中的存储
JVM performance tuning and practical basic theory - Part 1
On the inverse order problem of 01 knapsack problem in one-dimensional state
China vanadium battery Market Research and future prospects report (2022 Edition)
MySQL learning record 11jdbcstatement object, SQL injection problem and Preparedstatement object
leetcode刷题 (5.29) 哈希表
JS inheritance method
[secretly kill little partner pytorch20 days -day01- example of structured data modeling process]
Day29-t77 & t1726-2022-02-13-don't answer by yourself
[MySQL] database stored procedure and storage function clearance tutorial (full version)
@JsonBackReference和@JsonManagedReference(解决对象中存在双向引用导致的无限递归)
pcd转ply后在meshlab无法打开,提示 Error details: Unespected eof
visdom可视化实现与检查介绍
Leetcode skimming (5.29) hash table
Synchronized solves problems caused by sharing
Research Report on supply and demand and development prospects of China's high purity aluminum market (2022 Edition)
Online yaml to CSV tool
IoT -- 解读物联网四层架构