Linux基础-链接 -- 动静态链接 --特点、区别、静态库安装下载

1.链接是什么?

我们的程序,和 库(语言一定会有自己的标准库) 结合的过程就叫做链接。

2.为什么有链接?

让开发站在巨人的肩膀,提高开发效率。

c语言库:

ls /user/include/

动静态库的特点与区别:

静态库是指编译链接时,把库文件的代码全部加入到可执行文件中,因此生成的文件比较大,但在运行时也就不再需要库文件了。其后缀名一般为“.a”


动态库与之相反,在编译链接时并没有把库文件的代码加入到可执行文件中,而是在程序执行时由运行时链接文件加载库,这样可以节省系统的开销。动态库一般后缀名“.so”,如前面所述的 libc.so.6 就是动态库。gcc 在编译时默认使用动态库。完成了链接之后,gcc 就可以生成可执行文件,如下所示。 gcc test.o –o test.c


gcc默认生成的二进制程序,是动态链接的,这点可以通过 file 命令验证

Linux:

动态库: .so

静态库: .a

Windows:

动态库:.dll

静态库: .lib


共享动态库:一旦动态库缺失,程序中所有动态链接的程序,都无法执行

静态链接的应用场景:

在编译的时候,把库中的方法,拷贝到我自己的可执行程序中,不用在关心库的缺失。所以注定静态链接形成的可执行程序不依赖任何库,因此当所编译程序 centos 8 ...具有非常强的跨平台性,可静态链接,在各种平台都可以跑。

静态库的安装:(默认情况下,linux上,静态库是默认没有安装的)

这个命令是在Linux系统中使用yum包管理器安装静态版本的glibc和libstdc++库。-y标志表示自动回答"是"以接受所有的问题。

sudo yum install -y glibc-static libstdc++-static

文件大小的区别

当我们制作可执行的文件(你可以随便使用一个正确的c语言代码来测试):

静态:

gcc test.c -o mytest-static -static

动态:

gcc test.c -o mytest

最后我们可以明显观察到两者文件大小的区别

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值