静态库,动态库的创建和使用

动态库,静态库

静态库:

简单的说,静态库就是在链接阶段会加载到可执行程序的库,从而生成的可执行程序可以单独的执行。
windows下的静态库一般命名为:xxx.lib
Linux下的静态库一般命名为:xxx.a

动态库:

相反,动态库不会加载到可执行程序,因此依赖于动态库的可执行程序需要动态库的支持才能运行。
windows下的动态库一般命名为:xxx.dll
Linux下的动态库一般命名为:xxx.so

举个例子:
比如要跑某个软件,从网上找了软件包后,发现运行时提示缺少.dll文件,其实就是缺少可执行程序需要的动态库,这个时候你可以在网上找到所需的.dll文件然后拷贝到指定目录,软件就能运行了!
在这里插入图片描述
如何创建动态库,静态库(使用cmake创建CMakeLists.txt文件):

SET(SRC printHello.cpp)
ADD_LIBRARY(printHello STATIC ${SRC}) # 生成静态库.a

SET_TARGET_PROPERTIES(printHello PROPERTIES OUTPUT_NAME "print")
SET_TARGET_PROPERTIES(printHello PROPERTIES CLEAN_DIRECT_OUTPUT 1)

ADD_LIBRARY(Hello SHARED ${SRC}) # 生成动态库.so

SET_TARGET_PROPERTIES(Hello PROPERTIES OUTPUT_NAME "print")
SET_TARGET_PROPERTIES(Hello PROPERTIES CLEAN_DIRECT_OUTPUT 1)

INSTALL (FILES printHello.h DESTINATION include/print) #安装头文件
INSTALL (TARGETS printHello Hello LIBRARY DESTINATION lib ARCHIVE DESTINATION lib) #TARGETS表示安装库文件

安装后就可以在指定目录找到自己创建的库文件。
如何使用:

INCLUDE_DIRECTORIES(/usr/include/print) # 添加头文件搜索路径
TARGET_LINK_LIBRARIES(目标文件 libprint.so) #链接动态库
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

huafeng88

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值