qemu源码编译
1、从github或者gitlab上克隆源码。
2、进入源码目录configure,一般配好–prefix(指定安装目录)。如果没有设置–target(需要模拟的目标架构),则默认编译所有版本。
3、在configure这一步可能存在同步子库的问题(如果你本来就是在gitlab上用https的方式clone的应该不会有这个问题):
原因: 因为qemu使用了decodetree等技术,这是后来作为子库添加到源码中的,所以./configure配置的时候会先同步子库。可是qemu源码是放在gitlab上的,如果用github克隆的镜像,git命令行设置的账户是github的,那么同步子库的时候会出现tls错误,默认的子库url是https的,会需要账户和密码,但是因为我git设置的是github的账户,猜测这里可能是因为git使用.gitmodules文件中设置的url同步子库的时候发现当前账号没法登录gitlab(账号对不上肯定没法克隆)。
方法: 要解决这个问题有两个方法。第一个方法是在自己的git上添加gitlab账户(没试过,因为我用的github账户)。
另一个方法就是将自己的ssh-keygen生成的公钥放在gitlab的账户上,然后将.gitmodules这个文件中的所有url格式从https修改为git@的版本。
#用vim打开,尝试用这个命令:
:%s/https:\/\//git@/g
#注意还需要替换一个infix:
:%s/.com\//.com:/g
经过上面这步的折腾以后不需要在git中添加gitlab账户了,反正gitlab上存在你的公钥,那就直接用免密的方式clone就好啦!
4、配置完成之后就是一般的make(可以配合-j n选项加快编译速度)和install(安装到第一步的指定目录)了。