target x86_64-linux-user 的编译
参考链接
qemu官方对centos7的编译支持到2021年4月,所以qemu 8.1.0的linux-user在centos7上编译不过,官方是不管的。
为了编译通过需要自己手动修改qemu的源码,只能修复一些宏参数的缺失,修改的基本思路是:
- 如果在系统中能够找到对应的宏定义,则包含对应的头文件
- 如果找不到,则屏蔽相应的代码
这个解决方法对应的qemu版本是8.0.0
修复的问题是
linux-user: Fix the build on systems without SOL_ALG
linux-user: Fix the build on systems without MAP_SHARED_VALIDATE
linux-user: Fix the build on systems without MADV_{KEEP,WIPE}ONFORK
qemu 8.1.0新增一个问题
linux-user: 缺少 NETLINK_SMC
修复方法
- 在linux-user/mmap.c的20行添加
#include <linux/mman.h>
- 在linux-user/syscall.c的124行添加
#include <linux/mman.h>
- 注释linux-user/strace.c的576行的NETLINK_SMC分支
#ifdef NETLINK_SMC
case NETLINK_SMC
...
#endif
- 注释linux-user/syscall.c的1851行的SOL_ALG分支
#ifdef SOL_ALG
}else if (cmsg->cmsg_level == SOL_ALG)
...
#endif