0

0

Linux如何构建静态链接库_Linuxar归档库生成步骤详解

舞姬之光

舞姬之光

发布时间:2025-11-24 17:19:02

|

138人浏览过

|

来源于php中文网

原创

首先编译源文件为目标文件,再用ar命令打包成.a静态库,最后通过-L和-l参数链接使用,实现代码复用与模块化。

linux如何构建静态链接库_linuxar归档库生成步骤详解

在Linux环境下,静态链接库(Static Library)是一种将多个目标文件(.o)打包成一个归档文件(通常以 .a 为扩展名)的技术。程序在编译时会将库中的代码直接嵌入可执行文件中,因此不需要在运行时依赖外部库文件。下面详细介绍如何创建和使用静态链接库。

编写源文件与编译为目标文件

要构建静态库,首先需要准备一组C或C++源文件。例如,创建两个简单的函数文件:

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

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

使用gcc将其编译为对应的目标文件(注意:必须使用 -c 参数,且推荐加上 -fPIC 以便将来可能转为共享库):

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

使用ar命令创建静态库

Linux下使用 ar 命令将多个 .o 文件打包为静态库(.a 文件)。常用参数如下:

  • r:插入文件,若已存在则替换
  • c:创建新归档文件,不提示
  • s:生成索引,加快链接速度(也可用 ranlib 生成)

执行以下命令生成静态库 libmath.a:

    ar rcs libmath.a add.o sub.o

此时当前目录下会生成 libmath.a 文件,其中包含了 add.o 和 sub.o 的二进制代码。

使用静态库进行链接

编写主程序 main.c 调用库中的函数:

MiniMax Agent
MiniMax Agent

MiniMax平台推出的Agent智能体助手

下载
#include
int add(int a, int b);
int sub(int a, int b);

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

编译并链接静态库:

    gcc main.c -L. -lmath -o main

其中:

  • -L. 表示在当前目录查找库文件
  • -lmath 表示链接 libmath.a(去掉 lib 前缀和 .a 后缀)

如果头文件未包含,也可以手动创建 math.h 并用 #include "math.h" 引入函数声明。

查看与维护静态库

可以使用以下命令检查静态库内容:

  • ar -t libmath.a:列出库中包含的所有目标文件
  • ar -x libmath.a解压提取所有目标文件
  • ranlib libmath.a:重新生成符号索引(ar rcs 已自动处理)

添加新文件到现有库:

    gcc -c mul.c -o mul.o
    ar rcs libmath.a add.o sub.o mul.o

基本上就这些。静态库适合分发稳定模块,避免运行环境依赖问题。构建过程简单,核心是编译出 .o 文件,再用 ar 打包,最后链接使用。掌握这一流程,有助于组织大型项目或封装通用功能。

相关专题

更多
printf用法大全
printf用法大全

php中文网为大家提供printf用法大全,以及其他printf函数的相关文章、相关下载资源以及各种相关课程,供大家免费下载体验。

72

2023.06.20

fprintf和printf的区别
fprintf和printf的区别

fprintf和printf的区别在于输出的目标不同,printf输出到标准输出流,而fprintf输出到指定的文件流。根据需要选择合适的函数来进行输出操作。更多关于fprintf和printf的相关文章详情请看本专题下面的文章。php中文网欢迎大家前来学习。

280

2023.11.28

string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

315

2023.08.02

int占多少字节
int占多少字节

int占4个字节,意味着一个int变量可以存储范围在-2,147,483,648到2,147,483,647之间的整数值,在某些情况下也可能是2个字节或8个字节,int是一种常用的数据类型,用于表示整数,需要根据具体情况选择合适的数据类型,以确保程序的正确性和性能。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

537

2024.08.29

c++怎么把double转成int
c++怎么把double转成int

本专题整合了 c++ double相关教程,阅读专题下面的文章了解更多详细内容。

52

2025.08.29

C++中int的含义
C++中int的含义

本专题整合了C++中int相关内容,阅读专题下面的文章了解更多详细内容。

194

2025.08.29

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

1348

2023.06.21

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

701

2023.06.29

Java 桌面应用开发(JavaFX 实战)
Java 桌面应用开发(JavaFX 实战)

本专题系统讲解 Java 在桌面应用开发领域的实战应用,重点围绕 JavaFX 框架,涵盖界面布局、控件使用、事件处理、FXML、样式美化(CSS)、多线程与UI响应优化,以及桌面应用的打包与发布。通过完整示例项目,帮助学习者掌握 使用 Java 构建现代化、跨平台桌面应用程序的核心能力。

36

2026.01.14

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 7.1万人学习

Git 教程
Git 教程

共21课时 | 2.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号