- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
只是为了好玩,我试图将irixxxx的qemu-irix构建为Docker镜像。
它在Debian Buster(使用GCC 8容器)下成功构建。但是,它无法在Alpine 3.10下构建(仅当我选择Irix目标时才失败),并出现以下错误(在make
阶段):
CC util/oslib-posix.o
In file included from util/oslib-posix.c:39:
/usr/include/sys/signal.h:1:2: warning: #warning redirecting incorrect #include <sys/signal.h> to <signal.h> [-Wcpp]
#warning redirecting incorrect #include <sys/signal.h> to <signal.h>
^~~~~~~
CC util/qemu-openpty.o
util/qemu-openpty.c: In function 'qemu_openpty_raw':
util/qemu-openpty.c:123:9: warning: implicit declaration of function 'openpty'; did you mean 'openat'? [-Wimplicit-function-declaration]
if (openpty(&amaster, aslave, pty_buf, NULL, NULL) < 0) {
^~~~~~~
openat
util/qemu-openpty.c:123:9: warning: nested extern declaration of 'openpty' [-Wnested-externs]
(...)
CC irix-linux-user/linux-user/syscall.o
/qemu-irix/linux-user/syscall.c:6784:22: error: 'F_EXLCK' undeclared here (not in a function); did you mean 'F_RDLCK'?
TRANSTBL_CONVERT(F_EXLCK),
^~~~~~~
/qemu-irix/linux-user/syscall.c:6779:51: note: in definition of macro 'TRANSTBL_CONVERT'
#define TRANSTBL_CONVERT(a) { -1, TARGET_##a, -1, a }
^
/qemu-irix/linux-user/syscall.c:6785:22: error: 'F_SHLCK' undeclared here (not in a function); did you mean 'F_RDLCK'?
TRANSTBL_CONVERT(F_SHLCK),
^~~~~~~
/qemu-irix/linux-user/syscall.c:6779:51: note: in definition of macro 'TRANSTBL_CONVERT'
#define TRANSTBL_CONVERT(a) { -1, TARGET_##a, -1, a }
^
In file included from /qemu-irix/linux-user/syscall.c:121:
/qemu-irix/linux-user/syscall.c: In function 'target_to_host_sigevent':
/qemu-irix/linux-user/syscall.c:7422:27: error: 'struct sigevent' has no member named '_sigev_un'; did you mean 'sigev_value'?
__get_user(host_sevp->_sigev_un._tid, &target_sevp->_sigev_un._tid);
^~~~~~~~~
/qemu-irix/linux-user/qemu.h:501:5: note: in definition of macro '__get_user_e'
((x) = (typeof(*hptr))( \
^
/qemu-irix/linux-user/syscall.c:7422:5: note: in expansion of macro '__get_user'
__get_user(host_sevp->_sigev_un._tid, &target_sevp->_sigev_un._tid);
^~~~~~~~~~
/qemu-irix/linux-user/syscall.c:7422:36: error: '(const bitmask_transtbl *)&<erroneous-expression>' is a pointer; did you mean to use '->'?
__get_user(host_sevp->_sigev_un._tid, &target_sevp->_sigev_un._tid);
^
/qemu-irix/linux-user/qemu.h:501:5: note: in definition of macro '__get_user_e'
((x) = (typeof(*hptr))( \
^
/qemu-irix/linux-user/syscall.c:7422:5: note: in expansion of macro '__get_user'
__get_user(host_sevp->_sigev_un._tid, &target_sevp->_sigev_un._tid);
^~~~~~~~~~
/qemu-irix/linux-user/qemu.h:506:13: warning: left-hand operand of comma expression has no effect [-Wunused-value]
(hptr)), (void)0)
^
/qemu-irix/linux-user/qemu.h:510:31: note: in expansion of macro '__get_user_e'
# define __get_user(x, hptr) __get_user_e(x, hptr, be)
^~~~~~~~~~~~
/qemu-irix/linux-user/syscall.c:7422:5: note: in expansion of macro '__get_user'
__get_user(host_sevp->_sigev_un._tid, &target_sevp->_sigev_un._tid);
^~~~~~~~~~
/qemu-irix/linux-user/syscall.c: In function 'do_syscall':
/qemu-irix/linux-user/syscall.c:13545:25: warning: implicit declaration of function 'sethostid'; did you mean 'gethostid'? [-Wimplicit-function-declaration]
ret = get_errno(sethostid(arg1));
^~~~~~~~~
gethostid
/qemu-irix/linux-user/syscall.c:13545:25: warning: nested extern declaration of 'sethostid' [-Wnested-externs]
make[1]: *** [/qemu-irix/rules.mak:66: linux-user/syscall.o] Error 1
make: *** [Makefile:472: subdir-irix-linux-user] Error 2
The command '/bin/sh -c make && DESTDIR=/tmp/qemu make install' returned a non-zero code: 2
最佳答案
差异似乎是由底层libc实现引起的:Debian的glibc与Alpine的musl-libc。
虽然GNU libc是Linux中的事实上的标准libc实现,但少数发行版(例如Alpine Linux和Void Linux)使用musl libc。 musl是一个简约的strict-POSIX libc实现,通常与glibc不兼容。通常,必须将软件项目移植到musl libc上,以在Alpine(尤其是非琐碎的应用程序)上得到支持。syscall.c
的编译在几个地方中断,第一个是:
/qemu-irix/linux-user/syscall.c:6784:22: error: 'F_EXLCK' undeclared here (not in a function); did you mean 'F_RDLCK'?
TRANSTBL_CONVERT(F_EXLCK)
F_EXLCK
中未定义
fcntl.h
是宏。但是,可以通过手动定义(例如
make CFLAGS='"-DF_EXLCK=4"'
)轻松对其进行修补。这是qemu为非虹膜目标(
patch link)的肌肉修补的方式。
__SIGRTMIN
和
__SIGRTMAX
,宏
TRANSTBL_CONVERT
,可能还有其他宏。临时修补它们可能还不够-因此,似乎必须为Alpine和musl libc正确移植
qemu-irix
项目。
qemu-irix
对其进行补丁:
make -j
构建并行,这将以更快的速度结束。
关于docker - qemu-irix无法在Alpine 3.10(GCC 8.3)下构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61672144/
我正在为 aarch64 使用 qemu 模拟器,并且想要创建一个外部检查点(或快速转发)以保存我需要从创建检查点时重新启动系统的所有内容。 (其实我是想跳过开机这一步)我只在qemu VM快照和快进
我想了解这两个包之间的关系,因为更改“qemu”的源 uri 似乎会导致 qemu-native 的构建损坏。 我不是 Yocot/Bitbake 专家,所以稍微澄清一下会大有帮助。 谢谢。 最佳答案
如何写入在 QEMU 中运行的虚拟系统的处理器寄存器和特定内存地址? 我的愿望是通过在 QEMU 之外运行的用户空间程序来完成此操作。这将引起中断并精细地控制处理器和虚拟硬件的执行。 QEMU Mon
我有一个表单,用户可以在其中上传图像(不同操作系统的图像)。 如何检测图像是否为“qcow2”类型的 QEMU 图像? 最佳答案 您可以使用 qemu-img info检查图像格式。 qemu-img
我想知道是否可以编写 qemu 脚本,以便您可以启动它并自动让它在 guest 操作系统中运行程序?就我而言,那就是 Linux。基本上,我想避免与客人互动,以便我可以用秃鹰或类似的东西进行一批实验。
我想到了两种可能的机制: IPC 类似于现有的 QMP 和 QAPI QEMU 加载一个包含模型 的共享库插件 所需的能力(当然所有可能通过 C API,但不一定是 IPC API): 注入(inje
是否有选项? qemu-nbd 命令获得下一个空闲,即未使用的 NBD,如 lossup -f 做? 0.0.1 的联机帮助页(这是 qemu 当前稳定版 1.7.0 的版本)没有提及任何内容。 最佳
qemu-system-armw.exe 和 qemu-system-arm.exe 有什么区别?我在任何地方都找不到它。 最佳答案 带有 w 的可执行文件不会打开控制台窗口,而没有 w 的可执行文件
我正在尝试了解 QEMU 的区 block 链。我对每个执行的 TB 的分支方向有疑问。假设 TB#1 现在已经执行,并找到 next_tb (TB#2)。然后我们知道方向是 TB#1--->TB#2
我有一个使用 KVM 的 Windows 10 专业版虚拟机。它是通过 virt-manager 使用最新版本的 libvirt 和 QEMU 设置的。所有这些都在 Manjaro Linux 20
我开始学习 riscv。我得到了 qemu-riscv、riscv-gcc 并编译了下一个 hello world asm 程序: .section .text .globl _start _star
我有一个运行 kvm/qemu 的 Windows VM,它正在经历时间漂移。Windows 客户机的最佳 libvirt 设置是什么? 目前我正在使用这个,但它没有帮助:
我有一个运行 kvm/qemu 的 Windows VM,它正在经历时间漂移。Windows 客户机的最佳 libvirt 设置是什么? 目前我正在使用这个,但它没有帮助:
我是 qemu 开发新手。我正在尝试修改 qemu 以使用 QEMU 模拟器在 x86 机器上模拟 SGX 处理器的某些功能。这是我想要做的。 我想将以下内容添加到 qemu。我想用一个新参数 EEC
我目前正在尝试构建一个配置来测试 Big-Endian 系统上的一些代码。 通过聊天和研究,我确信这些测试的一个很好的目标是 PowerPC 架构。由于我没有一个,并且不希望在短期内直接访问一个,我正
我正在制作一个操作系统,我正在使用 Qemu 调试它。我想要一种方法来在一些指令的末尾读取一些大块的 ram。怎么做?可以对 Qemu 说将 ram 复制到文件中吗?如果不是我能做什么? 最佳答案 q
qemu/kvm 支持 ovf 吗?它能够启动现有的 ovf 软件包吗?我在 ovf 标准和 qemu/kvm 网站上找不到任何相关信息。对此有任何有用的链接吗?谢谢。 最佳答案 您正在寻找virt-
我想知道如何从 ubuntu 中的源代码构建 grub 2 引导加载程序并使用 qemu 模拟器对其进行测试。 我还想在新版本中更改 grub2 引导加载程序的默认背景图像吗? 这可能吗?如果是,怎么
我的环境是Ubuntu15.10。我写了下面的源代码。 #include "efi.h" #include "efilib.h" EFI_STATUS EFIAPI efi_main(EFI_HAND
我正在尝试使用 qemu 调试 linux 内核的启动顺序,我正在运行的命令是: qemu -serial stdio -kernel -hda -append "root=/dev/sda
我是一名优秀的程序员,十分优秀!