写在前面
(标题一定要长长长)
虽然说是该系列之一,不过也仅此一篇。由于问题有好几个,我就不另开其他的文章记录了,全糅杂于此。
实验内容
在Linux上编译安装Nachos, 还有搭建交叉编译环境
实验环境
腾讯云主机 Centos7.0 64位,
gcc 4.8.5
Nachos 4.1
结果
只实现了在centos上编译安装Nachos,没能成功搭建
交叉编译环境 ค(TㅅT)
遇到的问题以及解决
1.make depend
fatal error: iostream.h no such file or directory
解决:
将
#include “iostream.h”
改为
#include “iostream”
using namespace std;
详情请看:C++ - fatal error: iostream.h no such file or directory [duplicate] - StackOverflow
2.make
g++: error: unrecognized command line option ‘-fwritable-strings’
解决:
修改NachOS-4.1/code/build.linux/Makefile,将-fwritable-strings去掉,即:
CFLAGS = -ftemplate-depth-100 -Wno-deprecated -g –Wall -fwritable-strings (INCPATH) (DEFINES) $(HOSTCFLAGS) –DCHANGED
为
CFLAGS = -ftemplate-depth-100 -Wno-deprecated -g -Wall (INCPATH) (DEFINES) $(HOSTCFLAGS) –DCHANGED
也可参考:
compiling - Scanalyze install - Ask Ubuntu
3.make
如果遇到了:
解决
修改NachOS-4.1/code/lib/list.cc文件,将错误信息中所出现的所有函数(如IsEmpty()等)和变量(first,last等)增加this指针,即:this->IsEmpty(),this->first,this->last等
当然不能盲目修改,可以边看它给的error信息边修改。
小Tips:
a. vim里,:set number可以显示行号
b. :256可以跳到256行(根据调试信息快速定位到有问题的那一行)
c. cd -可以切换回之前的目录,比如我之前在/usr/local目录,现在在/usr/local/ostest3目录下,那么我用cd -就能快速切回之前的/usr/local目录
4.依然是make ┑( ̄Д  ̄)┍
Error: invalid instruction suffix for `push’
这里给出两个参考:
a. c++ - Error: invalid instruction suffix for `push’ - Stack Overflow
然而我尝试了加–32去编译以后还是失败了:
它给的结果是
make : unrecognized option ‘–32’
有哪位小伙伴成功了的告诉我一下这个方法怎么用
补充
我那天上课做实验时用的是make –32, 昨天上百度查好像应该是gcc的时候加的参数。尴尬
b. Linux AT&T汇编错误:Error: invalid instruction suffix for `push’ - Linux操作系统:Ubuntu_Centos_Debian - 红黑联盟
不过这个方法是可行的~所以只要在它提示里的文件开头加上 .code32就行啦
最终效果图
搭建交叉编译环境时遇到的问题
tar解压出错:
gzip: stdin: unexpected end of file
参见:
tar解压出错:gzip: stdin: unexpected end of file的解决
原因及解决:
压缩文件不完整,需要删了重新下一次
(ノಠ益ಠ)ノ彡┻━┻ 反正搞了一天还是不知道怎么在64位机子上搭建Nachos的这个交叉编译环境,求大佬指教
最新进展
最终64位向乌班图32位屈服了。到交叉编译这里的./configure是可以顺利进行的!