Ubuntu22.04编译安装qemu6.0源码

安装环境:
OS: Ubuntu22.04LTS
Qemu: qemu6.0.50

1、下载qemu源码

可以通过官网提供的下载链接https://download.qemu.org/下载需要的版本,或者通过github等途径下载均可。

imaginemiracle@:$ mkdir build
imaginemiracle@:$ ls
build  qemu
imaginemiracle@:$ cd build

2、配置编译出错并解决

imaginemiracle@:build$ ../qemu/configure 

ERROR: Cannot find Ninja

根据错误提示,缺少Ninja,安装ninja即可。

imaginemiracle@:build$ sudo apt-get install ninja-build
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following NEW packages will be installed:
  ninja-build
0 upgraded, 1 newly installed, 0 to remove and 151 not upgraded.
Need to get 107 kB of archives.
After this operation, 338 kB of additional disk space will be used.
Get:1 http://ftp.sjtu.edu.cn/ubuntu focal/universe amd64 ninja-build amd64 1.10.0-1build1 [107 kB]
Fetched 107 kB in 0s (424 kB/s)       
Selecting previously unselected package ninja-build.
(Reading database ... 214209 files and directories currently installed.)
Preparing to unpack .../ninja-build_1.10.0-1build1_amd64.deb ...
Unpacking ninja-build (1.10.0-1build1) ...
Setting up ninja-build (1.10.0-1build1) ...
Processing triggers for man-db (2.9.1-1) ...

尝试编译看是否还有报错。

imaginemiracle@:build$ ../qemu/configure 

ERROR: glib-2.48 gthread-2.0 is required to compile QEMU

建议这些都安装,会自动检测已安装的包,将不会重复安装。

sudo apt-get install build-essential zlib1g-dev pkg-config libglib2.0-dev 
binutils-dev libboost-all-dev autoconf libtool libssl-dev 
libpixman-1-dev libpython2-dev python-pip python-capstone virtualenv

再次尝试编译看是否还有报错。

imaginemiracle@:build$ ../qemu/configure 
The Meson build system
Version: 0.55.3
Source dir: /media/imaginemiracle/Disk_D/Linux_Workspace/cxl/qemu
Build dir: /media/imaginemiracle/Disk_D/Linux_Workspace/cxl/build
Build type: native build
Project name: qemu
Project version: 6.0.50
C compiler for the host machine: cc (gcc 9.3.0 "cc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0")
C linker for the host machine: cc ld.bfd 2.34
Host machine cpu family: x86_64
Host machine cpu: x86_64
../qemu/meson.build:10: WARNING: Module unstable-keyval has no backwards or forwards compatibility and might not exist in future releases.
Program sh found: YES
Program python3 found: YES (/usr/bin/python3)
Program bzip2 found: YES
C++ compiler for the host machine: c++ (gcc 9.3.0 "c++ (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0")
C++ linker for the host machine: c++ ld.bfd 2.34
Program cgcc found: NO
Library m found: YES
Library util found: YES
Run-time dependency appleframeworks found: NO (tried framework)
Found pkg-config: /usr/bin/pkg-config (0.29.1)
Run-time dependency pixman-1 found: NO (tried pkgconfig)

../qemu/meson.build:340:2: ERROR: Dependency "pixman-1" not found, tried pkgconfig

A full log can be found at /media/imaginemiracle/Disk_D/Linux_Workspace/cxl/build/meson-logs/meson-log.txt

ERROR: meson setup failed

网上有一些关于ERROR: Dependency "pixman-1" not found的回答是因为未安装libmount-dev导致,但笔者经尝试,结果无效,而且当前系统已经安装过libmount-dev

imaginemiracle@:build$ sudo apt-get install libmount-dev 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
libmount-dev is already the newest version (2.34-0.1ubuntu9.1).
0 upgraded, 0 newly installed, 0 to remove and 151 not upgraded.

经过查找ERROR: Dependency "pixman-1" not found该报错,通过安装libpixman-1-dev解决。

imaginemiracle@:build$ sudo apt-get install libpixman-1-dev
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following NEW packages will be installed:
  libpixman-1-dev
