![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
《程序员的自我修养---链接、装载与库》
文章平均质量分 92
《程序员的自我修养---链接、装载与库》
phygram
加油→_→
展开
-
《程序员的自我修养》第4章---静态链接
第4章 静态链接4.1 空间和地址分配:a.c :extern int shared;int main() { int a = 100; swap(&a, &shared);}b.c :int shared = 1;void swap(int* a, int* b){ *a ^= *b ^= *a ^= *b;}对于链接器来说,整个链接过程,它的工作就是将几个输入的目标文件加工、合并成一个输出的可执行文件。例如将输入的 a.o 和 b.o 文件合并原创 2021-11-13 23:25:25 · 4646 阅读 · 0 评论 -
《程序员的自我修养》第3章---目标文件里有什么
第3章 目标文件里有什么3.1 目标文件的格式:编译器编译源代码后生成的文件叫做 “目标文件”。目标文件从结构上讲,它是已经编译后的可执行文件格式,只是还没有经过链接的过程,其中可能有些符号或有些地址还没有被调整。其实它本身就是按照可执行文件格式存储的,只是跟真正的可执行文件在结构上稍有不同。现在PC平台流行的 “可执行文件格式”(Executable)主要是Windows下的PE(Portable Executable)和Linux的ELF(Executable Linkable Format)原创 2021-11-13 19:34:34 · 5501 阅读 · 0 评论 -
《程序员的自我修养》第2章---编译和链接
第2章 编译和链接2.1 被隐藏了的过程:一个“编译”过程可以分为4个步骤:预处理(Prepressing)编译(Compilation)汇编(Assembly)链接(Linking)实际上gcc这个命令只是一些后台程序的包装,它会根据不同的参数要求去调用:预编译编译程序 cc1、编译器 cc1、汇编器 as、链接器 ld。2.1.1 预编译命令:gcc -E hello.c -o hello.i或者:cpp hello.c > hello.i使用 “预编译器原创 2021-11-06 23:08:11 · 320 阅读 · 0 评论 -
《程序员的自我修养》第1章---温故而知新,背景知识(硬件、操作系统、线程)
1.3 站得高,望得远:计算机系统软件体系结构采用一种层的结构,有人说过一句名言:“计算机科学领域的任何问题都可以通过增加一个间接的中间层来解决”“Any problem in computer science can be solved by another layer of indirection.”这句话几乎概括了计算机系统软件体系结构的设计要点,整个体系结构从上到下都是按照严格的层次结构设计的。1.4 操作系统做什么:操作系统的一个功能是 提供抽象的接口,另一个主要功能是 管理硬件资源原创 2021-11-06 22:57:57 · 4750 阅读 · 0 评论