最近开发openharmony device单板,官方提供了许多芯片平台适配示例,都是通过qemu虚拟环境来验证的,于是也想自己动手试试qemu。大致分为一下几个步骤:
1.安装依赖(WSL Ubuntu 20.04)
sudo apt update
sudo apt install build-essential
sudo apt install zlib1g-dev
sudo apt install pkg-config
sudo apt install libglib2.0-dev
sudo apt install binutils-dev
sudo apt install libboost-all-dev
sudo apt install autoconf
sudo apt install libtool
sudo apt install libssl-dev
sudo apt install libpixman-1-dev
sudo apt install virtualenv
sudo apt install flex
sudo apt install bison
sudo apt install libgcrypt20-dev
1.确认python版本 >= 3.6
2.安装ninja
sudo apt-get install libglib2.0-dev
此外,还需安装好ninja等构建工具,否则在./configure时无法正常执行。
2.下载qemu源码
官网下载(网速较慢,我下了半天放弃了):https://www.qemu.org/download/https://www.qemu.org/download/
或者直接命令下载:
github下载(推荐),切换至release分支:
git clone https://github.com/qemu/qemu.git
3.编译qemu源码
配置工程:
cd qemu/
sudo mkdir /opt/qemu
./configure --prefix=/opt/qemu
配置时会自动clone一些代码,时间有点长,需要耐心等待。
执行成功如下所示:
编译代码
make -j8
4.安装qemu
sudo make install
5.不同架构的安装方法
5.1 CSKY架构qemu安装
参考如下链接安装,直接下载编译好的qemu程序包,但是需要注意改程序包是基于Ubuntu16.04的,我使用的平台是WSL2 Ubuntu 20.04,需要安装一些库的依赖:
SmartL_E802/README_zh.md · OpenHarmony/device_qemu - Gitee.comhttps://gitee.com/openharmony/device_qemu/blob/HEAD/SmartL_E802/README_zh.md查看缺失的库,ldd qemu-system-cskyv2
解决步骤:
sudo apt-get install libbrlapi-dev
安装后还是提示找不到库,这是因为版本不匹配导致的,在usr/lib目录下搜索可以看到libbrlapi.so.0.7.0库文件:
我这里为了省事,做法是直接创建一个libbrlapi.so.0.6的软连接链接到libbrlapi.so.0.7.0,毕竟如果提供的接口能够找到实现,还是可以直接用的。(建议直接从Ubuntu16.04的/usr/lib下拷贝)
find /usr/lib -name "libbrlapi*"
cd /usr/lib/x86_64-linux-gnu/
ln -s libbrlapi.so.0.7.0 libbrlapi.so.0.6
下面的按照提示安装:
sudo apt install libvdeplug-dev
sudo apt install libbluetooth-dev
sudo apt install libjpeg-dev
sudo apt install libsnappy-dev
sudo apt install libspice-server-dev
libng要特别注意下:
sudo add-apt-repository ppa:linuxuprising/libpng12
sudo apt-get update
sudo apt install libpng12-dev
运行测试:
5.2 Xtensa架构qemu安装
参考如下链接安装:
sudo apt-get install libglib2.0-dev
libpixman-1-dev
sudo apt-get install libgcrypt20-dev