下面分步骤说明在 CentOS 上如何配置(生成和使用)C++ 静态库(.a),从最基础到实际示例。
sudo yum install -y gcc gcc-c++ make
检查版本:
g++ --version
project/
├── include/
│ └── mylib.h
├── src/
│ └── mylib.cpp
├── main.cpp
include/mylib.h#ifndef MYLIB_H
#define MYLIB_H
void hello();
#endif
src/mylib.cpp#include <iostream>
#include "mylib.h"
void hello() {
std::cout << "Hello from static library!" << std::endl;
}
.o 目标文件g++ -c src/mylib.cpp -I./include -o mylib.o
说明:
-c:只编译,不链接-I./include:指定头文件路径.a)ar rcs libmylib.a mylib.o
检查:
ar -t libmylib.a
main.cpp#include "mylib.h"
int main() {
hello();
return 0;
}
g++ main.cpp -I./include -L. -lmylib -o main
参数说明:
-I./include:头文件路径-L.:库文件搜索路径-lmylib:链接 libmylib.a./main
输出:
Hello from static library!
| 类型 | 扩展名 | 是否嵌入可执行文件 |
|---|---|---|
| 静态库 | .a |
✅ 是 |
| 动态库 | .so |
❌ 否 |
错误示例:
g++ -lmylib main.cpp # ❌
正确:
g++ main.cpp -lmylib # ✅
nm libmylib.a
.o 打包成一个 .aar rcs libmylib.a a.o b.o c.o
CXX = g++
CXXFLAGS = -I./include
all: main
libmylib.a: src/mylib.cpp
$(CXX) -c src/mylib.cpp -o mylib.o
ar rcs libmylib.a mylib.o
main: main.cpp libmylib.a
$(CXX) main.cpp -I./include -L. -lmylib -o main
clean:
rm -f *.o *.a main
如果你需要:
可以继续问,我可以按你的实际项目给示例。