Ik weet niet of dit topic hier op de goede plek staat, maar ik dacht dat de mensen die hier zaten er het meest over weten.
Ik heb verschillende bestanden met broncodes (*.c, en *.asm), waar ik *.o files van heb gemaakt. Ik wil van die *.o files 1 binary maken.
Omdat het assemblybestand 32-bits is (de andere zijn zo ook gecompileerd), moeten het gelinkte bestand ook 32-bits worden.
Ik heb alleen geen idee hoe ik dat voor elkaar krijg op een 64bits platform (gentoo amd64).
Nu probeer ik te linken met
Het link.ld bestand ziet er zo uit:
Ik heb verschillende bestanden met broncodes (*.c, en *.asm), waar ik *.o files van heb gemaakt. Ik wil van die *.o files 1 binary maken.
Omdat het assemblybestand 32-bits is (de andere zijn zo ook gecompileerd), moeten het gelinkte bestand ook 32-bits worden.
Ik heb alleen geen idee hoe ik dat voor elkaar krijg op een 64bits platform (gentoo amd64).
Nu probeer ik te linken met
code:
, maar zo komt er een 64bits binary uit, wat dus niet de bedoeling is.1
| ld -T link.ld -o exec.bin start.o main.o scrn.o |
Het link.ld bestand ziet er zo uit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
| OUTPUT_FORMAT("binary")
ENTRY(start)
phys = 0x00100000;
SECTIONS
{
.text phys : AT(phys) {
code = .;
*(.text)
*(.rodata)
. = ALIGN(4096);
}
.data : AT(phys + (data - code))
{
data = .;
*(.data)
. = ALIGN(4096);
}
.bss : AT(phys + (bss - code))
{
bss = .;
*(.bss)
. = ALIGN(4096);
}
end = .;
} |
Knight who says 你