Linux动静态库开发基础:静态库与动态库的编译构建、链接使用及问题排查
文 章 目 录
💻作 者 简 介:曾 与 你 一 样 迷 茫,现 以 经 验 助 你 入 门 Linux。
💡个 人 主 页:@笑口常开xpr 的 个 人 主 页
📚系 列 专 栏:Linux 探 索 之 旅:从 命 令 行 到 系 统 内 核
✨代 码 趣 语:静 态 库 是 装 满 工 具 的 箱 子,编 译 时 全 塞 程 序,方 便 但 沉;动 态 库 是 共 享 架,记 位 置,没 工 具 就 卡 壳。
💪代 码 千 行,始 于 坚 持,每 日 敲 码,进 阶 编 程 之 路。
📦gitee 链 接:gitee

在 Linux C/C++ 开 发 中,库 是 代 码 复 用 和 工 程 化 的 核 心。不 少 开 发 者 会 遇 到 源 码 泄 露、编 译 “找 不 到 头 文 件 / 库”、动 态 库 运 行 加 载 失 败 等 问 题,本 质 是 对 库 的 流 程 不 熟 悉。本 文 从 背 景 切 入,先 讲 静 态 库 的 原 理、制 作 与 使 用,再 讲 动 态 库 的 实 战 技 巧,帮 你 掌 握 库 的 全 流 程 应 用。
一、静 态 库
1、背 景
设 计 一 个 静 态 库 并 将 已 经 写 好 的 代 码 给 别 人 用。有 两 种 方 法:
- 把 源 文 件 给 他
- 把 源 代 码 打 包 成 库,必 须 提 供 头 文 件。头 文 件 的 本 质 是 库 文 件 的 说 明 书。
libxxx.a - - - 静 态 链 接
libxxx.so - - - 动 态 链 接
2、原 理

3、静 态 库 的 流 程
(1)编 写 者
- 编 写 源 代 码(不 包 括 main 函 数)。
mymath.h
#pragma once #include<stdio.h> extern int myerrno; int add(int x,int y); int sub(int x,int y); int mul(int x,int y); int div(int x,int y);mymath.c
#include"mymath.h" int myerrno =0; int add(int x,int y){ return x + y;} int sub(int x,int y){ return x - y;} int mul(int x,int y){ return x * y;} int div(int x,int y){ if(y ==0){ myerrno =1;return-1;}return x / y;}makefile