[Qemu][Cross Compile for windows][Mingw] langinfo.h is not found when enable curses
[Qemu][Cross Compile for windows][Mingw] langinfo.h is not found when enable curses
目前我们正在尝试在 Ubuntu 机器上为 Xilinx 设备编译 Qemu,并且我们按照 link.
使用 Mingw64 为 Windows 交叉编译它
禁用 Curses 功能时 Qemu 编译成功,但是当我们通过添加 --enable-curses 启用 Curses 功能时它会失败并出现错误
Blockquote ERROR: User requested feature curses configure was not able to find it. Install ncurses devel
当我们调试更多时,我们发现 configure 在允许使用以下命令进行 make 之前尝试编译 curses:
/qemu/bin/ndebug/x86_64-w64-mingw32# sys:1: Warning: g_file_test: assertion 'filename != NULL' failed
S=64 -D_LARGEFILE_SOURCE -Wstrict-prototypes -Wredundant-decls -Wall -Wundef -Wwrite-strings -Wmissing-prototypes -fno-strict-aliasing -fno-common -fwrapv -std=gnu99 -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 -Wno-missing-include-dirs -Wno-shift-negative-value -Wno-psabi -fstack-protector-strong -I/usr/x86_64-w64-mingw32/sys-root/mingw/include -I/usr/x86_64-w64-mingw32/sys-root/mingw/include/p11-kit-1 -I/usr/x86_64-w64-mingw32/sys-root/mingw/include -I/usr/x86_64-w64-mingw32/sys-root/mingw/include -I/usr/x86_64-w64-mingw32/sys-root/mingw/include/libpng16 -I/usr/x86_64-w64-mingw32/sys-root/mingw/include -DNCURSES_WIDECHAR -D_XOPEN_SOURCE=500 -D_POSIX_C_SOURCE=199506L -I/usr/x86_64-w64-mingw32/sys-root/mingw/include -o config-temp/qemu-conf.exe config-temp/qemu-conf.c -no-pie -m64 -fstack-protector-strong -L/usr/x86_64-w64-mingw32/sys-root/mingw/lib -Wl,--enable-auto-import -lncursesw
,并且失败并出现以下错误:
config-temp/qemu-conf.c:4:10: fatal error: langinfo.h: No such file or directory
根据 gnu langinfo.h 在 mingw 上缺失。
所以,
有谁知道其他方法来克服这个问题?
我们应该使用 ncurse 以外的包吗?(比如 -> pcurses,...)
如何将 langinfo.h 添加到 mingw? (我搜索了一下但没有成功,我试图将所有这些库复制到 mingw 包含路径,但肯定失败了)。
非常感谢您提前的支持,祝大家新年快乐
总结评论:
ncurses 不需要 header(它的配置脚本处理它的缺失)。
被引用的 curses.c
source file is part of QEMU (not part of ncurses). It's probably for the CODESET
查找。
QEMU 的配置脚本显然不会对此进行检查,但在 October 2020:
的 QEMU 开发邮件列表中注意到了它的缺失(和建议的解决方案)
[PULL 2/9] curses: Fixes compiler error that complain don't have langinfo.h on msys2/mingw
Gerd Hoffmann Wed, 14 Oct 2020 01:27:01 -0700
From: Yonggang Luo <luoyongg...@gmail.com>
msys2/mingw lacks the POSIX-required langinfo.h.
gcc test.c -DNCURSES_WIDECHAR -I/mingw64/include/ncursesw -pipe -lncursesw
-lgnurx -ltre -lintl -liconv
test.c:4:10: fatal error: langinfo.h: No such file or directory
4 | #include <langinfo.h>
| ^~~~~~~~~~~~
compilation terminated.
So we using g_get_codeset instead of nl_langinfo(CODESET)
目前我们正在尝试在 Ubuntu 机器上为 Xilinx 设备编译 Qemu,并且我们按照 link.
使用 Mingw64 为 Windows 交叉编译它禁用 Curses 功能时 Qemu 编译成功,但是当我们通过添加 --enable-curses 启用 Curses 功能时它会失败并出现错误
Blockquote ERROR: User requested feature curses configure was not able to find it. Install ncurses devel
当我们调试更多时,我们发现 configure 在允许使用以下命令进行 make 之前尝试编译 curses:
/qemu/bin/ndebug/x86_64-w64-mingw32# sys:1: Warning: g_file_test: assertion 'filename != NULL' failed S=64 -D_LARGEFILE_SOURCE -Wstrict-prototypes -Wredundant-decls -Wall -Wundef -Wwrite-strings -Wmissing-prototypes -fno-strict-aliasing -fno-common -fwrapv -std=gnu99 -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 -Wno-missing-include-dirs -Wno-shift-negative-value -Wno-psabi -fstack-protector-strong -I/usr/x86_64-w64-mingw32/sys-root/mingw/include -I/usr/x86_64-w64-mingw32/sys-root/mingw/include/p11-kit-1 -I/usr/x86_64-w64-mingw32/sys-root/mingw/include -I/usr/x86_64-w64-mingw32/sys-root/mingw/include -I/usr/x86_64-w64-mingw32/sys-root/mingw/include/libpng16 -I/usr/x86_64-w64-mingw32/sys-root/mingw/include -DNCURSES_WIDECHAR -D_XOPEN_SOURCE=500 -D_POSIX_C_SOURCE=199506L -I/usr/x86_64-w64-mingw32/sys-root/mingw/include -o config-temp/qemu-conf.exe config-temp/qemu-conf.c -no-pie -m64 -fstack-protector-strong -L/usr/x86_64-w64-mingw32/sys-root/mingw/lib -Wl,--enable-auto-import -lncursesw
,并且失败并出现以下错误:
config-temp/qemu-conf.c:4:10: fatal error: langinfo.h: No such file or directory
根据 gnu langinfo.h 在 mingw 上缺失。
所以, 有谁知道其他方法来克服这个问题? 我们应该使用 ncurse 以外的包吗?(比如 -> pcurses,...) 如何将 langinfo.h 添加到 mingw? (我搜索了一下但没有成功,我试图将所有这些库复制到 mingw 包含路径,但肯定失败了)。
非常感谢您提前的支持,祝大家新年快乐
总结评论:
ncurses 不需要 header(它的配置脚本处理它的缺失)。
被引用的
curses.c
source file is part of QEMU (not part of ncurses). It's probably for theCODESET
查找。QEMU 的配置脚本显然不会对此进行检查,但在 October 2020:
的 QEMU 开发邮件列表中注意到了它的缺失(和建议的解决方案)
[PULL 2/9] curses: Fixes compiler error that complain don't have langinfo.h on msys2/mingw Gerd Hoffmann Wed, 14 Oct 2020 01:27:01 -0700 From: Yonggang Luo <luoyongg...@gmail.com> msys2/mingw lacks the POSIX-required langinfo.h. gcc test.c -DNCURSES_WIDECHAR -I/mingw64/include/ncursesw -pipe -lncursesw -lgnurx -ltre -lintl -liconv test.c:4:10: fatal error: langinfo.h: No such file or directory 4 | #include <langinfo.h> | ^~~~~~~~~~~~ compilation terminated. So we using g_get_codeset instead of nl_langinfo(CODESET)