我目前正在关注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不是参数。)。我删除了多引导内容,因为我将使用一个扇区长的引导程序加载目标文件。
答案 0 :(得分:1)
如果我没弄错的话,你的问题确实存在,真的, 真的 简单:
您无法访问linker.ld
。尝试以超级用户身份运行或更改权限。
如果这还没有解决,那么您就遇到了实际问题。请勿尝试使用-T
标记。
编辑:亲爱的上帝,我没想到这是对的。谢谢!