ubuntu 生成动态库及使用

文件结构

其中,libtask_handle.so是自己生成的库文件,在调用时,CMakeLists.txt写法如下:

cmake_minimum_required(VERSION 3.16)
project(task_handle)

set(CMAKE_CXX_STANDARD 17)

include_directories(include)

add_executable(main main.cpp)
target_link_libraries(main ${PROJECT_SOURCE_DIR}/libtask_handle.so)

即使库文件在当前文件夹下,但不在系统路径中,所以必须加上绝对路径或使用

${PROJECT_SOURCE_DIR}代表源文件所在目录,也是当前项目的根目录

此外,库对应的文件的目录也必须给出,使用include_directories

在运行时,链接不到动态库,需将动态库路径添加到变量LD_LIBRARY_PATH,

临时, 终端命令 export LD_LIBRAY_PATH= /my/lib/:${LD_LIBRARY_PATH}

永久, 在.bashrc下添加 export LD_LIBRAY_PATH= /my/lib/:${LD_LIBRARY_PATH}

原理:

为什么修改LD_LIBRARY_PATH呢
因为运行时动态库的搜索路径的先后顺序是:
1.编译目标代码时指定的动态库搜索路径;
2.环境变量LD_LIBRARY_PATH指定的动态库搜索路径;
3.配置文件/etc/ld.so.conf中指定的动态库搜索路径;
4.默认的动态库搜索路径/lib和/usr/lib;

2.再看下库生成

cmakelist.txt的写法

cmake_minimum_required(VERSION 3.16)
project(task_handle)

set(CMAKE_CXX_STANDARD 17)


add_library(task_handle SHARED task_handle.cpp task_handle.h)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值