操作系统真象还原 第五章加载内核运行失败原因分析

第五章加载内核用系统自带的gcc编译链接发现,无法实现书上的内容,如下图

怀疑是系统自带的gcc版本太高导致,书中用到的gcc版本很低gcc4,而系统的gcc是12,如下图最后一行:

所以需要gcc降级,上网找各种资料,花费了N个小时都没搞定,有离线安装gcc4.4\gcc4.5\gcc4.7结果报各种莫名错误。

最后安装gcc4.9试最后一次:

  1. 下载地址:

https://mirrors.kernel.org/gnu/gcc/gcc-4.9.0/gcc-4.9.0.tar.gz

2、将压缩包拷到linux,并解压

tar -zxvf gcc-4.9.0.tar.gz

3、下载编译所需依赖项

cd gcc-4.9.0

./contrib/download_prerequisites

  1. 然后配置

./configure --prefix=/usr/local/gcc-4.9.0 --enable-threads=posix --disable-checking --disable-multilib --enable-languages=c,c++

5、再编译

make

等待很长时间,半个小时到2个小时不等,结果出现这个错误,崩溃啊!如下图:

上网查原因找到:该错误是由于某些语法在 c++17 标准中不在允许,而 gcc 11.3 版本默认好像是用的 C++17 标准

说明系统自带的c++编译器版本太新了

解决方案:装一个老一点的 gcc

我这个系统默认的gcc版本是12,这个版本太新了,古老版本的代码有很多在 C++17 里都不支持。就安装一个比较老的gcc,比如Ubuntu18.04自带的7.5.0版本(先试下)但是,gcc7.5.0在系统上不能直接sudo apt install,手动装会比较麻烦,如果你不想这么麻烦,可以装一些Ubuntu20.04支持的老gcc版本试试)

1>#下载 gcc 7.5.0 的源代码,解压

下载地址:http://ftp.gnu.org/gnu/gcc/gcc-7.5.0/gcc-7.5.0.tar.gz

tar -zxvf gcc-7.5.0.tar.gz

  1. 同样如上面配置

cd gcc-7.5.0

./contrib/download_prerequisites

./configure --prefix=/usr/local/gcc-7.5.0 --enable-threads=posix --disable-checking --disable-multilib --enable-languages=c,c++

  1. 编译

make

这次make很长时间,有2个多小时了,又出现各种错误,简直要崩溃了:

问题没解决,一个一个出现,让人很崩溃:我的系统是fedora自带的gcc是gcc12版本,编译书中第五章内容需要gcc4的版本才行,需要进行gcc降级,直接下载gcc4安装会有各种无法解决的错误,所以先将系统gcc12降级到gcc7.5,再降级到gcc4:也就是gcc12->gcc7.5->gcc4降级两次,毕竟书很老了,跟不上现在的系统了,建议作者如果有时间,可以出个最新版,否则这样花很多时间找bug会搞死人的)

结果gcc7.5make也会出现很多问题,耗时两天都在一个个解决,可惜解决不了,因为后来make一次花了4个小时甚至更长时间

最后搞得很崩溃,于是直接下载ubuntu14安装,因为这个版本系统自带的是gcc4.8

成功执行:

  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhllei

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值