0 upgraded, 1 newly installed, 0 to remove and 151 not upgraded.
Need to get 243 kB of archives.
After this operation, 970 kB of additional disk space will be used.
Get:1 http://ftp.sjtu.edu.cn/ubuntu focal/main amd64 libpixman-1-dev amd64 0.38.4-0ubuntu1 [243 kB]
Fetched 243 kB in 0s (707 kB/s)         
Selecting previously unselected package libpixman-1-dev:amd64.
(Reading database ... 214411 files and directories currently installed.)
Preparing to unpack .../libpixman-1-dev_0.38.4-0ubuntu1_amd64.deb ...
Unpacking libpixman-1-dev:amd64 (0.38.4-0ubuntu1) ...
Setting up libpixman-1-dev:amd64 (0.38.4-0ubuntu1) ...

3、再次配置编译

完整的配置编译输出

imaginemiracle@:build$ ../qemu/configure 
The Meson build system
Version: 0.55.3
Source dir: /media/imaginemiracle/Disk_D/Linux_Workspace/cxl/qemu
Build dir: /media/imaginemiracle/Disk_D/Linux_Workspace/cxl/build
Build type: native build
Project name: qemu
Project version: 6.0.50
C compiler for the host machine: cc (gcc 9.3.0 "cc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0")
C linker for the host machine: cc ld.bfd 2.34
Host machine cpu family: x86_64
Host machine cpu: x86_64
../qemu/meson.build:10: WARNING: Module unstable-keyval has no backwards or forwards compatibility and might not exist in future releases.
Program sh found: YES
Program python3 found: YES (/usr/bin/python3)
Program bzip2 found: YES
C++ compiler for the host machine: c++ (gcc 9.3.0 "c++ (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0")
C++ linker for the host machine: c++ ld.bfd 2.34
Program cgcc found: NO
Library m found: YES
Library util found: YES
Run-time dependency appleframeworks found: NO (tried framework)
Found pkg-config: /usr/bin/pkg-config (0.29.1)
Run-time dependency pixman-1 found: YES 0.38.4
Library aio found: NO
Run-time dependency zlib found: YES 1.2.11
Run-time dependency libnfs found: NO (tried pkgconfig)
Run-time dependency appleframeworks found: NO (tried framework)
Run-time dependency libseccomp found: NO (tried pkgconfig)
Has header "cap-ng.h" : NO 
Run-time dependency xkbcommon found: NO (tried pkgconfig)
Library rt found: YES
Run-time dependency libiscsi found: NO (tried pkgconfig)
Run-time dependency libzstd found: NO (tried pkgconfig)
Run-time dependency libcurl found: NO (tried pkgconfig)
Run-time dependency libudev found: NO (tried pkgconfig)
Library mpathpersist found: NO
Run-time dependency ncursesw found: YES 6.2.20200212
Has header "brlapi.h" : NO 
sdl2-config found: NO
Run-time dependency sdl2 found: NO (tried pkgconfig and config-tool)
Library rados found: NO
Has header "rbd/librbd.h" : NO 
Run-time dependency glusterfs-api found: NO (tried pkgconfig)
Has header "bzlib.h" : NO 
Has header "lzfse.h" : NO 
Run-time dependency gtk+-3.0 found: NO (tried pkgconfig)
Run-time dependency libpng found: NO (tried pkgconfig)
Run-time dependency libjpeg found: NO (tried pkgconfig)
Has header "sasl/sasl.h" : NO 
Has header "snappy-c.h" : NO 
Has header "lzo/lzo1x.h" : NO 
Run-time dependency u2f-emu found: NO (tried pkgconfig)
Run-time dependency libkeyutils found: NO (tried pkgconfig)
Checking for function "gettid" : YES 
Run-time dependency fuse3 found: NO (tried pkgconfig)
Has header "linux/btrfs.h" : YES 
Has header "libdrm/drm.h" : NO 
Has header "pty.h" : YES 
Has header "sys/ioccom.h" : NO 
Has header "sys/kcov.h" : NO 
Checking for function "system" : YES 
Checking for function "preadv" : YES 
Program scripts/minikconf.py found: YES
Configuring aarch64-softmmu-config-target.h using configuration
Configuring aarch64-softmmu-config-devices.mak with command
Reading depfile: /media/imaginemiracle/Disk_D/Linux_Workspace/cxl/build/meson-private/aarch64-softmmu-config-devices.mak.d
Configuring aarch64-softmmu-config-devices.h using configuration
Configuring alpha-softmmu-config-target.h using configuration
Configuring alpha-softmmu-config-devices.mak with command
Reading depfile: /media/imaginemiracle/Disk_D/Linux_Workspace/cxl/build/meson-private/alpha-softmmu-config-devices.mak.d
Configuring alpha-softmmu-config-devices.h using configuration
Configuring arm-softmmu-config-target.h using configuration
Configuring arm-softmmu-config-devices.mak with command
Reading depfile: /media/imaginemiracle/Disk_D/Linux_Workspace/cxl/build/meson-private/arm-softmmu-config-devices.mak.d
Configuring arm-softmmu-config-devices.h using configuration
Configuring avr-softmmu-config-target.h using configuration
Configuring avr-softmmu-config-devices.mak with command
Reading depfile: /media/imaginemiracle/Disk_D/Linux_Workspace/cxl/build/meson-private/avr-softmmu-config-devices.mak.d
Configuring avr-softmmu-config-devices.h using configuration
Configuring cris-softmmu-config-target.h using configuration
Configuring cris-softmmu-config-devices.mak with command
Reading depfile: /media/imaginemiracle/Disk_D/Linux_Workspace/cxl/build/meson-private/cris-softmmu-config-devices.mak.d
Configuring cris-softmmu-config-devices.h using configuration
Configuring hppa-softmmu-config-target.h using configuration
Configuring hppa-softmmu-config-devices.mak with command
Reading depfile: /media/imaginemiracle/Disk_D/Linux_Workspace/cxl/build/meson-private/hppa-softmmu-config-devices.mak.d
Configuring hppa-softmmu-config-devices.h using configuration
Configuring i386-softmmu-config-target.h using configuration
Configuring i386-softmmu-config-devices.mak with command
Reading depfile: /media/imaginemiracle/Disk_D/Linux_Workspace/cxl/build/meson-private/i386-softmmu-config-devices.mak.d
Configuring i386-softmmu-config-devices.h using configuration
Configuring m68k-softmmu-config-target.h using configuration
Configuring m68k-softmmu-config-devices.mak with command
Reading depfile: /media/imaginemiracle/Disk_D/Linux_Workspace/cxl/build/meson-private/m68k-softmmu-config-devices.mak.d
Configuring m68k-softmmu-config-devices.h using configuration
Configuring microblaze-softmmu-config-target.h using configuration
Configuring microblaze-softmmu-config-devices.mak with command
Reading depfile: /media/imaginemiracle/Disk_D/Linux_Workspace/cxl/build/meson-private/microblaze-softmmu-config-devices.mak.d
Configuring microblaze-softmmu-config-devices.h using configuration
Configuring microblazeel-softmmu-config-target.h using configuration
Configuring microblazeel-softmmu-config-devices.mak with command
Reading depfile: /media/imaginemiracle/Disk_D/Linux_Workspace/cxl/build/meson-private/microblazeel-softmmu-config-devices.mak.d
Configuring microblazeel-softmmu-config-devices.h using configuration
Configuring mips-softmmu-config-target.h using configuration
Configuring mips-softmmu-config-devices.mak with command
Reading depfile: /media/imaginemiracle/Disk_D/Linux_Workspace/cxl/build/meson-private/mips-softmmu-config-devices.mak.d
Configuring mips-softmmu-config-devices.h using configuration
Configuring mips64-softmmu-config-target.h using configuration
Configuring mips64-softmmu-config-devices.mak with command
Reading depfile: /media/imaginemiracle/Disk_D/Linux_Workspace/cxl/build/meson-private/mips64-softmmu-config-devices.mak.d
Configuring mips64-softmmu-config-devices.h using configuration
Configuring mips64el-softmmu-config-target.h using configuration
Configuring mips64el-softmmu-config-devices.mak with command
Reading depfile: /media/imaginemiracle/Disk_D/Linux_Workspace/cxl/build/meson-private/mips64el-softmmu-config-devices.mak.d
Configuring mips64el-softmmu-config-devices.h using configuration
Configuring mipsel-softmmu-config-target.h using configuration
Configuring mipsel-softmmu-config-devices.mak with command
Reading depfile: /media/imaginemiracle/Disk_D/Linux_Workspace/cxl/build/meson-private/mipsel-softmmu-config-devices.mak.d
Configuring mipsel-softmmu-config-devices.h using configuration
Configuring nios2-softmmu-config-target.h using configuration
Configuring nios2-softmmu-config-devices.mak with command
Reading depfile: /media/imaginemiracle/Disk_D/Linux_Workspace/cxl/build/meson-private/nios2-softmmu-config-devices.mak.d
Configuring nios2-softmmu-config-devices.h using configuration
Configuring or1k-softmmu-config-target.h using configuration
Configuring or1k-softmmu-config-devices.mak with command
Reading depfile: /media/imaginemiracle/Disk_D/Linux_Workspace/cxl/build/meson-private/or1k-softmmu-config-devices.mak.d
Configuring or1k-softmmu-config-devices.h using configuration
Configuring ppc-softmmu-config-target.h using configuration
Configuring ppc-softmmu-config-devices.mak with command
Reading depfile: /media/imaginemiracle/Disk_D/Linux_Workspace/cxl/build/meson-private/ppc-softmmu-config-devices.mak.d
Configuring ppc-softmmu-config-devices.h using configuration
Configuring ppc64-softmmu-config-target.h using configuration
Configuring ppc64-softmmu-config-devices.mak with command
Reading depfile: /media/imaginemiracle/Disk_D/Linux_Workspace/cxl/build/meson-private/ppc64-softmmu-config-devices.mak.d
Configuring ppc64-softmmu-config-devices.h using configuration
Configuring riscv32-softmmu-config-target.h using configuration
Configuring riscv32-softmmu-config-devices.mak with command
Reading depfile: /media/imaginemiracle/Disk_D/Linux_Workspace/cxl/build/meson-private/riscv32-softmmu-config-devices.mak.d
Configuring riscv32-softmmu-config-devices.h using configuration
Configuring riscv64-softmmu-config-target.h using configuration
Configuring riscv64-softmmu-config-devices.mak with command
Reading depfile: /media/imaginemiracle/Disk_D/Linux_Workspace/cxl/build/meson-private/riscv64-softmmu-config-devices.mak.d
Configuring riscv64-softmmu-config-devices.h using configuration
Configuring rx-softmmu-config-target.h using configuration
Configuring rx-softmmu-config-devices.mak with command
Reading depfile: /media/imaginemiracle/Disk_D/Linux_Workspace/cxl/build/meson-private/rx-softmmu-config-devices.mak.d
Configuring rx-softmmu-config-devices.h using configuration
Configuring s390x-softmmu-config-target.h using configuration
Configuring s390x-softmmu-config-devices.mak with command
Reading depfile: /media/imaginemiracle/Disk_D/Linux_Workspace/cxl/build/meson-private/s390x-softmmu-config-devices.mak.d
Configuring s390x-softmmu-config-devices.h using configuration
Configuring sh4-softmmu-config-target.h using configuration
Configuring sh4-softmmu-config-devices.mak with command
Reading depfile: /media/imaginemiracle/Disk_D/Linux_Workspace/cxl/build/meson-private/sh4-softmmu-config-devices.mak.d
Configuring sh4-softmmu-config-devices.h using configuration
Configuring sh4eb-softmmu-config-target.h using configuration
Configuring sh4eb-softmmu-config-devices.mak with command
Reading depfile: /media/imaginemiracle/Disk_D/Linux_Workspace/cxl/build/meson-private/sh4eb-softmmu-config-devices.mak.d
Configuring sh4eb-softmmu-config-devices.h using configuration
Configuring sparc-softmmu-config-target.h using configuration
Configuring sparc-softmmu-config-devices.mak with command
Reading depfile: /media/imaginemiracle/Disk_D/Linux_Workspace/cxl/build/meson-private/sparc-softmmu-config-devices.mak.d
Configuring sparc-softmmu-config-devices.h using configuration
Configuring sparc64-softmmu-config-target.h using configuration
Configuring sparc64-softmmu-config-devices.mak with command
Reading depfile: /media/imaginemiracle/Disk_D/Linux_Workspace/cxl/build/meson-private/sparc64-softmmu-config-devices.mak.d
Configuring sparc64-softmmu-config-devices.h using configuration
Configuring tricore-softmmu-config-target.h using configuration
Configuring tricore-softmmu-config-devices.mak with command
Reading depfile: /media/imaginemiracle/Disk_D/Linux_Workspace/cxl/build/meson-private/tricore-softmmu-config-devices.mak.d
Configuring tricore-softmmu-config-devices.h using configuration
Configuring x86_64-softmmu-config-target.h using configuration
Configuring x86_64-softmmu-config-devices.mak with command
Reading depfile: /media/imaginemiracle/Disk_D/Linux_Workspace/cxl/build/meson-private/x86_64-softmmu-config-devices.mak.d
Configuring x86_64-softmmu-config-devices.h using configuration
Configuring xtensa-softmmu-config-target.h using configuration
Configuring xtensa-softmmu-config-devices.mak with command
Reading depfile: /media/imaginemiracle/Disk_D/Linux_Workspace/cxl/build/meson-private/xtensa-softmmu-config-devices.mak.d
Configuring xtensa-softmmu-config-devices.h using configuration
Configuring xtensaeb-softmmu-config-target.h using configuration
Configuring xtensaeb-softmmu-config-devices.mak with command
Reading depfile: /media/imaginemiracle/Disk_D/Linux_Workspace/cxl/build/meson-private/xtensaeb-softmmu-config-devices.mak.d
Configuring xtensaeb-softmmu-config-devices.h using configuration
Configuring aarch64-linux-user-config-target.h using configuration
Configuring aarch64_be-linux-user-config-target.h using configuration
Configuring alpha-linux-user-config-target.h using configuration
Configuring arm-linux-user-config-target.h using configuration
Configuring armeb-linux-user-config-target.h using configuration
Configuring cris-linux-user-config-target.h using configuration
Configuring hexagon-linux-user-config-target.h using configuration
Configuring hppa-linux-user-config-target.h using configuration
Configuring i386-linux-user-config-target.h using configuration
Configuring m68k-linux-user-config-target.h using configuration
Configuring microblaze-linux-user-config-target.h using configuration
Configuring microblazeel-linux-user-config-target.h using configuration
Configuring mips-linux-user-config-target.h using configuration
Configuring mips64-linux-user-config-target.h using configuration
Configuring mips64el-linux-user-config-target.h using configuration
Configuring mipsel-linux-user-config-target.h using configuration
Configuring mipsn32-linux-user-config-target.h using configuration
Configuring mipsn32el-linux-user-config-target.h using configuration
Configuring nios2-linux-user-config-target.h using configuration
Configuring or1k-linux-user-config-target.h using configuration
Configuring ppc-linux-user-config-target.h using configuration
Configuring ppc64-linux-user-config-target.h using configuration
Configuring ppc64le-linux-user-config-target.h using configuration
Configuring riscv32-linux-user-config-target.h using configuration
Configuring riscv64-linux-user-config-target.h using configuration
Configuring s390x-linux-user-config-target.h using configuration
Configuring sh4-linux-user-config-target.h using configuration
Configuring sh4eb-linux-user-config-target.h using configuration
Configuring sparc-linux-user-config-target.h using configuration
Configuring sparc32plus-linux-user-config-target.h using configuration
Configuring sparc64-linux-user-config-target.h using configuration
Configuring x86_64-linux-user-config-target.h using configuration
Configuring xtensa-linux-user-config-target.h using configuration
Configuring xtensaeb-linux-user-config-target.h using configuration
Run-time dependency capstone found: NO (tried pkgconfig)
Configuring capstone-defs.h using configuration
Run-time dependency slirp found: NO (tried pkgconfig)
Configuring libslirp-version.h using configuration
Library fdt found: NO
Configuring config-host.h using configuration
Program scripts/hxtool found: YES
Program scripts/shaderinclude.pl found: YES
Program scripts/qapi-gen.py found: YES
Program scripts/qemu-version.sh found: YES

