在MacBook OSX High Sierra(10.13.3)启动xv6遇工具链错误
解决「未找到i386-*-elf版本GCC/binutils」的make启动错误
嘿,我之前折腾JOS的时候也碰到过这个一模一样的错误!别慌,这本质就是系统找不到你的交叉编译工具链,按下面几步来就能搞定:
先确认工具链是否安装到位
如果还没装交叉编译工具链,根据你的系统选对应的命令安装:- Ubuntu/Debian系:
sudo apt-get install gcc-i686-elf binutils-i686-elf - Arch Linux:
sudo pacman -S i686-elf-gcc i686-elf-binutils - 要是你是手动编译安装的工具链,得确保你把编译后的
bin目录路径记好,后面要用到。
- Ubuntu/Debian系:
检查工具链路径是否在PATH里
先验证系统能不能找到工具链:执行which i386-jos-elf-gcc(把前缀换成你实际安装的工具链前缀,比如i686-elf-gcc)。如果没有输出,说明路径没加到PATH里:- 临时生效:执行
export PATH=$PATH:/path/to/your/toolchain/bin,把/path/to/your/toolchain/bin换成你工具链实际的bin目录路径 - 永久生效:把上面的命令加到
~/.bashrc(用bash的话)或者~/.zshrc(用zsh的话),然后执行source ~/.bashrc(或对应的rc文件)让设置生效。
- 临时生效:执行
正确设置TOOLPREFIX环境变量
错误提示里已经点明了,如果你的工具链前缀不是默认的i386-jos-elf-,必须指定TOOLPREFIX:- 临时设置:先执行
export TOOLPREFIX=你的工具链前缀(比如export TOOLPREFIX=i686-elf-),然后再跑make qemu - 或者直接在make命令里指定:
make TOOLPREFIX=i686-elf- qemu - 想永久生效的话,同样把
export TOOLPREFIX=你的工具链前缀加到bashrc/zshrc里就行。
- 临时设置:先执行
最后验证工具链是否正常工作
执行你的工具链前缀-gcc --version(比如i686-elf-gcc --version),如果能正常输出版本信息,说明工具链没问题了,再重新执行你的make命令应该就能顺利启动QEMU了!
内容的提问来源于stack exchange,提问作者Cody Berry
相关产品推荐
相关产品推荐

