温馨提示×

CentOS C++如何配置静态库

小樊
45
2026-08-30 02:54:54
栏目: 编程语言

CentOS 上配置 C++ 静态库(.a),通常分为 编译静态库使用静态库 两部分。下面按常见流程一步步说明。


一、准备环境(CentOS)

1. 安装编译工具

sudo yum install -y gcc gcc-c++ make

检查版本:

g++ --version

二、编写示例代码

1. 目录结构(示例)

project/
├── include/
│   └── mylib.h
├── src/
│   └── mylib.cpp
├── main.cpp
└── lib/

2. 静态库头文件 include/mylib.h

#ifndef MYLIB_H
#define MYLIB_H

void hello();

#endif

3. 静态库源文件 src/mylib.cpp

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

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

4. 主程序 main.cpp

#include "mylib.h"

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

三、编译生成静态库(.a)

1. 生成目标文件(.o)

g++ -c src/mylib.cpp -I./include -o mylib.o

说明:

  • -c:只编译,不链接
  • -I./include:指定头文件路径

2. 使用 ar 打包成静态库

ar rcs libmylib.a mylib.o

参数说明:

  • r:替换库中已有文件
  • c:创建库
  • s:生成索引(等价 ranlib

查看静态库内容:

ar t libmylib.a

3. 将库放到指定目录(可选)

mkdir -p lib
mv libmylib.a lib/

四、使用静态库编译程序

方式一:直接指定库路径(推荐)

g++ main.cpp -I./include -L./lib -lmylib -o main

参数说明:

  • -I./include:头文件路径
  • -L./lib:库文件路径
  • -lmylib:链接 libmylib.a
  • -o main:输出可执行文件

运行:

./main

输出:

Hello from static library!

方式二:直接链接 .a 文件

g++ main.cpp lib/libmylib.a -I./include -o main

五、验证是否是静态链接

ldd main

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


六、常见问题

1. undefined reference to xxx

原因:

  • 忘记加 -lmylib
  • 顺序错误(库要在源文件后面)

✅ 正确顺序:

g++ main.cpp -L./lib -lmylib

2. CentOS 7 缺少 C++17 支持

升级 gcc(如需要):

sudo yum install centos-release-scl
sudo yum install devtoolset-11
scl enable devtoolset-11 bash

七、完整示例命令汇总

# 编译静态库
g++ -c src/mylib.cpp -I./include -o mylib.o
ar rcs libmylib.a mylib.o

# 使用静态库
g++ main.cpp -I./include -L./lib -lmylib -o main

如果你需要:

  • CMake 配置静态库
  • 多个静态库相互依赖
  • 与动态库对比说明

可以继续问我。

0