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

静态库.a与.so库文件的生成与使用

任务一.用gcc生成静态库和动态库
1.1在ubuntu系统中创建一个目录来保存程序文件并编辑三个程序hello.h,hello.c,main.c。
先通过后端代码创建目录

屏幕截图 2025-10-06 021430
然后用vim文本编辑器编辑三个程序文件
程序1 hello.h:

屏幕截图 2025-10-06 021753
程序2 hello.c:

屏幕截图 2025-10-06 022420
程序3 main.c:

屏幕截图 2025-10-06 022605
1.2将hello.c文件编译成.o文件

屏幕截图 2025-10-06 023136
1.3通过生成的.o文件生成静态库
静态库文件的命名规范是以lib为前缀,然后跟静态库名,扩展名为.a。创建静态库用ar命令。

屏幕截图 2025-10-06 023933
1.4在程序中使用静态库
在调用静态库的内部函数时,需要在使用到这些公用函数的程序中包含公用函数的原型声明,然后在用gcc命令生成目标文件时指明静态库名,gcc将会从静态库中将公用函数连接到目标文件中。下面先生成目标程序hello,然后再运行它,看是否能实现程序功能。

屏幕截图 2025-10-06 032305
成功实现了程序功能。
1.5通过生成的.o文件生成动态库
动态库文件命名规范与静态库类似,都是以lib为前缀然后跟库名,只不过它的扩展名为.so。通过在终端输入命令创建动态库

屏幕截图 2025-10-06 033243
1.6在程序中使用动态库
在程序中使用动态库的方式与静态库完全一致。下面先生成目标文件,然后再运行它,看是否能成功实现程序功能。

屏幕截图 2025-10-06 034819
通过实际操作,我发现确实可以生成目标文件hello,但是再运行它时会出现错误,无法正常运行。通过理解显示的错误原因,我发现原来是因为找不到动态库文件libmyhello.so。程序在运行时,会先在/usr/lib和/lib等目录中查找需要的动态库文件。若找到,则载入动态库,程序正常运行。若没有找到,则会出现错误,程序无法正常运行。之后我们将动态库文件libmyhello.so复制导入到/usr/lib中,发现目标文件可以正常运行。

http://www.hskmm.com/?act=detail&tid=25759

相关文章:

  • CF2145D Inversion Value of a Permutation
  • 牛客刷题-Day8
  • Educational Codeforces Round 183 (Rated for Div. 2)
  • 高三闲话 #2
  • D. Inversion Value of a Permutation edu div2
  • 个人博客公告
  • 一个刚大一的普通大学生
  • 通过利用百度对于外链的检测算法上的缺陷
  • git常用助记
  • 云岚到家项目文字稿
  • 软件工程 第一次作业
  • 软工第一次团队作业
  • 教会音控组侍奉中的工序主义实践
  • 用 Kotlin 调用 Tesseract 实现验证码识别
  • Kotlin 调用 Tesseract 实现验证码识别
  • Dart 调用 Tesseract 实现验证码识别
  • Audacity导出音频后发声提醒
  • 做一个会Debug的程序员
  • 深度噪声抑制技术在语音增强中的突破
  • APUE学习笔记之UNIX标准及实现(二) - Invinc
  • 存一下刚开始学编程的东西
  • 线性偏微分方程和非线性偏微分方程的区别
  • 基于AXI模块的视频流传输(ps控制篇)
  • lora的各种变体
  • Kubernetes Deployment:部署与管理应用指南
  • GO+RabbitMQ+Gin+Gorm+docker 部署 demo - 实践
  • Python测试
  • 免费文字转语音 AI 工具 All In One
  • 【闲话】2025.9.24 记梦
  • 酷派Cool20/20S/30/40手机安装Play商店-谷歌三件套-GMS方式