Gcc *.ld文件中有我不理解的内容
在带有ARM GCC的*.ld文件中有一些语句我无法理解Gcc *.ld文件中有我不理解的内容,gcc,arm,gnu,ld,Gcc,Arm,Gnu,Ld,在带有ARM GCC的*.ld文件中有一些语句我无法理解 .init : { __initcall_start = .; KEEP(*(.initcall1.init)) KEEP(*(.initcall2.init)) KEEP(*(.initcall3.init)) KEEP(*(.initcall4.init)) KEEP(*(.initcall5.init)) KEEP(*(.initcall6.init)) __initcall_end
.init :
{
__initcall_start = .;
KEEP(*(.initcall1.init))
KEEP(*(.initcall2.init))
KEEP(*(.initcall3.init))
KEEP(*(.initcall4.init))
KEEP(*(.initcall5.init))
KEEP(*(.initcall6.init))
__initcall_end = .;
} >FLASH
我用记事本搜索了整个项目,值initcall1
只出现在这个*.ld文件中
E:\pos-orig\Gemini\system\sys_generic.ld (1 hit)
Line 26: KEEP(*(.initcall1.init))
什么是initcall1
,initcall2
。。。用来做什么
我如何理解KEEP(*.initcall3.init))
名为.initcall1.init
,…,.initcall6.init
的节
所有输入文件都将在符号之间输出\uu initcall\u start
和输出.init
部分中的\uu initcall\u end
,并且所有
将从垃圾收集中保留
什么是initcall1,initcall2。。。用来做什么
我如何理解“KEEP(*.initcall3.init))
这上面说
名为.initcall1.init
,…,.initcall6.init
的节
所有输入文件都将在符号之间输出\uu initcall\u start
和输出.init
部分中的\uu initcall\u end
,并且所有
将从垃圾收集中保留
什么是initcall1,initcall2。。。用来做什么
我如何理解“KEEP(*.initcall3.init))
我想你错过了一个关键点。输入部分
initcallX.init
是按顺序排列的,因此放入initcall1.init中的任何内容都将位于initcall2.init之前,以此类推。因此,这是一个具有伪顺序的大数组。汇编程序和/或其他代码将遍历输出部分。否则,答案很好。可能代码/想法是从Linux偷来的,OPs POS项目没有使用所有的功能。我想你错过了一个关键点。输入部分initcallX.init
是按顺序排列的,因此放入initcall1.init中的任何内容都将位于initcall2.init之前,以此类推。因此,这是一个具有伪顺序的大数组。汇编程序和/或其他代码将遍历输出部分。否则,答案很好。可能代码/想法是从Linux偷来的,OPs POS项目没有使用所有的功能。