位置: 编程技术 - 正文

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命令)

  • 税款抵扣会计分录
  • 辞退补偿金按照什么工资算
  • 应收往来会计是做什么工作的
  • 关联企业债资比 企业所得税
  • 营业执照备案需要什么资料
  • 工伤事故赔偿项目表
  • 房产企业贷款利率
  • 购入材料用于安装工程
  • 没有销售收入可以有销售费用吗
  • 政府往来账
  • 纯外贸企业进项要转出吗为啥
  • 企业所得税研发费用100%扣除的有哪些企业
  • 养牛场增值税的税率是多?
  • 上海2018房产税实施细则
  • 这些常用的发票知识,你都知道了吗?
  • 企业发给职工的全年一次性奖金不缴纳个人所得税对吗
  • 个税零申报工资填0吗
  • 企业购车可以一次性扣除吗
  • 增值税发票复印件
  • 专用发票当月认证,下月申报抵扣可以吗
  • 鸿蒙os程序
  • 权利,许可证照印花税
  • 穿越火线下载安装
  • mac废纸篓彻底删除
  • 企业如何选择会计师事务所
  • 美金收入 如何交税
  • 计提税金及附加怎么算
  • 企业采用的会计计量基础属于什么
  • 固定资产要办理什么手续
  • Win7系统怎么禁用TDPF
  • 房地产企业按揭款到账后增值税
  • win10显示无法连接蓝牙
  • PHP:spl_object_hash()的用法_spl函数
  • php bcmul
  • 冲销去年多计提所得税怎么做
  • ppap是什么意思中文
  • PHP:pcntl_get_last_error()的用法_PCNTL函数
  • fsma32.exe进程是什么文件 fsma32是什么进程
  • 用人单位未为劳动者缴纳社会保险费
  • 企业所得税扣除限额标准
  • macos安装多版macos并存
  • 员工工资扣工作服合法吗?
  • 不构成业务的反义词
  • yolov4配置
  • php连接mysql8.0
  • 员工迟到扣款怎么处理
  • 进项税额计入其他流动资产
  • 收到多开发票的会计分录
  • mongodb morphia
  • 深入理解jvm第三版pdf百度云
  • 适用税率9%的征税行为有
  • 个人所得税部分缴款怎么算
  • 建筑劳务公司工作内容
  • 现金支付无发票怎么报销
  • 分红股份会减少吗
  • 一般纳税人退税条件
  • 绿植租赁怎么开票
  • 财政补助收入怎样申报企业所得税
  • 一次性补缴一年社保
  • 装修费未计入长期费用
  • 管理费用如何分摊到项目
  • 发票入账有效期是多长时间
  • 合作社开具免税发票流程
  • win10下mysql 5.7.17 zip压缩包版安装教程
  • win7系统突然退化
  • linux修改密码认证令牌错误
  • win10系统怎么修改字体大小
  • symtray.exe - symtray是什么进程 有何作用
  • linux添加用户命令并添加管理员
  • Percona Server 5.5.44-37.3/5.6.25-73.0 发布
  • windows更新后桌面没反应
  • nodejs怎么安装npm
  • node与js的区别
  • python怎么用
  • vue仿知乎
  • node怎么实现多线程
  • 使用image控件显示图片
  • 怎么打印纳税申报单
  • 国家税务总局全国增值税发票查验平台
  • 应交税费应交增值税已交税金是什么意思
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设