当前位置: 首页 > news >正文

做服装网站设计书春季高考网站建设

做服装网站设计书,春季高考网站建设,服务器维护费用明细,一 一个甜品网站建设目标Linux——静态库 静态库分析一下 ar指令生成静态库静态库的使用第三方库优化一下 gcc -I(大写的i) -L -l(小写的l),头文件搜索路径,库文件搜索路径,连接库 今天我们来学习静态库的基本知识。 静态库 在了解静态库之前,我们首先来…

Linux——静态库

  • 静态库
    • 分析一下
  • ar指令生成静态库
  • 静态库的使用
    • 第三方库
    • 优化一下
  • gcc -I(大写的i) -L -l(小写的l),头文件搜索路径,库文件搜索路径,连接库

今天我们来学习静态库的基本知识。

静态库

在了解静态库之前,我们首先来回忆一下gcc的三个编译选项:

gcc -E 生成.i 文件 预处理
gcc -S 生成.s文件 编译
gcc -c 生成.o 文件 汇编

如果大家有点陌生,大家可以点击这里复习一下:

https://blog.csdn.net/qq_67693066/article/details/132868367

生成.o文件之后,我们就要进行连接,让我们的程序跑起来。我们今天的主要的部分主要集中在.o文件上。

我们首先模拟一个简单的加减场景,编写一个程序完成加减,包含完整的头文件和.c文件:
在这里插入图片描述
其中我们的Test.c是程序运行的入口,Add和Sub的头文件和.c文件为我们的Test.c服务。

然后我们编写Makefile:
在这里插入图片描述

这里注意一下 %.o : %c这个叫做模式规则,这段代码简单来说就是将后缀为.c的文件依次生成.o文件,我们将Test.c入口编写好:
在这里插入图片描述
之后make一下:
在这里插入图片描述

看到我们已经成功生成了Test可执行文件,我们运行一下来看看:
在这里插入图片描述

分析一下

我们回到Makefile:
在这里插入图片描述
我们知道Test这个执行文件依赖于Add.o,Sub.o 和 Test.c生成,我们再来想想,Test.c是我们人为写的程序的入口,意思就是,如果别人写一个程序的入口,只要他可以拿到Add.o 和Sub.o 就可以运行程序。那为什么我不把Add.o和Sub.o打包?如果别人要用这个程序,我直接把这个包发给他就可以用了,这不是很方便嘛。这个包我们称为静态库,这个头文件,就是库的使用说明书

静态库(Static Library)是一种包含预编译目标文件的集合的归档文件,它在链接时被整体复制到可执行文件中。静态库的目的是为了提供代码重用和模块化,使得在编译时将所有需要的代码和数据都链接到最终的可执行文件中。
静态库的文件通常具有 .a(在Unix/Linux系统中)或 .lib(在Windows系统中)的文件扩展名。它包含了一组预编译的目标文件(通常是 .o 文件),这些目标文件是通过编译源代码而生成的。
主要优点和特点包括:
独立性: 静态库包含所有代码和数据,因此它是独立于其他库的,不依赖于运行时环境。
链接时静态绑定: 静态库在链接时会被完全复制到可执行文件中,因此在运行时不需要外部的库文件。
性能: 由于在链接时已经将代码和数据整合到可执行文件中,因此执行时的性能可能会更好。

ar指令生成静态库

我们知道了原理之后,我们可以用指令生成静态库,我们在Makefile中:
在这里插入图片描述

在这里插入图片描述

静态库的使用

我们现在有了静态库,我们现在重新建一个文件,来模拟其他程序员拿到库的情况。
我们新建一个Test_2的文件夹,把main函数写好:
在这里插入图片描述
如果我们此时直接编译:
在这里插入图片描述
这个时候会报错,说没有头文件,此时我们要把头文件搬到这个目录下,顺便把静态库也搬过来:
在这里插入图片描述
这个时候我们再来编译:
在这里插入图片描述
此时没有报没有头文件的错误了,但是编译器还是不知道怎么做,报了链接错误。但是我们不是已经把库拷贝过来了吗?按理来说应该可以呀?

第三方库

其实我们自己写的库为第三方库,编译器一般不认识,如果我们要运行程序,我们需要告诉编译器到哪里去连接这个第三方库:

gcc Test.c -L(后面跟这个第三方库的路径) -l(第三方库的名称)

这里注意下,这个第三方库的名称是去掉前缀和后缀的,比如libmymath.a去掉前缀lib去掉后缀.a,这个库的名字应该为mymath。

我们来试试:
在这里插入图片描述

优化一下

刚刚我们执行程序时,还要把我们的头文件一个一个搬下来,这个属实不咋方便,我们可以优化一下:

我们打开Makefile:
在这里插入图片描述
我们把头文件也打包一下,我们测试一下:
在这里插入图片描述
在这里插入图片描述

我们有了库,我们可以压缩这个库:
在这里插入图片描述
这个时候,mymath_lib.tgz就可以拿到网上让别人下载了。不过,假设我是其他的程序员,拿到了其他人写的库,这个时候我该如何使用这个库呢?

我们有一个include目录,这里是专门存放头文件的:
在这里插入图片描述

还有一个lib64,是专门存放动静态库的:
在这里插入图片描述
我们要做的其实很简单,就是把对应的头文件和库安装到相应的目录下就可以了。这个过程我们称为安装开发环境

gcc -I(大写的i) -L -l(小写的l),头文件搜索路径,库文件搜索路径,连接库

我们gcc一般搜索头文件,会从全局的/usr/include搜索,然后会从当前路径寻找。其实我们可以带 -I(大写的i),建议编译器也从这里找头文件:
在这里插入图片描述

http://www.yayakq.cn/news/124777/

相关文章:

  • 重庆南坪网站建设咨询400建设环境竣工验收网站
  • 拉企业做网站好干吗溧阳建设局网站
  • 建设食品商购网站移动crm系统客户端
  • seo网站模版营销咨询师
  • 打开山东城市建设职业学院网站wordpress做视频站好
  • 网业云原神整站网站优化费用
  • 基层建设 官方网站做网站要学哪些代码
  • 营销型网站建设风格设定包括哪些方面?购物网站制作免费
  • 宠物网站建设的可行性郑州市网络科技有限公司
  • 如何建立游戏网站凡客诚品正品男
  • 企业网站建设目标重庆大型网络公司
  • 做网站的底图尺寸多大特色的合肥网站建设
  • 手机全部网站wordpress 站外调用
  • 网站建站网站怎么样网站做支付需要什么备案
  • 泰安钢管网站建设企业网络营销策略分析
  • 在网站做直播福鼎网站开发
  • 想注册一个做网站的公司好wordpress全站301
  • 云南网站建设百度官方网站建设公司有多少家
  • 鹤壁做网站价格网站开发全流程图
  • 网站怎么做双机房切换旺道seo网站优化大师
  • 咸阳网站建设方案智能建站软件哪个好
  • 企业大学网站建设计划高端品牌的优势
  • 卓航网站开发国家企信网官网登录入口
  • 嘉兴品牌网站设计gl账号注册网站
  • 柳州营销网站建设可以做旅行计划的网站
  • 网站内容与标题的区别苏州那里可以建网站
  • 网站项目需求说明书psd wordpress
  • 国家网站icp备案查询如何做做网站
  • 专业网站建设设计公司网页设计学习心得
  • 网站建设作业百度云资源网站默认网站名