CSAPP第七章笔记

 第七章总结图

 注意:

1.在Linux系统中,生成动态库时执行的命令:gcc -fPIC -shared -o xxx

其中-shared是表明在装载时进行重定位,-fPIC是表明生成地址无关代码。

2.显示使用动态库的方法:

linux系统中:

调用dlopen(),dlsym(), dlerror(),dlclose()这四个函数进行动态库的显示调用

Windows系统中

在windows中只需要调用dll文件即可,使用LoadLibrary(), GetProcAddress(), FreeLibrary()三个函数,具体可以参考下面博客

https://blog.csdn.net/liangyanghui/article/details/77981848

3.隐式使用动态库

linux在输入指令时加入动态库的库路径,以及在程序中加入动态库的头文件

windows中隐式使用时,头文件、lib文件和dll缺一不可,lib文件可以通过#gragma comment(lib, "xxx")语句在程序中添加,也可以通过配置VS的项目来添加,dll暂时知道的项目的库目录必须包含动态库才可以。

4.在制作动态库时,windows下的动态库函数需要被调用,一定要加__declspec(dllexport),但是linux中使用的动态库不需要加

5.所有的目标文件以及静态库,动态库,linux中都是ELF文件格式,windows中都是PE文件格式。

6.动态库和静态库的区别

加载的时机不一样,动态库是在程序运行时加入,不需要经过编译阶段,所以动态库更改不需要重新编译,静态库是在程序链接时加入的,所以静态库更改以后,需要重新编译。

静态库每次更改都需要复制一次使用到的函数到内存中,动态库则不需要,如果内存中已经存在这个函数了,那就不会复制了,可以节省空间。

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值