在 Linux 下用 C++ 配置并使用静态库(.a 文件),一般分三步:编译静态库 → 链接静态库 → 运行。下面用最常用、最清晰的方式讲。
静态库在 Linux 下是:
libxxx.a
链接时,库里的代码会直接拷贝进你的可执行文件。
project/
├── main.cpp
├── mylib.cpp
└── mylib.h
#ifndef MYLIB_H
#define MYLIB_H
void hello();
#endif
#include <iostream>
#include "mylib.h"
void hello() {
std::cout << "Hello from static lib!" << std::endl;
}
#include "mylib.h"
int main() {
hello();
return 0;
}
g++ -c mylib.cpp -o mylib.o
ar rcs libmylib.a mylib.o
✅ 得到:
libmylib.a
g++ main.cpp libmylib.a -o main
运行:
./main
g++ main.cpp -L. -lmylib -o main
说明:
-L.:在当前目录找库-lmylib:链接 libmylib.a⚠️ 注意:
-l 后面不要写 lib 和 .a-o 前面g++ -std=c++17 main.cpp -L. -lmylib -o main
ldd main
如果 没有显示 libmylib,说明是静态链接成功。
CXX = g++
CXXFLAGS = -std=c++17
all: main
libmylib.a: mylib.cpp
$(CXX) -c mylib.cpp
ar rcs libmylib.a mylib.o
main: main.cpp libmylib.a
$(CXX) $(CXXFLAGS) main.cpp -L. -lmylib -o main
clean:
rm -f *.o *.a main
使用:
make
./main
-lmylib优先链接动态库,可加:
-static
(但不推荐全局 static)
如果你用的是 CMake / CLion / VSCode / 特定框架,我可以给你对应配置方式。