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

编程培训网站河南科技网站建设

编程培训网站,河南科技网站建设,wordpress 中介,网站建设一般满足什么需求Linux C语言 34-库封装操作 本节关键字:C语言 封装库 动态库 相关C库函数: 什么是库? 库是现成的,可以复用的代码。从本质上看,库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。在C语言的编…

Linux C语言 34-库封装操作

本节关键字:C语言 封装库 动态库
相关C库函数:

什么是库?

库是现成的,可以复用的代码。从本质上看,库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。在C语言的编程中,把某些功能性的函数放在一个链接库里再提供给其他人使用的过程叫做制作库(封装库)。C语言中有两种库:

  • 动态库(.a、.lib)
  • 静态库(.so、.dll)

静态库

在链接阶段将汇编生成的目标文件.o与引用的库一起链接打包到可执行文件中,该过程的链接方式称为静态链接,生成的库称为静态库。
静态库的特点:

  • 静态库对函数库的链接是在编译时期完成的
  • 程序在运行时与函数库无联系,移植方便
  • 占用更多的内存空间,因为所有相关的目标文件和库文件都被链接合成一个可执行文件
  • 更新麻烦,每次更新都需要全量更新

静态库的生成与调用

Linux系统中静态库的命名规范必须是“lib[name].a”:lib前缀,中间是静态库名称,扩展名为.a

静态库的创建

$ gcc -c test.c
$ ar -crv libtest.a test.o

静态库的使用

(1)包含头文件
(2)调用静态库中的函数
(3)编译时加上指定静态库:gcc testlib.c -L. -ltest

动态库

动态库是一种不可执行的二进制文件,它允许程序共享执行特殊任务。与静态库不同的是,动态库是程序在执行时才进行加载。

动态库的作用

  • 代码复用
  • 动态库对函数的链接是在运行时完成的
  • 节约内存,不同进程调用相同的库,可实现进程之间的资源共享(因此动态库也被称为共享库)
  • 更新时只需更新相关的动态库(增量更新)

动态库的生成与调用

Linux系统中动态库的命名规范必须是“lib[name].so”:lib前缀,中间是静态库名称,扩展名为.so

动态库的创建

$ gcc -shared -fPIC test.c -o libtest.so

-shared 是生成动态库
-fPIC 生成位置无关代码,默认添加

动态库的使用

(1)包含头文件
(2)调用动态库中的函数
(3)编译时加上指定动态库:gcc testlib.c -L. -ltest

动态库找不到的问题解决

(1)将.so文件拷贝到 /usr/lib 目录下
(2)更新环境变量:export LD_LIBRARY_PATH=[动态库所在的绝对路径]
(3)将动态库所在的绝对路径添加到 /etc/ld.so.conf 文件里;然后重新加载配置文件 /sbin/ldconfig

gcc相关编译选项

  • -shared 生成动态链接库
  • -static 生成静态链接库
  • -fIPC 编译为位置独立的代码,用于编译动态库(共享库)。目标文件需要创建成位置无关代码,在程序装载动态库的时候,动态库可以放在程序内存的任何地方
  • -L 要链接的库所在的目录
  • -l 指定链接时需要的动态库。编译器查找动态库时有隐含的命名规则,即“lib[name].so”或“lib[name].a”
  • -Wall 生成所有警告信息
  • -ggdb 将尽可能生成gdb可以使用的调试信息
  • -g 编译器在编译的时候产生调试信息
  • -c 只激活预处理、编译和汇编,也就是将程序做成目标文件(.o文件)
  • -Wl,options 把参数(options)传递给链接器ld,如果options中间有都逗号,就将options分成多个选项,然后传递给链接程序

库查看命令

查看可执行程序依赖的动态库

例如:查看可执行程序 mytest 的依赖动态库
$ ldd mytest

查看库中的函数列表

例如:查看 test.so 中的函数有哪些
$ nm test.so

http://www.laogonggong.com/news/54590.html

相关文章:

  • 怎样做自己的视频网站初学者做电商怎么入手
  • 有哪些好的网站基于asp.net网站开发
  • wordpress的中文名称常州网站seo代理加盟
  • diy在线定制网站系统大基建最新消息
  • 国都建设(集团)有限公司网站台州seo管理
  • 仿互动吧网站源码南宁微网站开发
  • 建站管理后台wordpress模板淘宝客模板自适应
  • h5网站建设机构哈尔滨信息网官网
  • 石家庄网站建设设计为学校网站做网站推广策划
  • 免费购物网站建设装修的网站
  • 企业网站开发公司手机兼职平台app排行榜前十名
  • liunx做网站跳转服务器广东研发网站建设平台
  • 长沙网站建设联系电话做图片推广的网站
  • 网站建设需要使用哪些设备网站搭建徐州百度网络
  • 网站建设价格兴田德润i网址多少个人可以备案企业网站吗
  • 嘉兴市网站建设天猫官网商家入驻入口
  • 在哪里创建网站平台牧童蝉网站建设
  • 推广 外贸 网站专业建设成果
  • 注册外贸网站有哪些问题网站见建设
  • 重庆做网站changekewordpress 添加phpmyadmin
  • 怎么优化自己的网站中文域名.网站
  • 品牌案例网站网站开发设计师的工作
  • 云南网站开发东莞制作企业网站
  • 东莞网站网络推广公司建筑工程网架
  • 网站建设的详细步骤网上做网站怎么赚钱
  • 三合一 网站 前端昆明网站搭建
  • 织梦建站要多少钱企业管理系统项目简介内容
  • 在线设计图片网站总结网站开发行业代码
  • 企业网站建设总结网站建设什么行业
  • 公司建设网站的目的wordpress页面怎么用