小编Hel*_*ais的帖子

MinGW 的 ld 无法对非 PE 输出文件执行 PE 操作

我知道还有其他一些类似的问题,无论是否是 StackOverflow。我为此研究了很多,但仍然没有找到单一的解决方案。我正在做一个操作系统作为一个副项目。我一直在做汇编,但现在我想加入 C 代码。为了测试,我制作了这个汇编代码文件(称为 test.asm):

[BITS 32]

GLOBAL _a

SECTION .text

_a:
    jmp $
Run Code Online (Sandbox Code Playgroud)

然后我制作了这个 C 文件(称为 main.c):

extern void a(void);
int main(void)
{
    a();
}
Run Code Online (Sandbox Code Playgroud)

为了链接,我使用了这个文件(称为 make.bat):

"C:\minGW\bin\gcc.exe"  -ffreestanding -c -o c.o main.c
nasm -f coff -o asm.o test.asm
"C:\minGW\bin\ld.exe" -Ttext 0x100000 --oformat binary -o out.bin c.o asm.o

pause
Run Code Online (Sandbox Code Playgroud)

我一直在研究多年,但我仍在努力寻找答案。我希望这不会被标记为重复。我承认存在类似的问题,但都有不同的答案,没有一个对我有用。

问题:我做错了什么?

assembly gcc mingw nasm osdev

4
推荐指数
1
解决办法
2895
查看次数

标签 统计

assembly ×1

gcc ×1

mingw ×1

nasm ×1

osdev ×1