|Executing subproject libvhost-user method meson 
|
|Project name: libvhost-user
|Project version: undefined
|C compiler for the host machine: cc (gcc 9.3.0 "cc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0")
|C linker for the host machine: cc ld.bfd 2.34
|Run-time dependency threads found: YES
|Dependency glib-2.0 found: YES 6.0.50 (overridden)
|Build targets in project: 11
|Subproject libvhost-user finished.

Dependency threads found: YES unknown (cached)
Program keycodemapdb/tools/keymap-gen found: YES
Program scripts/decodetree.py found: YES
Program ../scripts/modules/module_block.py found: YES
Program ../scripts/block-coroutine-wrapper.py found: YES
Program nm found: YES
Program scripts/undefsym.py found: YES
Program scripts/feature_to_c.sh found: YES
Library ibumad found: YES
Configuring 50-edk2-i386-secure.json using configuration
Configuring 50-edk2-x86_64-secure.json using configuration
Configuring 60-edk2-aarch64.json using configuration
Configuring 60-edk2-arm.json using configuration
Configuring 60-edk2-i386.json using configuration
Configuring 60-edk2-x86_64.json using configuration
Program qemu-keymap found: NO
Program sphinx-build-3 sphinx-build found: NO
Program python3 found: YES (/usr/bin/python3)
Program diff found: YES
Program dbus-daemon found: YES
Program initrd-stress.sh found: YES
Build targets in project: 629

