
Linux
文章平均质量分 97
Linux
Projectsauron
昨夜西风凋碧树,独上高楼,望尽天涯路。
展开
-
动态链接过程分析
静态链接得到的可执行程序,被操作系统加载之后就可以直接执行。因为在链接的时候,链接器已经把所有目标文件中的代码、数据等 Section,都组装到可执行文件中了。并且把代码中所有使用的外部符号(变量、函数),都进行了重定位(即:把变量、函数的地址,都填写到代码段中需要重定位的地方),因此可执行程序在执行的时候,不依赖于其它的外部模块即可运行。这里的前提是可执行文件是可写的。而对于动态链接来说,在编译阶段,仅仅是在可执行文件或者动态库中记录了一些必要的信息。原创 2024-10-23 09:12:52 · 2874 阅读 · 5 评论 -
静态链接过程分析
这样,通过两个重定位操作,main.c的两个外部符号就解决了地址重定位问题。中间圈出的两个数据和前面计算的是一样的!以上就是静态链接过程中地址重定位的基本过程,与动态链接相比,静态链接还是相对简单很多。原创 2024-10-22 12:18:54 · 3056 阅读 · 11 评论 -
Linux 错误码
在 Linux 系统中,错误码是用来表示操作系统运行过程中发生的错误的数字代码。错误码通常由负数表示,0 表示成功,正数表示警告或其他非致命错误。为了开发者更好地处理系统错误,内核中预定义的错误几乎涵盖了我们可能遇到的所有问题。一些错误的宏定义在,还有一部分定义在中。当函数执行发生错误的时候,操作系统会将这个错误所对应的编号赋值给errno变量,每一个进程都维护了自己的 errno 变量,它是程序中的全局变量,该变量用于存储就近发生的函数执行错误编号。原创 2024-08-09 16:31:01 · 51873 阅读 · 3 评论 -
x86/x86_64 下的 CPU 控制寄存器
x86/x86_64 CPU 中提供了控制寄存器,来决定 CPU 的操作模式和当前执行任务的属性。这些寄存器在 32 位模式下是 32 bit,在 64 位模式中,控制寄存器扩展为 64 bit。CPU 架构中共有 CR0、CR1、CR2、CR3、CR4、CR8 共 6 个控制寄存器。原创 2024-07-20 23:14:37 · 58290 阅读 · 0 评论 -
ELF 文件格式
ELF 是一种常用的可执行文件和可链接库格式。它是一种通用的二进制文件格式,用于在 Unix 和类 Unix 系统上进行可执行文件和库的存储和传输。原创 2024-09-05 20:50:54 · 35256 阅读 · 11 评论 -
Linux 下 C/C++ 程序编译的过程
本文将介绍如何将 C/C++ 语言编写的程序转换成为处理器能够执行的二进制代码的过程,包括四个步骤:预处理()编译()汇编()链接(在此之前,首先来看一下 GCC 工具链。原创 2024-09-08 15:52:17 · 32548 阅读 · 37 评论