最近在研究xv6操作系统,想着先把它跑起来
可通过bochs或者qemu运行,运行方法直接make qemu或者make bochs,但由于各种原因,都没能成功得运行起来
bochs方面由于bochs版本原因,代码下的.bochsrc过于老旧,要改的东西挺多,而且改完之后似乎读取img文件的时候又有新的问题,解决不了后放弃
qemu方面是系统软件存在问题,具体是:运行时报
qemu: error while loading shared libraries: libnettle.so.6: cannot open shared object file: No such file or directory
的错误,看了下/lib文件夹下有libnettle.so libnettle.so.7.0 libnettle.so.7,就直接使用ls -s命令弄了个符号链接指向libnettle.so 运行时又有
qemu: /usr/lib/libnettle.so.6: version `NETTLE_6' not found (required by qemu)
的错误,这下就麻烦了,是动态连接库版本的问题,似乎qemu使用的是NETTLE_6,而我的系统里面是NETTLE_7
不得已只能从源码编译一个来使用了,盲猜了一个3.2版本,居然能用了
我的系统环境:Manjaro xfce版本, qemu 3.1.0
解决方案:
1.从https://ftp.gnu.org/gnu/nettle/ 下载3.2版本的源码
2. ./configure && make -j 4
3. cd /lib && ln -s [path to compiled shared lib] libnettle.so.6 (期间遇到一个奇怪的问题,在/lib下创建符号链接能用,在其他目录下创建不能用。。。) (或者直接将编译出来的动态链接库重命名后移动到/lib)