【发布时间】:2016-09-13 15:03:58
【问题描述】:
我写了以下加载器:
GLOBAL _start
EXTERN main
section .text
_start:
xor ebp, ebp ; ebp = 0
pop esi ; esi = argc
mov ecx, esp ; ecx = argv
and esp, 0xFFFF ; align esp
push ecx ; load argv
push esi ; load argc
call main ; call main
push eax ; exit with main's ret value
mov ebx,0
int 80h
还有一个简短的main 函数,现在我尝试使用 gcc 运行编译和链接这些文件,但使用命令
nasm -f elf32 loader.asm
gcc -c -m32 main.c
gcc -m32 main.o loader.o -o main.out
导致_start 错误的多重定义。我想这是因为 gcc 试图链接他自己的_start。我怎样才能防止这种情况发生?
【问题讨论】:
-
可能带有 gcc
-nostdlib标志?