温馨提示×

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

小樊
42
2026-09-26 07:38:17
栏目: 编程语言

在 Linux 下用 C++ 链接静态库(.a 文件),通常分三步:编译目标文件 → 生成静态库 → 链接静态库。下面按常见用法说明。


一、准备静态库(.a)

1. 编译源文件为目标文件

g++ -c math.cpp -o math.o

2. 用 ar 生成静态库

ar rcs libmymath.a math.o

命名规范:

  • 库名:libxxx.a
  • 链接时用:-lxxx

二、在程序中链接静态库

示例目录结构

.
├── main.cpp
├── libmymath.a
└── mymath.h

编译并链接

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

说明:

  • -L.:指定库搜索路径(当前目录)
  • -lmymath:链接 libmymath.a
  • 顺序:源文件 / 目标文件 放前面,库放后面

三、直接指定静态库文件(最简单)

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

✅ 不需要 -L 和 -l


四、强制使用静态链接(混合环境)

如果系统同时存在 .a 和 .so,可强制静态:

g++ main.cpp -static -lmymath -o main

或只静态某个库:

g++ main.cpp -Wl,-Bstatic -lmymath -Wl,-Bdynamic -o main

五、CMake 中链接静态库

方式 1:直接加库文件

add_executable(main main.cpp)
target_link_libraries(main ${CMAKE_SOURCE_DIR}/libmymath.a)

方式 2:使用 find_library

link_directories(${CMAKE_SOURCE_DIR})
add_executable(main main.cpp)
target_link_libraries(main mymath)

六、常见错误

❌ 库顺序放错

g++ -lmymath main.cpp   # 错误

✅ 正确

g++ main.cpp -lmymath

❌ 忘记 -c 导致直接生成可执行
❌ 库名不是 libxxx.a


如果你有 具体编译命令 / CMake / Makefile / 库来源(如第三方库),可以贴出来,我帮你具体改。

0 踩