【发布时间】:2017-02-16 04:44:04
【问题描述】:
我目前正在关注 OSDev 的 Bare Bones 教程,我已经设置了所有内容并将内核和引导加载程序编译到目标文件中,并且我有 .ld 文件。但是,当我尝试使用 i686-elf-gcc -T linker.ld -o myos.bin -ffreestanding -O2 -nostdlib boot.o kernel.o -lgcc 链接文件并将其生成到 bin 中时,我收到此错误:
.../i686/bin/../lib/gcc/i686-elf/4.8.2/../../../../i686-elf/bin/ld.exe: cannot open linker script file linker.ld
collect2.exe: error: ld returned 1 exit status
我正在使用 GCC 并使用 i686-elf-gcc 的编译版本,其中包括更多编译器,并且我添加了 4 个缺少的 dll(也与链接器无关),但我安装了 MinGW 并添加了它们。我在 Windows 10 x64 上。我发现的许多解决方案或解决方法只是带来了更多错误或对错误完全没有任何作用(-T 没有任何作用,-noixemul 不是参数。)。我删除了多重引导内容,因为我将使用一个扇区长的引导加载程序来加载目标文件。
【问题讨论】:
-
你确定这是 gcc 的完整输出吗?
-
查看文件是否存在...尝试使用 versbose 选项
-Wl,--verbose以获取更多信息,例如链接器在哪里搜索链接器脚本...如果有文件,请查看@987654324 的权限@ 可能有帮助
标签: c gcc linker operating-system windows-10