【Linux】动态链接和静态链接

文章介绍了Linux系统中函数库的两种主要类型——静态库和动态库。动态库在运行时进行链接,程序依赖动态库,而静态库在编译时将库代码合并到可执行文件中,使得程序独立运行。ldd工具用于检查程序的动态库依赖,而静态链接可以通过安装glibc-static和libstdc++-static来实现。
摘要由CSDN通过智能技术生成

函数库一般分为静态库和动态库两种

  • 动态库:使编译器对用户的程序进行动态链接
    动态链接:拷贝的是动态库中当前程序所需代码的地址到可执行程序中的相关位置,可在执行时链接到动态库中的相关,即动态链接的可执行程序再运行时仍然依赖于动态库,若动态库缺失,程序则无法运行
  • 静态库:使编译器对用户的程序进行静态链接
    静态链接:直接把静态库文件中的所需代码拷贝到可执行文件中,链接成功后的可执行程序不依赖任何库即可正常运行

Linux下默认进行的是动态链接
ldd 脚本可查看列出动态库依赖关系
在这里插入图片描述
libc.so.6 表示用于动态链接的库为C动态库,libXXX.so.6 ,so为动态库后缀

可主动进行静态链接来观察
一般云服务器默认只有动态库,静态库需手动安装
yum install glibc-static libstdc++-static -y
主动静态链接
gcc test.c -o test-static -static
再次使用ldd提示不是动态链接的可执行程序
在这里插入图片描述
查看静态链接程序的文件属性
在这里插入图片描述
再查看一下动态链接的程序的文件属性
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值