【发布时间】:2016-06-28 12:06:50
【问题描述】:
我正在阅读有关在http://wiki.osdev.org/Bare_Bones 上制作操作系统的教程。当我尝试使用以下命令链接 boot.o 和 kernel.o 时:i686-elf-gcc -T linker.ld -o myos.bin -ffreestanding -O2 -nostdlib boot.o kernel.o -lgcc ,我只是得到这个错误:
collect2: fatal error: cannot find 'ld'
compilation terminated.
我刚刚安装了带有 gcc-5.2.1 和 binutils-2.25.1 的全新 Ubuntu 15.10。 我在互联网上搜索了答案,但没有任何帮助。
【问题讨论】:
-
链接时直接使用链接器,不要调用GCC前端程序。 IE。
i686-elf-ld代替。 -
将“-v”标志添加到 gcc 命令行以查看所有路径可能会有所帮助。
-
@JoachimPileborg 当我尝试
i686-elf-ld命令时,它说它找不到命令。还有其他建议吗? @max630 它说:COLLECT_GCC=i686-elf-gcc COLLECT_LTO_WRAPPER=$HOME/opt/cross/libexec/gcc/i686-elf/5.2.0/lto-wrapper 目标:i686-elf 配置:../gcc- 5.2.0/configure --target=i686-elf --prefix=$HOME/opt/cross --disable-nls --enable-languages=c,c++ --without-headers 线程模型:单gcc版本5.2.0 (GCC) 那么,我到底想看到什么? -
你已经为交叉编译目标构建了一个 binutils 包?并安装在编译器所在的位置?
-
@JoachimPileborg 在我找到 collect2 程序源之后,我浏览了它,我认为源和程序输出不匹配。有什么想法吗?
标签: c gcc cross-compiling ubuntu-15.10