ubuntu中编译linux-0.11因为gcc版本问题可能会出现一下错误
命令:make all
结果:
as86 -0 -a -o boot/bootsect.o boot/bootsect.s
ld86 -0 -s -o boot/bootsect boot/bootsect.o
as86 -0 -a -o boot/setup.o boot/setup.s
ld86 -0 -s -o boot/setup boot/setup.o
gcc-3.4 -m32 -g -I./include -traditional -c boot/head.s
make: gcc-3.4: Command not found
Makefile:62: recipe for target 'boot/head.o' failed
make: *** [boot/head.o] Error 127
原因是系统默认使用更高版本的gcc,即使卸载再下载也不能使用低版本,下面是解决方法。
需要工具:新立得软件管理器、gcc3.4的安装包(我所需要的版本)
1.下载新立得软件管理器:sudo apt-get install synaptic
2.gcc3.4:http://old-releases.ubuntu.com/ubuntu/pool/main/g/gcc-3.4/
需要下载三个文件,分别是
cpp-3.4_3.4.6-6ubuntu2_amd64.deb
gcc-3.4-base_3.4.6-6ubuntu2_amd64.deb
gcc-3.4_3.4.6-6ubuntu2_amd64.deb
文件很多,不要下错了。
进入下载后的文件夹,下载命令为:
sudo dpkg -i cpp-3.4_3.4.6-6ubuntu2_amd64.deb gcc-3.4-base_3.4.6-6ubuntu2_amd64.deb gcc-3.4_3.4.6-6ubuntu2_amd64.deb
此时,gcc-3.4已安装完成,但仍缺少相关类库做支撑,运行
sudo apt install gcc-multilib
若缺少as86和ld86还需
sudo apt install bin86
接下来打开软件管理器,搜索gcc,找到当前gcc前面被选中的版本,
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-3.4 10 //目标版本
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 30 //当前选中绿色的版本
再输入
sudo update-alternatives –-config gcc //两个-
会出现
有 2 个候选项可用于替换 gcc (提供 /usr/bin/gcc)。
选择 路径 优先级 状态
------------------------------------------------------------
* 0 /usr/bin/gcc-7 50 自动模式
1 /usr/bin/gcc-3.4 10 手动模式
2 /usr/bin/gcc-7 50 手动模式
要维持当前值[*]请按<回车键>,或者键入选择的编号:
输入1,回车(选择需要版本的编号)
执行该操作之后,输入gcc -v,可以看到现在的gcc版本已经是3.4.6。