静态链接与动态链接

动态链接,在windows上是Dynamic link library (DLL),在UNIX或Linux上是Shared Library(.so)

  • 动态链接和静态链接的区别

    静态连接就是在程序编译阶段,将程序需要的所有东西打包放到一起;而动态链接是在程序需要运行时,根据需要动态的决定链接哪一个库,哪一个函数。

  • linux编译文件说明

    .o-目标文件,相当于windows中的.obj文件
    .so-动态链接库(使用$ gcc a.c b.c -fPIC -shared -o libtest.so生成)
    .a-静态链接库,是多个.o合在一起(使用ar -r mylib.a mylib.o命令生成)
    .la-libtool自动生成的一些共享库,主要记录了一些配置信息

    可以使用ldd命令查看如何调用动态库中的函数

  • 编译参数解析

    -shared 指定生成动态链接库
    -fPIC 表示编译为位置独立的代码
    -L. 表示要连接的库在当前目录中
    -ltest 编译器查找动态链接库时有隐含的命名规则,即在给出的名字前面加上lib,后面加上.so来确定库的名称​

  • linux与程序编译有关的文件夹功能说明

    /bin存放一些普通的基本命令,如ls,chmod(普通用户就行)
    /sbin属于基本的系统命令,如shutdown,reboot(管理员才能有权限)
    /usr/bin存放在后期安装的一些软件的运行脚本,如g++、gcc、 gzip
    /usr/sbin放置一些用户安装的系统管理的必备命令 ,如httpd、sendmail、swap、tcpd、tcpdump
    /usr/local/bin /usr/local/sbin 是用户自己编译安装的
    注:放在/lib/usr/lib/usr/local/lib里的so库直接用-l参数就能链接

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值