news 2026/7/13 16:39:26

二、静态库的制作和使用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
二、静态库的制作和使用

一、静态库的制作

什么是库

  • 库文件是计算机上的一类文件,可以简单的把库文件看成一种代码仓库,它提供给使用者一些可以直接拿来用的变量、函数或类。
  • 库是特殊的一种程序,编写库的程序和编写一般的程序区别不大,只是库不能单独运行。
  • 库文件有两种,静态库和动态库(共享库),区别是:静态库在程序的链接阶段被复制到了程序中;动态库在链接阶段没有被复制到程序中,而是程序在运行时由系统动态加载到内存中供程序调用。
  • 库的好处:1.代码保密 2.方便部署和分发

静态库的制作

(1) 命名规则

  • Linux:libxxx.a
    • lib:前缀 (固定,library 的缩写:库)
    • xxx:库的名字,自己起
    • .a:后缀 (固定)

(2) 制作步骤

  • gcc 获得 .o 文件
  • 将 .o 文件打包,使用 ar 工具 (archive)
    ar rcs libxxx.a xxx.o xxx.o
    • r - 将文件插入备存文件 (replace的缩写)
    • c - 建立备存文件 (create的缩写)
    • s - 建立索引,让链接器更快找到函数 (index的缩写)

开始制作

这里先给出测试代码,非 vip 用户可以私聊我。

1.将测试代码拖入 lesson04 文件夹中。

2.树形显示当前目录的所有文件和子文件夹

tree


如果没有安装需要执行以下代码进行安装:

sudoaptinstalltree

3.使用-c指令将 add.c,div.c,mult.c,sub.c 汇编成 .o 文件 (不链接)

gcc-cadd.c div.c mult.c sub.c


这里不汇编 head.h 是因为在预处理的时候会把头文件复制到源文件内。

3.制作静态库

ar rcs libcalc.a add.o div.o mult.o sub.o

二、静态库的使用

准备静态库

将 lesson04 下的测试代码文件复制进 lesson05 文件夹:

cp-rcalc library../lesson05
  • cp
    • 是 copy 的缩写
    • 功能:复制文件/复制目录
  • -r
    • 是 recursive 的缩写,递归的
    • 功能:递归复制,遇到目录时,不光复制目录本身,连目录里所有的文件、子目录、子子目录… 全部一起复制过去。

拷贝静态库文件 libcalc.a 到当前目录的 ./lib 下:

编译使用静态库的程序

当前项目目录:

1.直接编译 main.c 文件:

gcc main.c-oapp

2.这里提示缺少头文件,是因为编译器只会在 main.c 所在目录下寻找头文件,因此需要-I指定 include 包含文件的搜索目录:

这次没有说找不到头文件了,但是 main.c 里有函数未定义,也就是说函数定义的库没有指出。

3.利用-l指定所用的库名 ( 对于静态库 libcalc 来说,库名是 calc ),利用-L指定所用库的路径:

gcc main.c-oapp-I./include-L./lib-lcalc


可以看到可执行文件 app 运行成功!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/13 16:38:52

Unity粒子系统性能优化:移动端特效渲染开销分析与实战策略

1. 项目概述:粒子特效的性能之痛与优化价值在移动游戏开发中,粒子特效是营造沉浸感、提升视觉表现力的利器。无论是技能释放时的炫光、环境中的飘雪落叶,还是UI界面的动态反馈,都离不开ParticleSystem。然而,这份视觉盛…

作者头像 李华
网站建设 2026/7/13 16:37:55

AI大模型学习指南:小白程序员必备,收藏这份高薪技能秘籍!

随着AI技术快速发展,AI人才已成为招聘市场热点。大厂纷纷扩招AI相关岗位,薪酬水平显著提升。大模型算法、产品经理等需求位居前列,AI技能正从加分项转变为职场硬性要求。未来,能否将AI融入业务场景创造价值将成为关键。对于想进入…

作者头像 李华
网站建设 2026/7/13 16:37:43

ZenTorch与vLLM协同优化:AMD 20B模型推理性能调优指南

ZenTorch与vLLM协同优化:AMD 20B模型推理性能调优指南 【免费下载链接】gpt-oss-20b-BF16-w4a16-asym-torchao-v0.17.0 项目地址: https://ai.gitcode.com/hf_mirrors/amd/gpt-oss-20b-BF16-w4a16-asym-torchao-v0.17.0 AMD 20B模型(gpt-oss-20b…

作者头像 李华
网站建设 2026/7/13 16:37:23

MLX框架下的Laguna-M.1-4bit部署指南:从零到生产环境

MLX框架下的Laguna-M.1-4bit部署指南:从零到生产环境 【免费下载链接】Laguna-M.1-4bit 项目地址: https://ai.gitcode.com/hf_mirrors/mlx-community/Laguna-M.1-4bit 欢迎来到MLX框架下的Laguna-M.1-4bit部署终极指南!🎉 本文将带你…

作者头像 李华
网站建设 2026/7/13 16:37:05

轨道交通企业怎么做许可证利用率优化:多项目并行下先解决高峰冲突,还是先清理闲置占用

摘要如果企业在没有完成使用分析的前提下就直接增购,往往会出现预算增加但利用率依旧偏低的情况。本文从高峰并发、模块结构、低效占用和历史趋势四个维度,分析为什么多数企业更适合先优化,再判断是否需要增购。很多企业在做工业软件许可证管…

作者头像 李华