一、SO 库的基本概念
- 动态链接库(SO):在程序运行时被加载,多个程序可共享同一 SO 库,节省内存
- 优点:减小可执行文件体积、便于模块更新(无需重新编译主程序)
- 核心:通过
extern "C"解决 C++ 名称修饰问题,确保库函数能被正确识别
二、创建 SO 库的步骤
1. 准备源文件
假设有一个简单的数学运算模块,包含头文件和实现文件:
math_utils.h(头文件)
#ifndef MATH_UTILS_H
#define MATH_UTILS_H
// 用 extern "C"包裹,避免 C++名称修饰
#ifdef __cplusplus
extern "C" {
#endif
// 加法
int add(int a, int b);
// 乘法
int multiply(int a, int b);
#ifdef __cplusplus
}
#endif
#endif // MATH_UTILS_H
math_utils.cpp(实现文件)
#include "math_utils.h"
// 加法实现
int add(int a, int b) {
return a + b;
}
{
a * b;
}

