云计算百科
云计算领域专业知识百科平台

Linux 环境下静态链接库 (.a) & 动态链接库 (.so) 完整实例(含嵌入式适配)

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

赞(0)
未经允许不得转载:网硕互联帮助中心 » Linux 环境下静态链接库 (.a) & 动态链接库 (.so) 完整实例(含嵌入式适配)
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!