Linux 环境下静态链接库 (.a) & 动态链接库 (.so) 完整实例(含嵌入式适配)
我会为你提供可直接复制运行的完整实例,涵盖「代码编写→库制作→编译链接→运行验证」全流程,先讲通用 Linux(x86)版本,再补充 ARM 嵌入式适配方案,确保你能一站式掌握两种库的制作和使用 ✅
一、环境说明
- 通用环境:Linux x86_64(Ubuntu/CentOS),GCC 编译器;
- 嵌入式适配:ARM 架构(如 STM32/ARM9),使用arm-none-eabi-gcc替换gcc即可。
二、统一工程结构
先创建如下目录和文件,所有代码 / 命令基于此结构:
# 1. 创建工程目录
mkdir -p lib_demo/src
cd lib_demo
# 2. 创建空文件(后续复制代码)
touch src/calc.c src/calc.h main.c
最终结构:
lib_demo/
├── src/
│ ├── calc.c # 库实现文件(加减乘除算法)
│ └── calc.h # 库头文件(对外暴露接口)
└── main.c # 测试程序(调用库接口)
三、编写核心代码
1. 库头文件 src/calc.h(对外暴露接口)
#ifndef __CALC_H__
#define __CALC_H__
// 对外暴露的4个接口(加减乘除)
int calc_add(int a, int b);
int calc_sub(int a, int b);
int calc_mul(int a, int b);
int calc_div(int a, int b);
#endif
2. 库实现文件 src/calc.c(核心逻辑)
#include \”calc.h\”
// 加法
int calc_add(int a, int b) {
return a + b;
}
// 减法
int calc_sub(int a, int b) {
return a – b;
}
// 乘法
int calc_mul(int a, int b) {
return a * b;
}
// 除法(简单处理除零错误)
int calc_div(int a, int b) {
if (b == 0) return -1; // 除零返回-1
return a / b;
}
3. 测试程序 main.c(调用库接口)
#include <stdio.h&g
网硕互联帮助中心



评论前必须登录!
注册