温馨提示×

debiangcc静态库怎么建

小樊
38
2026-09-26 01:54:08
栏目: 智能运维

在 Debian(或任意 Linux)上使用 gcc 创建静态库(.a 文件),一般分为三步:编译为目标文件 → 用 ar 打包 → 使用静态库。

下面给你一个完整、常见的例子。


一、准备源代码

假设有两个源文件:

add.c

int add(int a, int b) {
    return a + b;
}

sub.c

int sub(int a, int b) {
    return a - b;
}

calc.h

#ifndef CALC_H
#define CALC_H

int add(int, int);
int sub(int, int);

#endif

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

gcc -c add.c -o add.o
gcc -c sub.c -o sub.o

或者一步:

gcc -c add.c sub.c

三、使用 ar 创建静态库

ar rcs libcalc.a add.o sub.o

说明:

  • r:插入或替换
  • c:创建库(不警告)
  • s:生成索引(等价于 ranlib)

生成文件:

libcalc.a

✅ 静态库命名规范:libxxx.a


四、使用静态库

main.c

#include <stdio.h>
#include "calc.h"

int main() {
    printf("add = %d\n", add(3, 4));
    printf("sub = %d\n", sub(10, 4));
    return 0;
}

编译并链接静态库

gcc main.c -L. -lcalc -o main

参数说明:

  • -L.:在当前目录找库
  • -lcalc:链接 libcalc.a

五、验证是否是静态链接

ldd main

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


六、常见补充

1️⃣ 查看静态库内容

ar t libcalc.a

2️⃣ 查看符号

nm libcalc.a

3️⃣ 强制完全静态(不常用)

gcc -static main.c -L. -lcalc -o main

如果你是:

  • ✅ 准备发布 C 库
  • ✅ 交叉编译
  • ✅ Debian 打包(.deb)
  • ✅ 和 CMake / Makefile 结合

可以告诉我,我可以给你对应版本的做法。

0 踩