温馨提示×

linux c++配置怎么配静态库

小樊
40
2026-10-19 16:58:46
栏目: 编程语言

在 Linux 下用 C++ 配置并使用静态库(.a 文件),一般分三步:编译静态库 → 链接静态库 → 运行。下面用最常用、最清晰的方式讲。


一、什么是静态库

静态库在 Linux 下是:

libxxx.a

链接时,库里的代码会直接拷贝进你的可执行文件。


二、示例目录结构

project/
├── main.cpp
├── mylib.cpp
└── mylib.h

mylib.h

#ifndef MYLIB_H
#define MYLIB_H

void hello();

#endif

mylib.cpp

#include <iostream>
#include "mylib.h"

void hello() {
    std::cout << "Hello from static lib!" << std::endl;
}

main.cpp

#include "mylib.h"

int main() {
    hello();
    return 0;
}

三、生成静态库(.a)

1️⃣ 编译为目标文件

g++ -c mylib.cpp -o mylib.o

2️⃣ 用 ar 打包成静态库

ar rcs libmylib.a mylib.o

✅ 得到:

libmylib.a

四、使用静态库编译程序

方式一:直接指定库文件

g++ main.cpp libmylib.a -o main

运行:

./main

方式二:使用 -L 和 -l(推荐)

g++ main.cpp -L. -lmylib -o main

说明:

  • -L.:在当前目录找库
  • -lmylib:链接 libmylib.a

⚠️ 注意:

  • -l 后面不要写 lib 和 .a
  • 静态库必须放在源文件或 -o 前面

五、指定 C++ 标准(常见)

g++ -std=c++17 main.cpp -L. -lmylib -o main

六、确认链接的是静态库

ldd main

如果 没有显示 libmylib,说明是静态链接成功。


七、Makefile 示例(常用)

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

八、常见问题

❌ undefined reference

  • 库放在了命令最前面
  • 没加 -lmylib
  • 库和主程序用的 C++ 标准不一致

❌ 静态库和动态库同名

优先链接动态库,可加:

-static

(但不推荐全局 static)


如果你用的是 CMake / CLion / VSCode / 特定框架,我可以给你对应配置方式。

0 踩