【C语言】静态链接库文件(.a)和object文件(.o)区别

推荐一款 求职面试、刷题学习 的神器:👉*点击跳转* ,快来看看吧!


静态链接库(.a)文件其实就是将多个object文件(.o)文件打包成一份文件。链接过程可以使用.a或者.o文件。测试一下,三个文件 main.c / fun1.c / fun2.c 分别是:

main.c:

#include "stdio.h"

int fun1(int b);
int fun2(int b);

void main()
{
	printf("%d,%d\r\n",fun1(12),fun2(12));
}

fun1.c:

int fun1(int b)
{
	return b * 2;
}

fun2.c:

int fun2(int b)
{
	return b / 2;
}

将每个源文件单独编译成.o文件,最后一起链接:

将 fun1.c 和 fun2.c 编译成.o文件,然后使用ar工具打包成静态链接库文件 fun.a ,最后链接 main.o 和 fun.a:

注意链接顺序,fun.a 需要在 main.o 后面才行,因为gcc在链接静态库时是往后找符号,不往前查找,所以写在前面不会被查找到。


推荐一款 求职面试、刷题学习 的神器:👉*点击跳转* ,快来看看吧!


C语言中的隐式静态链接库(.a)是一个在编译时将的对象代码与应用程序一起链接起来的文件。它作为一个整体被插入到可执行文件中,使得应用程序在运行时能够使用其中的函数和变量。 使用隐式静态链接库的主要步骤如下: 1. 首先,需要将文件(.a文件)放置在合适的路径下,确保编译器能够找到它。 2. 在编写C语言程序时,需要包含对应的文件,以便能够使用中的函数和变量。 3. 在使用函数或变量时,需要在编译命令中链接对应的文件。这可以通过在编译命令中使用参数"-l"和"-L"来完成。"-l"用于指定文件的名称,"-L"用于指定文件的路径。 4. 编译时,编译器会从指定的文件中提取需要的函数和变量,并将它们与应用程序的代码合并在一起生成可执行文件。 隐式静态链接库的一个优点是,使用它们可以直接将的功能嵌入到可执行文件中,无需额外的文件依赖。这样可以简化程序的部署和分发。 然而,隐式静态链接库的缺点是,当多个应用程序都使用同一个时,每个可执行文件都会包含的副本,导致可执行文件的大小增加。而且,如果的更新需要重新编译所有依赖它的应用程序。 总之,隐式静态链接库是一种在编译时将的对象代码与应用程序进行链接的方式,使得应用程序能够直接使用中的函数和变量。它的使用需要在编译命令中显式指定文件,并将其与应用程序代码合并生成可执行文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值