peripherals: 0.955 kernel: 0.919 debug: 0.900 hypervisor: 0.891 graphic: 0.887 architecture: 0.880 semantic: 0.877 permissions: 0.861 device: 0.858 x86: 0.836 files: 0.835 mistranslation: 0.820 arm: 0.817 PID: 0.805 vnc: 0.796 network: 0.778 user-level: 0.772 ppc: 0.762 VMM: 0.754 socket: 0.752 virtual: 0.750 KVM: 0.726 assembly: 0.711 performance: 0.703 i386: 0.701 register: 0.700 risc-v: 0.661 TCG: 0.609 boot: 0.535 Compilation fails due to zstd qcow2 compression Compilation of QEMU fails when using recent versions of zstd. I use the following commands to compile QEMU: $ mkdir build $ cd build $ ../configure --enable-debug --target-list=x86_64-softmmu $ make -j $(nproc) Here is a paste from the ../configure output: https://paste.ubuntu.com/p/dHsWzGV7TH/ And one from the make output: https://paste.ubuntu.com/p/89qKk4NrFz/ In short the error boils down to: ../block/qcow2-threads.c: In function ‘qcow2_zstd_compress’: ../block/qcow2-threads.c:225:16: error: implicit declaration of function ‘ZSTD_compressStream2’; did you mean ‘ZSTD_compressStream’? [-Werror=implicit-function-declaration] 225 | zstd_ret = ZSTD_compressStream2(cctx, &output, &input, ZSTD_e_end); | ^~~~~~~~~~~~~~~~~~~~ | ZSTD_compressStream ../block/qcow2-threads.c:225:16: error: nested extern declaration of ‘ZSTD_compressStream2’ [-Werror=nested-externs] ../block/qcow2-threads.c:225:60: error: ‘ZSTD_e_end’ undeclared (first use in this function) 225 | zstd_ret = ZSTD_compressStream2(cctx, &output, &input, ZSTD_e_end); | System info: QEMU commit: 7ef8134565dccf9186d5eabd7dbb4ecae6dead87 (from Github) Kernel: 5.10.15 zstd: 1.4.8 The upstream zstd library seems to still offer that function as of 1.4.9: https://github.com/facebook/zstd/blob/dev/lib/zstd.h#L708 what exact version of the zstd package do you have installed (Is it an Ubuntu package, a Fedora one? etc) Can you verify that the version of the header you have installed for zstd.h actually declares ZSTD_compressStream2() ? Seems I had an old version (1.3.5) of zstd floating around in /usr/local. Consider this issue resolved. Meson theoretically checks for that: meson.build: zstd = dependency('libzstd', version: '>=1.4.0', I suppose meson found the dependency, but the compile flags got the wrong header. Is there something we need to fix in the build system? > Is there something we need to fix in the build system? Maybe, I do not know how this dependency is validated. If the directories used to validate dependencies differs from the directories (or order) used at compile / link time than this can cause errors like these. However, what could also happen I suppose that the order in which headers are included differs from the order in which libraries are included. This could still be caused by the build system but also by the user (LD_PRELOAD, ld-config etc).