位置: 编程技术 - 正文

linux静态库和动态库的创建与使用(linux 静态库)

编辑:rootadmin

推荐整理分享linux静态库和动态库的创建与使用(linux 静态库),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:linux动态库依赖静态库,linux动态库的动态链接与静态链接,linux静态库和动态库的区别,linux静态库调用静态库,linux静态库动态库,linux 静态库,linux静态库和动态库后缀,linux静态库和动态库后缀,内容如对您有帮助,希望把文章链接给更多的朋友!

静态库与动态库的创建与使用

1. 基本概念

静态库:链接时,库与编译生成的 .o 文件一起打包到可执行文件中。 linux / windows 下扩展名分别为:.a / .lib动态库:链接时,不会打包到可执行文件中, 执行时会动态的加载动态库。 linux / windows 下扩展名分别为:.so / .dll

区别主要体现在:

a、可维护性。合入更新。合入动态库的更新,只要替换库即可。但合入静态则需要重新链接,生成新的可执行程序,全量更新。环境依赖。若包含静态库,编译成功后不依赖环境。动态库则存在依赖关系,需要环境中存在对应的动态库。b、大小空间利用率。若依赖相同静态库,则存在多份拷贝。可执行文件大小。静态库文件较大。c、动态库可以实现进程之间的资源共享,因此也称为共享库。

2. 静态库的创建与使用

静态库本质就是一组 .o 组成的压缩文件,扩展名为 .a / .lib复制代码代码如下:ar -crv libXXX.a mmmm.o nnnn.o

XXX 是库名,mmmm.o nnnn.o 是要打包的目标文件。crv 参数,含义分别是

c: do not warn if the library had to be createdr: replace existing or insert new file(s) into the archivev: be verbose

使用时,只需在代码中引入 头文件,链接时,指定静态库的搜索路径(-L选项)和静态库名(不需要lib前缀和.a后缀,-l选项)。

linux静态库和动态库的创建与使用(linux 静态库)

复制代码代码如下:g++ test.cpp -L../StaticLibrary -lXXX

3. 动态库

Window与Linux执行文件格式不同,在创建动态库的时候有一些差异。

Windows 下执行文件是 PE 格式,动态库需要一个DllMain函数做出初始化的入口,通常在导出函数的声明时需要有_declspec(dllexport)关键字。Linux下 gcc 编译的执行文件默认是 ELF 格式,不需要初始化入口,亦不需要函数做特别的声明,编写比较方便。linux 下动态库的命名格式同静态库,为 libXXX.so 格式。

动态库的创建,使用编译器即可,不需要像静态库一样使用专门的打包工具。

若要创建动态库,源码编译时添加 -fPIC 选项,链接时添加 -shared 选项。复制代码代码如下:g++ -fPIC -shared -o libXXX.so xxx.cpp

用法同静态库,复制代码代码如下:g++ test.cpp -L../DynamicLibrary -lXXX

只是需要设置下搜索路径。默认搜索路径:/lib/, /usr/lib。

设置搜索路径:

编辑 /etc/ld.so.conf,设置搜索路径运行 ldconfig ,重建 /etc/ld.so.cache 文件。设置生效。4. 相关工具ldd 查看程序依赖的共享库(动态库)复制代码代码如下:gcc / g++ 参数 -I(大写 'i'),-L(大写'l'),-l(小写'L')

1、 -I(大写 'i') 头文件目录2、-L(大写'l') 库目录3、-l(小写'L') 库名 大写是目录,小写是库。

linux安装自定义字体的方法 1、修改字体配置文件(需要Root权限),将需要添加的字体添加入列表复制代码代码如下:sudogedit/etc/fonts/fonts.conf复制代码代码如下:!--Fontdirectorylist--dir/usr/sh

做linux计划任务的步骤 一次性计划任务的安排:at:安排作业在某一时刻执行一次(一般都是用它)batch:安排作业在系统负载不重时执行一次第一步:#serviceatdstart开启一次性

linux查看磁盘挂载的三种方法 第一种方法:使用df命令,例如:复制代码代码如下:orientalson:/home#dfFilesystem1K-blocksUsedAvailableUse%Mountedon/dev/sda%/udev%/dev/dev/m

标签: linux 静态库

本文链接地址:https://www.jiuchutong.com/biancheng/357010.html 转载请保留说明!

上一篇:mingw仿linux开发环境详解(linux仿mac)

下一篇:linux安装自定义字体的方法(自定义linux命令)

  • 建筑业购买材料计入什么科目
  • 施工项目预缴税率是多少
  • 股东分红交税税率
  • 什么是银行税贷产品
  • 金蝶软件中怎么登记应该税费
  • 费用计入管理费用与销售费用的区别
  • 制造费用多结转了下月如何调整
  • 免抵退的意思
  • 苗木种植发票免增值税吗
  • 个人与公司交的税怎么算
  • 个税反推税前工资速算
  • 设置会计科目的步骤
  • 融资融券与普通证券交易的区别体现在
  • 员工劳动保险赔多少钱
  • 存货取得长期股权投资
  • 劳保费用可以开专票吗
  • 费用转利润分录怎么做?
  • 补缴去年地税社保的会计分录怎么写?
  • 企业所得税税前扣除异常
  • 开加工费的发票该如何抵扣?
  • 出口退税信息系统
  • 股票红利税如何征收
  • 留抵进项税额可以挂在转出未交增值税吗
  • 小微企业发放工资做账
  • 企业购买原材料生产时企业还没有赚到钱
  • 研发费用的
  • 申报的国家资助的一个项目如何进行账务处理?
  • 企业整体资产转让增值税
  • 企业非独立法人是什么意思
  • 本期应付而未付工资挂账处理?
  • 培训费开发票明细为会议费如何做账?
  • win11dns电脑服务器未响应如何处理
  • win 10动态锁是什么
  • 背书人账户名称填什么
  • 主合同变更对保险的影响
  • 无偿赠送产品如何处理
  • php网站架设
  • macos big sur 电池
  • linux命令tar zcvf
  • 家具折旧费是什么意思
  • 英国布莱顿霍夫怎么样
  • 柏林亚历山大广场1980
  • codeigniter3中文手册
  • php第三方包
  • 软件是无形的,可见的物理实体
  • html+javascript
  • Midjourney之外21款免费的AI Image画图网站集合
  • php读取文件内容的方法和函数
  • 小规模纳税人什么意思
  • 预付卡做账吗
  • mongodb备份策略
  • 初学者应该看什么书
  • 长期待摊费用计提摊销的会计分录
  • 负数发票是可以抵扣吗
  • 税费计提多了怎么冲减
  • 员工辞退补偿金计算
  • 政府专项资金补助计入什么科目
  • 预付卡销售和充值可以报销吗
  • 其他应付款不用还了怎么处理
  • 党费结余如何计算
  • 成本核算方法是移动加权平均法吗
  • 房租的发票没有收到,账务处理
  • 股东投资设备入帐与购买设备入帐的区别
  • 企业改制后如何管理
  • Navicat for MySQL定时备份数据库及数据恢复详解
  • MAC怎么将单独一个应用静音
  • fedora win10
  • win10系统休眠唤醒屏幕变大怎么办
  • centos直接进入命令行
  • win7应用程序无法正常启动
  • win7系统如何修改ip地址
  • kmswin7激活步骤
  • win7开机提示重启怎么办
  • js拖动图片
  • 深入理解ffmpeg pdf
  • python添加图片
  • 编写批处理
  • javascript面向对象编程指南
  • 内蒙古税务局电子发票查询
  • 国税增值税申报怎么记账凭证填写
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设