1. 项目概述
在Linux系统开发中,库文件的使用是每个C/C++开发者必须掌握的核心技能。静态库(.a)和动态库(.so)作为两种基础但完全不同的库文件形式,它们的创建、使用和部署方式直接影响着项目的构建效率、运行性能和系统资源占用。特别是在嵌入式开发场景下,由于硬件资源限制,对库文件的选择和使用更需要谨慎权衡。
我在过去十年的嵌入式Linux开发中,处理过各种库文件相关的"坑":从简单的链接错误,到内存占用爆炸,再到动态库版本冲突导致的系统崩溃。本文将基于实际项目经验,手把手演示从库文件创建到嵌入式部署的完整流程,重点分享那些官方文档不会告诉你的实战技巧。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 开发环境准备
2.1 基础工具链安装
在Ubuntu 20.04 LTS环境下,首先安装必要的编译工具:
bash复制sudo apt update
sudo apt install build-essential gcc-arm-linux-gnueabihf binutils-dev
注意:如果目标平台是ARM架构的嵌入式设备,必须安装交叉编译工具链。这里使用的
gcc-arm-linux-gnueabihf适用于大多数ARMv7设备,对于ARM64平台需替换为gcc-aarch64-linux-gnu
2.2 验证工具链
检查交叉编译器是否可用:
bash复制arm-linux-gnueabihf-gcc --version
输出应显示类似:
code复制arm-linux-gnueabihf-gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0
3. 静态库(.a)实战
3.1 创建静态库
假设我们有两个源文件实现数学运算功能:
math_operations.c:
c复制int add(int a, int b) {
return a + b;
}
int subtract(int a, int b) {
return a - b;
}
math_advanced.c:
c复制int multiply(int a, int b) {
return a * b;
}
float divide(int a,
