【记录】ubuntu20.04安装absl库
·
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
参考:
更多推荐

所有评论(0)