LINUX.ORG.RU

Вопрос по gas и/или ld.


0

2

Как обозначить символ (имя ф-ции) таким образом, чтобы ld нашёл его в другом файле. Например:

[seiken@localhost ~]$ cat a.s
jmp my_start
nop
nop
[seiken@localhost ~]$ cat b.s
my_start:
mov $0, %eax
[seiken@localhost ~]$ as a.s -o a.o
[seiken@localhost ~]$ as b.s -o b.o
[seiken@localhost ~]$ ld --nostdlib a.o b.o
ld: warning: cannot find entry symbol _start; defaulting to 08048054
a.o:(.text+0x1): undefined reference to `my_start'

★★★★★
.globl my_start
	.type	my_start, @function

gcc еще зачем-то добавляет

my_start: //...
.size   my_start, .-my_start
Не уверен, обязательно ли добавлять size.

linuxfan
()

Спасибо, теперь собирается. .size, как я понял, нужен только если в одном бинаре несколько ф-ций, чтобы загрузчик мог определить границы между ними. У меня пока только одна ф-ция.

seiken ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.