随笔分类 -  Linux编程

摘要:静态链接库在程序编译阶段就完成了链接工作,完成链接后,依赖的库就都打入了可执行文件中,所以文件大小一般会比较大。 而动态库链接库是在程序运行时才被链接的,所以磁盘上只要保留一份副本,因此节约了磁盘空间。如果发现了bug或要升级也很简单,只要用新的库把原来的替换掉就行了。Linux环境下的动态链接对象 阅读全文
posted @ 2023-02-05 20:09 Aitozi 阅读(229) 评论(0) 推荐(0) 编辑
摘要:现代操作系统如何装载可执行文件? 给进程分配独立的虚拟地址空间 建立虚拟地址空间和可执行文件的映射关系 把CPU指令寄存器设置成可执行文件的入口地址,启动执行 可执行文件在装载的过程中实际上是映射的虚拟地址空间,所以可执行文件通常被叫做映像文件(或者Image文件). ELF文件的两种视角 Sect 阅读全文
posted @ 2023-02-05 13:34 Aitozi 阅读(162) 评论(0) 推荐(0) 编辑
摘要:看以下例子 main.c extern int x; int main() { int y = 100; swap(&x,&y); return 0; } int x = 1; void swap(int* x, int* y) { int temp = *x; *x = *y; *y = temp 阅读全文
posted @ 2023-02-04 22:18 Aitozi 阅读(198) 评论(0) 推荐(0) 编辑
摘要:编译过程拆解 预处理处理生成.i文件, .i文件还是源码文件 将所有的宏定义#define展开。 处理#if, #else, #endif等条件编译指令 处理#include, 原地插入文件 cpp HelloWorld.c > HelloWorld.i可以这样来进行预编译,cpp是C prepro 阅读全文
posted @ 2023-02-04 19:19 Aitozi 阅读(775) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示