qemu 6.0.50

  Directories
                   Install prefix: /usr/local
                   BIOS directory: share/qemu
                    firmware path: /usr/local/share/qemu-firmware
                 binary directory: bin
                library directory: lib
                 module directory: lib/qemu
                libexec directory: libexec
                include directory: include
                 config directory: /usr/local/etc
            local state directory: /usr/local/var
                 Manual directory: share/man
                    Doc directory: /usr/local/share/doc
                  Build directory: /media/imaginemiracle/Disk_D/Linux_Workspace/cxl/build
                      Source path: /media/imaginemiracle/Disk_D/Linux_Workspace/cxl/qemu
                   GIT submodules: ui/keycodemapdb tests/fp/berkeley-testfloat-3 tests/fp/berkeley-softfloat-3 meson dtc capstone slirp

  Host binaries
                              git: git
                             make: make
                           python: /usr/bin/python3 (version: 3.8)
                     sphinx-build: NO
                              gdb: /usr/bin/gdb
                      genisoimage: /usr/bin/genisoimage
                             smbd: "/usr/sbin/smbd"

  Configurable features
                    Documentation: NO
            system-mode emulation: YES
              user-mode emulation: YES
                      block layer: YES
                    Install blobs: YES
                   module support: NO
                   plugin support: NO
                  fuzzing support: NO
                    Audio drivers: oss
                   Trace backends: log
                    QOM debugging: YES
             vhost-kernel support: YES
                vhost-net support: YES
             vhost-crypto support: YES
               vhost-scsi support: YES
              vhost-vsock support: YES
               vhost-user support: YES
    vhost-user-blk server support: YES
            vhost-user-fs support: YES
               vhost-vdpa support: YES
                build guest agent: YES

  Compilation
                         host CPU: x86_64
                  host endianness: little
                       C compiler: cc
                  Host C compiler: cc
                     C++ compiler: c++
                          ARFLAGS: rv
                           CFLAGS: -O2 -g
                         CXXFLAGS: -O2 -g
                      QEMU_CFLAGS: -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -m64 -mcx16 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -Wstrict-prototypes -Wredundant-decls -Wundef -Wwrite-strings -Wmissing-prototypes -fno-strict-aliasing -fno-common -fwrapv  -Wold-style-declaration -Wold-style-definition -Wtype-limits -Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers -Wempty-body -Wnested-externs -Wendif-labels -Wexpansion-to-defined -Wimplicit-fallthrough=2 -Wno-missing-include-dirs -Wno-shift-negative-value -Wno-psabi -fstack-protector-strong
                     QEMU_LDFLAGS: -Wl,--warn-common -Wl,-z,relro -Wl,-z,now -m64  -fstack-protector-strong
                         profiler: NO
     link-time optimization (LTO): NO
                              PIE: YES
                     static build: NO
              malloc trim support: YES
                       membarrier: NO
                   preadv support: YES
                        fdatasync: YES
                          madvise: YES
                    posix_madvise: YES
                   posix_memalign: YES
                debug stack usage: NO
                  mutex debugging: NO
                 memory allocator: system
                avx2 optimization: YES
             avx512f optimization: NO
                    gprof enabled: NO
                             gcov: NO
                 thread sanitizer: NO
                      CFI support: NO
                   strip binaries: YES
                           sparse: NO
                  mingw32 support: NO
                     x86_64 tests: cc

  Targets and accelerators
                      KVM support: YES
                      HAX support: NO
                      HVF support: NO
                     WHPX support: NO
                     NVMM support: NO
                      Xen support: NO
                      TCG support: YES
                      TCG backend: native (x86_64)
                TCG debug enabled: NO
                      target list: aarch64-softmmu alpha-softmmu arm-softmmu avr-softmmu cris-softmmu hppa-softmmu i386-softmmu m68k-softmmu microblaze-softmmu microblazeel-softmmu mips-softmmu mips64-softmmu mips64el-softmmu mipsel-softmmu nios2-softmmu or1k-softmmu ppc-softmmu ppc64-softmmu riscv32-softmmu riscv64-softmmu rx-softmmu s390x-softmmu sh4-softmmu sh4eb-softmmu sparc-softmmu sparc64-softmmu tricore-softmmu x86_64-softmmu xtensa-softmmu xtensaeb-softmmu aarch64-linux-user aarch64_be-linux-user alpha-linux-user arm-linux-user armeb-linux-user cris-linux-user hexagon-linux-user hppa-linux-user i386-linux-user m68k-linux-user microblaze-linux-user microblazeel-linux-user mips-linux-user mips64-linux-user mips64el-linux-user mipsel-linux-user mipsn32-linux-user mipsn32el-linux-user nios2-linux-user or1k-linux-user ppc-linux-user ppc64-linux-user ppc64le-linux-user riscv32-linux-user riscv64-linux-user s390x-linux-user sh4-linux-user sh4eb-linux-user sparc-linux-user sparc32plus-linux-user sparc64-linux-user x86_64-linux-user xtensa-linux-user xtensaeb-linux-user
                  default devices: YES
         out of process emulation: YES

  Block layer support
                coroutine backend: ucontext
                   coroutine pool: YES
             Block whitelist (rw): 
             Block whitelist (ro): 
                   VirtFS support: NO
            build virtiofs daemon: NO
             Live block migration: YES
              replication support: YES
                    bochs support: YES
                    cloop support: YES
                      dmg support: YES
                  qcow v1 support: YES
                      vdi support: YES
                    vvfat support: YES
                      qed support: YES
                parallels support: YES
                     FUSE exports: NO

  Crypto
                     TLS priority: "NORMAL"
                   GNUTLS support: NO
                        libgcrypt: NO
                           nettle: NO
                     crypto afalg: NO
                         rng-none: NO
                    Linux keyring: YES

  Dependencies
                      SDL support: NO
                SDL image support: NO
                      GTK support: NO
                           pixman: YES
                      VTE support: NO
                    slirp support: internal
                         libtasn1: NO
                              PAM: NO
                    iconv support: YES
                   curses support: YES
                    virgl support: NO
                     curl support: NO
                Multipath support: NO
                      VNC support: YES
                 VNC SASL support: NO
                 VNC JPEG support: NO
                  VNC PNG support: NO
                   brlapi support: NO
                      vde support: NO
                   netmap support: NO
                Linux AIO support: NO
           Linux io_uring support: NO
               ATTR/XATTR support: YES
                     RDMA support: YES
                   PVRDMA support: YES
                      fdt support: internal
                libcap-ng support: NO
                    spice support: NO
                      rbd support: NO
                   xfsctl support: NO
                smartcard support: NO
                      U2F support: NO
                           libusb: NO
                    usb net redir: NO
                   OpenGL support: NO
                              GBM: NO
                 libiscsi support: NO
                   libnfs support: NO
                  seccomp support: NO
                GlusterFS support: NO
                      TPM support: YES
                   libssh support: NO
                      lzo support: NO
                   snappy support: NO
                    bzip2 support: NO
                    lzfse support: NO
                     zstd support: NO
                NUMA host support: NO
                          libxml2: NO
                         capstone: internal
                  libpmem support: NO
                libdaxctl support: NO
                          libudev: NO
                       FUSE lseek: NO

  Subprojects
                    libvhost-user: YES

Found ninja-1.10.0 at /usr/bin/ninja

4、配置成功后编译并安装

编译过程稍微有点久,需要耐心等待。

imaginemiracle@:build$ make; make install

5、验证qemu

验证Qemu安装是否成功

imaginemiracle@:~$ qemu-riscv64 --version
qemu-riscv64 version 6.0.50 (v6.0.0-928-gec061f3ef1)
Copyright (c) 2003-2021 Fabrice Bellard and the QEMU Project developers

测试运行其它架构程序

imaginemiracle@:test$ file helloworld
helloworld: ELF 64-bit LSB executable, UCB RISC-V, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-riscv64-lp64d.so.1, for GNU/Linux 3.0.0, stripped
imaginemiracle@:test$ qemu-riscv64 helloworld
helloworld!

本测试用例使用的是riscv64架构的helloword测试程序,运行结果正常。

觉得这篇文章对你有帮助的话,就留下一个赞吧v*
请尊重作者,转载还请注明出处!感谢配合~
[作者]: Imagine Miracle
[版权]: 本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
[本文链接]: https://blog.csdn.net/qq_36393978/article/details/118086216

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Imagine Miracle

爱你哟 =^ v ^=

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值