温馨提示×

ubuntu c++怎么生成静态库

小樊
35
2026-10-02 10:57:49
栏目: 编程语言

在 Ubuntu 下用 C++ 生成静态库(.a 文件),一般步骤如下:


一、准备源文件

假设有两个文件:

hello.h

#pragma once
void sayHello();

hello.cpp

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

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

二、编译为目标文件(.o)

使用 -c 参数,只编译不链接:

g++ -c hello.cpp -o hello.o

三、使用 ar 生成静态库

ar rcs libhello.a hello.o

说明:

  • r:插入或替换
  • c:创建库(不显示警告)
  • s:生成索引(加速链接)

生成文件:libhello.a


四、使用静态库

写一个测试程序:

main.cpp

#include "hello.h"

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

编译并链接静态库:

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

参数说明:

  • -L.:在当前目录找库
  • -lhello:链接 libhello.a

运行:

./main

输出:

Hello, static library!

五、常见注意事项

  1. 库命名规则

    • 静态库必须叫 libxxx.a
    • 链接时用 -lxxx
  2. 多个源文件

    g++ -c a.cpp b.cpp
    ar rcs libtest.a a.o b.o
    
  3. 查看静态库内容

    ar t libhello.a
    
  4. C++ 名称改编(Name Mangling)

    • 如果是 C 和 C++ 混用,头文件要加:
      #ifdef __cplusplus
      extern "C" {
      #endif
      ...
      #ifdef __cplusplus
      }
      #endif
      

如果你需要 CMake 生成静态库 或 和动态库对比,也可以告诉我。

0 踩