linkerfile中输入和输出部分之间的差异?
虽然在生成的二进制文件或ELF文件的上下文中可以清楚地知道什么是节,但文档中的许多地方(与所使用的编译器无关)将其称为输入或输出节linkerfile中输入和输出部分之间的差异?,linker,ld,elf,linker-scripts,Linker,Ld,Elf,Linker Scripts,虽然在生成的二进制文件或ELF文件的上下文中可以清楚地知道什么是节,但文档中的许多地方(与所使用的编译器无关)将其称为输入或输出节 它们之间有什么区别?链接器使用对象文件(可能还有共享库)和输出 可执行的或共享的库。输入对象文件由命名的 节-.text,.data,.rodata,.bss等。输出文件也是如此 它 是链接器工作的主要部分,用于合并 将所有输入对象文件中的相同名称放入单个输出部分 在输出文件中使用该名称。例如,输入的所有.text部分 对象文件贡献到输出文件的.text部分 如果链
它们之间有什么区别?链接器使用对象文件(可能还有共享库)和输出 可执行的或共享的库。输入对象文件由命名的 节-
.text
,.data
,.rodata
,.bss
等。输出文件也是如此
它
是链接器工作的主要部分,用于合并
将所有输入对象文件中的相同名称放入单个输出部分
在输出文件中使用该名称。例如,输入的所有.text
部分
对象文件贡献到输出文件的.text
部分
如果链接器确定某些输入节是多余的,则可能会从输出文件中丢弃这些输入节。一般来说,源代码(#pragma-like)中分隔的节是否为输入节,最后链接器文件中引用的部分是输出部分?@标准的C或C++中的URNENEFRD没有定义分段的语法手段。节定义通常完全由编译器负责。编译器可能具有非标准扩展,允许您将对象分配给命名节。有关GCC,请参阅中的
\uuuuu属性(节(“”))
文档,此类扩展用于专用目的。@urnenfeld使用源语言扩展名定义的任何节都将成为编译器生成的目标文件的节,并将成为链接器的输入节。