Linux 关于GNU链接器编辑器的问题;ld";?
我有2个与GNU as组合的obj文件,它们是:Linux 关于GNU链接器编辑器的问题;ld";?,linux,assembly,gnu,Linux,Assembly,Gnu,我有2个与GNU as组合的obj文件,它们是: a、 o:我的专业是什么 b、 o:一些实用函数 a、 o没有入口点。最后一个链接文件将被加载到内存中,执行将跳转到其最开始加载的地址,其中是a.o的第一个指令 现在我想把它们和GNULD连接起来。我想让a.o在最终文件中出现在b.o之前。我怎么能控制这一切?我是否必须创建一个自定义节并在链接器脚本中编写如下内容: SECTIONS { . = 0x7c00; .text : { *(.text) } .my_custom_sec
- a、 o:我的专业是什么
- b、 o:一些实用函数
SECTIONS
{
. = 0x7c00;
.text : { *(.text) }
.my_custom_section : { *(.my_custom_section) }
.data : { *(.data) }
.bss : { *(.bss) }
}
OUTPUT_FORMAT(binary)
ld a.o b.o -o final.bin
ld b.o a.o -o final.bin
更新
这个问题有问题吗?我发错了吗?如果是这样,请让我知道,伙计们。非常感谢
目前,我发现输入文件的命令行顺序似乎是相关的
如果我喜欢这个:
SECTIONS
{
. = 0x7c00;
.text : { *(.text) }
.my_custom_section : { *(.my_custom_section) }
.data : { *(.data) }
.bss : { *(.bss) }
}
OUTPUT_FORMAT(binary)
ld a.o b.o -o final.bin
ld b.o a.o -o final.bin
a.o.的内容将出现在b.o.之前
如果我喜欢这个:
SECTIONS
{
. = 0x7c00;
.text : { *(.text) }
.my_custom_section : { *(.my_custom_section) }
.data : { *(.data) }
.bss : { *(.bss) }
}
OUTPUT_FORMAT(binary)
ld a.o b.o -o final.bin
ld b.o a.o -o final.bin
否则的话
是否意味着要像这样进行控制?ld的操作顺序实际上是相关的 除非以某种方式明确说明,否则入口点是列表中第一个文件的第一个代码字节 生成的可执行文件总是按调用顺序包含.o文件的内容。(使用.a文件会变得复杂)。根据: 引用文件的选项。。。相对于对象文件和其他文件选项,在命令行中显示选项的位置读取文件 因此,二进制文件的顺序就是它们在命令行上的显示顺序
因此,正如您在更新中所提到的,它是要被控制的。谢谢R Samuel Klatchko。我昨晚读到这篇声明,当时我并不确定。谢谢你的确认,谢谢约书亚。这是一件我通常忽略的微妙的事情。