上一篇
在Linux环境下进行C/C++开发时,库文件(Library)是绕不开的核心概念。无论是为了代码复用,还是为了保护源码,掌握库文件的制作与使用都是程序员的必备技能。本文将通过“庖丁解牛”的方式,带你深入理解Linux静态库与Linux动态库的本质。
在开始库文件制作之前,我们先准备两个简单的数学函数文件。
// add.c - 加法实现int add(int a, int b) { return a + b; }// sub.c - 减法实现int sub(int a, int b) { return a - b; }// head.h - 头文件声明#ifndef _HEAD_H_#define _HEAD_H_int add(int a, int b);int sub(int a, int b);#endif Linux静态库(.a文件)在程序编译时会被直接集成到可执行文件中。优点是程序运行时不依赖外部库,缺点是生成的文件体积较大。
gcc -c add.c sub.car rcs libcalc.a add.o sub.o通过这篇gcc编译教程,你可以使用如下命令链接静态库:
gcc main.c -L./ -lcalc -o app_static
图1:Linux库文件编译核心流程
Linux动态库(.so文件)在程序编译时仅保存引用,实际代码在运行时才被加载。这使得程序体积更小,且易于更新库文件。
gcc -c -fPIC add.c sub.cgcc -shared -o libcalc.so add.o sub.o编译完成后,直接运行程序可能会报错。你需要告诉系统动态库的路径:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:././app_dynamic
| 特性 | 静态库 (.a) | 动态库 (.so) |
|---|---|---|
| 加载时间 | 编译时 | 运行时 |
| 文件体积 | 较大 | 较小 |
| 独立性 | 高 | 需依赖.so文件 |
本文由主机测评网于2026-03-19发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://vpshk.cn/20260332082.html