操作系统实验课的第一个实验,所以作业内容之外记录了一些环境配置的方法。
操作系统:ubuntu20.04LTS
实验步骤:https://blog.csdn.net/zwx54088/article/details/115718828
chapter04
cpuid.s顺利完成
/*cpuid2.s部分开始出现问题,先是python版本不匹配的问题,有两个方向,修改文件中使用的py版本,或者安装文件中的py版本。具体一会儿谈。
很多解决办法中提到yum,方便起见安装一个。注意搜索ubuntu安装yum(而不是linux,搜不到)。找到如下结果。
ubuntu 安装yum:https://blog.csdn.net/qq_43029747/article/details/94874442 */
以上问题各种报错(python、ld:can not find lc等)本质是64位环境下对32位程序不兼容,搜索“64位环境编译32位程序”找到对应教程:https://blog.csdn.net/msdnwolaile/article/details/50185103,根据教程配置后终于顺利完成实验chapter04部分。
chapter05
“汇编代码 编译出现-invalid instruction suffix for push”的问题,解决办法:https://blog.csdn.net/jackailson/article/details/82192273 。
第6题出现报错,一开始是“bash: ./movtest3: No such file or directory”,原因是忘了ld链接,虽然出现了.o文件但是没用。然后是“bash: ./movtest3: Accessing a corrupted shared library
”,这是因为虽然链接了,但因为缺少了“--32”(as)和“-m elf_i386”(ld),按默认编译成了64位的可执行文件,但代码是基于32位cpu的。只加了后者,as时忘记加“--32”的话会出现“ld: i386:x86-64 architecture of input file `movtest3.o' is incompatible with i386 output”的报错。全部修正后成功运行。(这一串bug是否出现还要看是否含不兼容的代码)
后续都参考前述即可。