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

制作静态链接库并使用

1、Ubuntu虚拟机中制作静态链接库并使用

1.1、制作静态链接库

(1)首先使用gcc -c只编译不连接,生成.o文件;然后使用ar工具进行打包成.a归档文件。

all:gcc lib_demo.c -o lib_demo.o -car -rc libdemo.a lib_demo.o 

(2)库名不能随便乱起,一般是lib+库名称,后缀名是.a表示是一个归档文件。

(3)注意:制作出来了静态库之后,发布时需要发布.a文件和.h文件。

(4)除了ar命令外,还有个nm命令也很有用,它可以用来查看一个.a文件中都有哪些符号。

nm libdemo.a

1.2、使用静态链接库

(1)把.a和.h都放在我引用的文件夹下,然后在.c文件中包含库的.h,然后直接使用库函数。

(2)错误编译方法1:gcc main.c -o main,报错如下:

  • /usr/bin/ld:这是链接器(ld),负责把目标文件(.o)链接成可执行文件。
  • undefined reference to 'func1':链接器在所有目标文件和库中都找不到 func1 的定义。
usr/bin/ld: /tmp/ccTLarGQ.o: in function `main':
main.c:(.text+0x9): undefined reference to `func1'
collect2: error: ld returned 1 exit status

(3)错误编译方法2:gcc main.c -o main -llibdemo

/usr/bin/ld: 找不到 -llibdemo: 没有那个文件或目录
collect2: error: ld returned 1 exit status

(3)正确编译方法:gcc main.c -o main -ldemo -L.

  • -ldemo 表示需要链接libdemo.a这个文件
  • -L表示链接的库文件所在的地址,后面的点表示再当前文件夹下

http://www.dtcms.com/a/474941.html

相关文章:

  • 西方设计网站vs2010网站开发与发布
  • 网站维护工作的基本内容施工企业质量管理体系认证几年
  • 网站建设教程pdf下载企业官网网页设计
  • 重启MySQL,为何重启后MySQL数据“回滚”了?
  • 非洲购物网站排名文创产品设计包括哪些方面
  • Linux 文件内容查看与编辑
  • 2022 CSP-J复赛题
  • 【cubeide】IIC通信
  • python学习之访问模式和文件定位操作
  • CTF攻防世界WEB精选基础入门:simple_php
  • CodexField 热度登顶:内容资产化赛道的加速信号
  • 00_k8s容器编排系统
  • 广西柳州网站制作公司厦门做网站排名
  • 算法学习 02
  • 广西建设监理协会官网站珠海响应式网站建设推广公司
  • 机器学习实践项目(一)- Rossman商店销售预测 - 特征工程
  • 网站首页轮播图片wordpress不支持中文
  • Blender经典像素风模拟插件 Drips Psx Efx – Playstation 1 Effects V1.4
  • 网站 备案 固话福州网站设计软件公司
  • 达梦数据库版本升级方案
  • 【开题答辩全过程】以 北上广咖啡门店分布与销售数据分析和可视化为例,包含答辩的问题和答案
  • 企业信息门户网站 建设基于多站点的网站内容管理平台的管理与应用
  • 基于Vue的高校学习讲座预约系统
  • 钦州网站建设哪家便宜莆田企业自助建站系统
  • 怎样做自己的视频网站建设网站工作室的问题疑问
  • 网站 图片水印wordpress文章数据库
  • KMSEnvelope Encryption
  • 成都住房和城乡建设厅网站鼠标垫东莞网站建设
  • 身份证批量ocr
  • ansible role配apt源