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

seo网站排名优化价格北控水务建设发展有限公司网站

seo网站排名优化价格,北控水务建设发展有限公司网站,网站3级目录可以做导航分类么,做电力 公司网站在一个软件项目中,为了完成特定功能,除了自定义函数,还可以使用别人已经封装好的函数库,如 C 函数库。库函数的使用避免了重复“造笼子”的重复工作,提高了代码复用率,大大减轻了软件开发的工作量。 库分为…

在一个软件项目中,为了完成特定功能,除了自定义函数,还可以使用别人已经封装好的函数库,如 C 函数库。库函数的使用避免了重复“造笼子”的重复工作,提高了代码复用率,大大减轻了软件开发的工作量。

库分为静态库和动态库。

  • 静态库。如果在项目中引用了库函数,则在编译时,链接器会将引用的函数代码或变量,链接到可执行文件里,和可执行程序组装在一起,这种库被称为静态库,即在编译阶段链接的库。
  • 动态库。在编译阶段不参与链接,不会和可执行文件组装在一起,而是在程序运行时才被加载到内存参与链接,因此又叫动态链接库。

静态库的本质其实就是可重定位目标文件的归档文件,使用 ar 命令就可以将多个目标文件打包为一个静态库。

jiaming@jiaming-pc:~/Documents/CSDN_Project$ cat test.c 
int add(int a, int b)
{return a + b;
}
int sub(int a, int b)
{return a - b;
}
int mul(int a, int b)
{return a * b;
}
int div(int a, int b)
{return a / b;
}jiaming@jiaming-pc:~/Documents/CSDN_Project$ cat main.c
#include <stdio.h>int add(int, int);int main(void)
{int sum = 0;sum = add(1, 2);printf("sum=%d\n", sum);return 0;
}
jiaming@jiaming-pc:~/Documents/CSDN_Project$ gcc -c test.c # 将源文件 test.c 生成目标文件 test.o
jiaming@jiaming-pc:~/Documents/CSDN_Project$ ar -rcs libtest.a test.o # 使用 ar 命令将多个目标文件打包成 libtest.a
jiaming@jiaming-pc:~/Documents/CSDN_Project$ gcc main.c -L. -ltest # 指定需要链接的静态库及其所在的路径,库的名字 test
jiaming@jiaming-pc:~/Documents/CSDN_Project$ ./a.out 
sum=3

ar 命令:

  • -c:禁止在创建库时产生的正常消息
  • -r:如果指定的文件已经存在则替换
  • -s:无论库是否更新都强制重新生成新的符号表
  • -d:从库中删除指定的文件
  • -o:对压缩文档成员进行排序
  • -q:向库中追加指定文件
  • -t:打印库中的目标文件
  • -x:解压库中的目标文件

编译器是以源文件为单位进行编译程序的,链接器在链接过程中逐个对目标文件进行分解组装,这样会产生一个问题:如果在一个源文件中定义了 100 个函数,而只使用了其中一个,那么链接器在链接时也会把这 100 个函数逇代码指令全部组装到可执行文件中,这会让最终生成的可执行文件体积大大增加。

jiaming@jiaming-pc:~/Documents/CSDN_Project$ readelf -s a.out Symbol table '.symtab' contains 70 entries:Num:    Value          Size Type    Bind   Vis      Ndx Name···50: 000000000000118b    24 FUNC    GLOBAL DEFAULT   16 add···53: 00000000000011d0    23 FUNC    GLOBAL DEFAULT   16 div···64: 0000000000001149    66 FUNC    GLOBAL DEFAULT   16 main65: 00000000000011b9    23 FUNC    GLOBAL DEFAULT   16 mul···68: 00000000000011a3    22 FUNC    GLOBAL DEFAULT   16 sub···

解决这个问题的办法是每一个函数均由一个独立的 C 程序实现,然后将多个文件(.o)打包即可(libtest.a)。C 标准库就是这么实现的,printf 函数由 printf.c 实现。如果只调用了一个 printf 函数,则链接器只是将 pritnf() 函数的目标文件链接到可执行文件中即可。

静态链接还会产生另外一个问题,如 C 标准库里 printf() 函数,可能多个程序都调用了它,链接器在链接时就要将 printf 的指令添加到多个可执行文件中。在一个多任务环境中,当多个进程并发运行时,内存中有大量重复的 printf 指令代码,很浪费内存资源。

解决办法是动态链接机制!

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

相关文章:

  • 企业为何做网站gta5地产网站建设中
  • 广东省建设协会网站做网站字体大小
  • 邯郸做网站的公司哪家好wordpress修改关键字
  • 什么样的网站需要icp经营性备案提供中小企业网站建设
  • 网站建设的什么是网站建设的第一阶段电子商务网站建设与管理相关文献
  • 深圳电子商务网站建设公司尼罗发表小说做的的网站是哪个
  • 有代源码怎么做自己网站wordpress 问答类主题
  • 靖江市属于哪里有做网站的惠州水口网站建设
  • 门户网站制作定制企业名录免费查询器下载
  • 生成图片链接的网站广告项目网站开发
  • 文化传媒可以做网站吗长沙招聘网最新招聘信息
  • 试分析网站推广和优化的原因最近最新新闻事件
  • 设计网站价格特效网站大全
  • 槐荫区网站建设app与移动网站开发资料
  • 网站建设单位什么是网站黑链
  • 网站模板套用百度推广首次开户需要多少钱
  • 国外中文网站排行wordpress rss代码
  • 国外包装设计网站郑州区块链数字钱包网站开发周期
  • 做网站 需要多少钱商业类网站的设计与制作
  • 网站的外部推广乔拓云h5制作
  • 网站开发设计运维外贸业务员招聘人才网
  • 免费ppt模板的网站怎样精通wordpress
  • 网站备案 论坛上海十大网站建设
  • 天津网站建设哪个好邯郸注册公司流程和费用
  • 分销网站建站wordpress积分投稿
  • 关于做网站的ppt徐汇网站建设公司
  • 1999年怎样建立企业网站哈尔滨搜索引擎建站
  • 重庆邮电大学官网网站响应式网站开发demo
  • 网站建设是什么科目有没有做汽车维修记录网站
  • 免费网站服务商办公室oa管理系统