温馨提示×

centos怎么配置c++静态库

小樊
47
2026-07-20 11:38:10
栏目: 编程语言

下面分步骤说明在 CentOS 上如何配置(生成和使用)C++ 静态库(.a),从最基础到实际示例。


一、准备环境

1. 安装编译工具

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

检查版本:

g++ --version

二、创建并编译静态库

示例目录结构

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

1. 编写头文件 include/mylib.h

#ifndef MYLIB_H
#define MYLIB_H

void hello();

#endif

2. 编写实现文件 src/mylib.cpp

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

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

3. 编译为 .o 目标文件

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

说明:

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

4. 打包成静态库(.a

ar rcs libmylib.a mylib.o

检查:

ar -t libmylib.a

三、使用静态库

1. 编写测试程序 main.cpp

#include "mylib.h"

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

2. 编译并链接静态库

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

参数说明:

  • -I./include:头文件路径
  • -L.:库文件搜索路径
  • -lmylib:链接 libmylib.a

3. 运行

./main

输出:

Hello from static library!

四、常见问题与注意事项

1. 静态库 vs 动态库

类型 扩展名 是否嵌入可执行文件
静态库 .a ✅ 是
动态库 .so ❌ 否

2. 链接顺序很重要

错误示例:

g++ -lmylib main.cpp   # ❌

正确:

g++ main.cpp -lmylib   # ✅

3. 查看库内容

nm libmylib.a

4. 多个 .o 打包成一个 .a

ar rcs libmylib.a a.o b.o c.o

五、Makefile 示例(简化)

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

如果你需要:

  • CMake 配置静态库
  • CentOS 7 / 8 差异
  • 静态库 + 第三方库(如 OpenCV、Boost)
  • 调试静态库

可以继续问,我可以按你的实际项目给示例。

0