1.下载源码

apollo下载这个就行

https://github.com/abseil/abseil-cpp/archive/20200225.2.tar.gz  

在abseil-cpp文件夹的cmake下添加一句:

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

编译指令:

cmake -DBUILD_SHARED_LIBS=ON -L CMakeLists.txt && make

安装

sudo make install

2自己功能包cmake配置文件

cmake_minimum_required(VERSION 3.0.2)
project(pro)

## Compile as C++11, supported in ROS Kinetic and newer
# add_compile_options(-std=c++11)

## Find catkin macros and libraries
## if COMPONENTS list like find_package(catkin REQUIRED COMPONENTS xyz)
## is used, also find other catkin packages
find_package(catkin REQUIRED COMPONENTS
  roscpp
  std_msgs
  rospy
)

#set(absl_DIR /usr/local/lib/cmake/absl)
find_package(absl REQUIRED PATHS /usr/local/lib/cmake/absl)
message(STATUS "Abseil version: ${absl_VERSION}")



# set(CMAKE_CXX_STANDARD 17)
# set(CMAKE_CXX_STANDARD_REQUIRED ON)
# set(CMAKE_CXX_EXTENSIONS OFF)

catkin_package(
  INCLUDE_DIRS include
  CATKIN_DEPENDS roscpp rospy std_msgs
)

include_directories(
  include
  ${catkin_INCLUDE_DIRS}
  /usr/local/include

 
)

link_directories(
  /usr/local/lib/
  /usr/local/lib/libabsl_strings_internal.so:
)

# 源代码
set(SOURCES
  ${CMAKE_CURRENT_SOURCE_DIR}/src/1.cpp

)

set(HDRS
  ${CMAKE_CURRENT_SOURCE_DIR}/include/2.h

)


add_executable(${PROJECT_NAME}_node src/main.cpp ${SOURCES})

target_link_libraries(${PROJECT_NAME}_node
  ${catkin_LIBRARIES}
  absl_base              # 基础库
  absl_strings           # 字符串处理
  absl_synchronization   # 线程同步
  absl_status            # 错误状态
  absl_raw_hash_set      # HashSet
  absl_hash              # Hash 函数
  absl_time              # 时间处理
  absl_time_zone         # 时区处理
  absl_stacktrace        # 栈追踪

)





#############
## Install ##
#############
install(TARGETS ${PROJECT_NAME}_node
  ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
  LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
  RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
)

3.可能报错

error while loading shared libraries: libabsl_hash.so: cannot open shared object file: No such file or directory
error while loading shared libraries: libabsl_synchronization.so: cannot open shared obj
ect file: No such file or directory

原因是由于/usr/local/lib这个路径不是系统的默认搜索路径,因此,找不到这个动态库.

解决方法:将/usr/local/lib路径添加到系统默认的搜索路径中
1、添加路径: sudo vim /etc/ld.so.conf
在文件末尾添加需要搜索的路径/usr/local/lib,如下:
include /etc/ld.so.conf.d/*.conf
/usr/local/lib

2、使修改生效
sudo /sbin/ldconfig

参考:

安装absl、gflags、glog_absl下载-CSDN博客

https://so.csdn.net/so/search?spm=1001.2101.3001.4498&q=error%20while%20loading%20shared%20libraries%3A%20libabsl_strings_internal.so%3A%20cannot%20open%20shared%20object%20file%3A%20No%20such%20file%20or%20directory&t=&u=&urw=

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