c - 目标文件、链接器、文件等 : where can I find an entry-level explanation for all that?

标签 c gcc compiler-construction

<分区>

我认为自己是一个相当有经验的程序员;然而,直到今天我还完全无法解释目标文件是什么,或者它包含什么。我不知道为什么 GCC 需要 -fPIC 选项来创建共享库。我不知道链接器真正是什么,也不知道它是如何工作的。我不知道 ranliblibtoolnm 等到底做了什么。我知道如何反汇编二进制文件,但不确定如何解释我看到的内容。

简而言之,像许多程序员一样,我对编译过程的理解极其有限;在我看来,可用的文档似乎是为那些已经知道的人准备的,联机帮助页也是如此。

Google 也不是很有帮助,Wikipedia 也不是。因此,是否有关于将程序文本转换为可执行二进制文件的基本概念的入门级解释?

最佳答案

您需要 John Levine 的书 Linkers and Loaders,可以在 his website 上免费找到其未更正的校样。 (但我建议找到已出版的书)。代码生成后构建链中的所有内容都清楚地包含了很好的示例。我怎么推荐都不为过。

关于c - 目标文件、链接器、文件等 : where can I find an entry-level explanation for all that?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19464987/

相关文章:

c - 错误 : ‘asm’ undeclared (first use in this function)

C 编程基础知识 : Why can't I see the . o 使用 gcc 编译 .c 文件后的文件

perl - 如果我的代码中有未经检查的异常,Perl 编译器能告诉我吗?

c - 为什么我在获取时间戳时得到负值?

在c中复制文本文件的内容

c++ - 编译失败,c++程序以静态变量为私有(private)成员变量

linux - Linux下的gcc可执行文件在哪里?

c++ - 快速按需 C++ 编译

c - 如何用 C 语言从文本文件构建数组

c - 在 C 中使用 BSD 套接字实现 FTP