网站大量收购独家精品文档,联系QQ:2885784924

嵌入式系统电子课件-5.5 Linux库.pptx

嵌入式系统电子课件-5.5 Linux库.pptx

此“教育”领域文档为创作者个人分享资料,不作为权威性指导和指引,仅供参考
  1. 1、本文档共66页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

Linux库

概述库操作工具Linux下创建静态库Linux下创建共享inux下创建和使用库05Linux下创建动态链接库★★★★

概述库的概念:库就是可以被多个软件项目使用的代码集。1使用库可以节约编程人员大量的时间库是代码重用思想的体现。

库分类静态库,是在执行程序运行前就已经加入到执行码中,在物理上成为执行程序的一部分。共享库,是在执行程序启动时加载到执行程序中,可以被多个执行程序共享使用。动态加载库,其实并不是一种真正的库类型,应该是一种库的使用技术,应用程序可以在运行过程中随时加载和使用库。

库兼容性库兼容性是指在库的多个修订版本间保持稳定一致的变量、数据结构、公共数据接口和总体功能。兼容性的重要意义libc5--libc6

导致库不兼容的原因导出函数接口发生变化增加了新的函数接口函数功能与最初的规定相比发生了变化库中的数据结构发生了变化增加了导出的数据结构

保证库向后兼容的方法给增加到库中的函数使用新名字,而不是改变现有函数或者改变它们的行为。只向现有数据结构的末尾增加数据项,而且让新增加的数据项不是可选的就是在库内部初始化不要扩大数组中使用的数据结构

命名和编号约定所有库都以lib开头。文件名以.a结尾的是静态库,以.so结尾的是共享库。以_g结尾的库是调试库,它们编入了特殊的符号和功能,能够增加对采用了这种库的程序的调试能力。

共享库库名程约定每个共享库都有一个特定的so名(soname),其组成如下:?lib??+??库名??+??.so??+??.version

???|???????|??????|___________|

??前缀????库名????????????后缀

在文件系统中,so名是一个指向实名的符号链接。

共享库库名程约定(续)每个共享库也有一个实名,其真正包含有库的代码,组成如下:

??so名?+??.???+??子版本号?+?.?+?发布号(最后的句点和发布号是可选项。)另外,共享库还有一个名称,一般用于编译连接,称为连名(linker?name),它可以被看作是没有任何版本号的so名。

共享库库名程约定(续)看下面的例子:在以上信息中:liblvm-10.so.1.0是共享库的实名(realname)liblvm-10.so.1是共享库so名(soname)Liblvm-10.so?则是连接名(linker?name)

常用库库头文件 描述libc.so无 标准C库libdb.sodb.h 数据库库libm.somath.h 数学库libpthread.sopthread.h 多线程库libz.so zlib.h 压缩例程库libvga.sovga.h底层图形库libcom_err.socom_err.h出错处理库libdl.so dlfcn.h 动态加载库

库操作工具2库操作工具:创建、维护、管理编程库的一些工具。nm命令ar命令ldd命令环境变量和配置文件

nm命令用途:列出编入目标文件或二进制文件的所有符号。查看程序调用什么函数查看一个给定的库或者目标文件是否提供了所需的函数。举例:查看c标准库导出符号表。nm/lib/libc.so.6

ar命令用途:用来操作高度结构化的归档文件。该命令最常用来创建静态库。举例:建立静态库arrclibmy.afile1.ofile2.o…

ldd命令用途:列出为程序正常运行所需要的共享库。举例:查看邮件客户端程序需要的共享库ldd/usr/bin/mutt

环境变量和配置文件动态链接/加载器ld.so使用两个途径加载库:$LD_LIBRARY_PATH:是一个由冒号分隔的目录清单,包含了运行时的共享库,可以指示ld.so到何处有哪些信誉好的足球投注网站没有保存在标准位置的库。保存库路径的文件:/etc/ld.so.conf

linux下创建静态库3静态库可以认为是一些目标代码的集合。按照习惯,一般以“.a”做为文件后缀名。使用ar(archiver)命令可以创建静态库。因为共享库有着更大的优势,静态库已经不被经常使用。但静态库使用简单,仍有使用的余地,并会一直存在。

编译生成.o文件静态库创建方法生成archive文件libname.ag++-cfile1.cppfile2.cpp…arrclibname.afile1.ofile2.o…把静态库拷贝到系统默认库路径下(可选)cplibname.a/lib

链接可执行文件使用静态库g++-omyappmyapp.cpplibname.ag++-omyappmyapp.cpp-lname

静态库源文件:静态库举例://-----------a.cpp---------------#includecstdiointa(in

文档评论(0)

yzs890305 + 关注
实名认证
内容提供者

计算机二级持证人

该用户很懒,什么也没介绍

领域认证该用户于2024年11月02日上传了计算机二级

1亿VIP精品文档

相关文档