warning: Selected architecture i386 is not compatible with reported target
architecture i386:x86-64
为什么这个标题这么长,因为这个警告就这么长。
还是在折腾操作系统,今天到了用 gdb 配合 qemu 来调试内核,就碰到了这个问题。
虽然显示的是警告,但是下面的错误和这个警告有莫大的关系。
想起之前看到的,软件里出现警告便是已经说明程序没有按照预期执行了,一个严谨的程序员理当消除一切异常。
言归正传
此警告下接着会出现如下错误
Remote 'g' packet reply is too long (expected 312 bytes, got 536 bytes):
后边跟着一串16进制字符。
操作系统与 gdb、qemu 皆为64位。
根据警告字面意思来理解,是所选择的 i386 架构与以声明的 x86-64 架构不兼容,刚会用 gdb 面对这个问题着实有些懵,不知道是 gdb 的问题还是 qemu 的问题。网上讨论也有些纷杂,众说纷纭,莫衷一是。
先说解决措施,通过设置一条 gdb 指令来显示的指出所调试架构,便可以解决从问题。
set arch i386:x86-64
其实还是不太明白,只是倾向于 qemu 的一些问题,因为网上还有些解决措施是通过 hack qemu来解决的。
值得一提的是,gdb 中直接输入
set arch
他会给你提示有效的参数值。
Requires an argument. Valid arguments are i386, i386:x86-64, i386:x64-32, i8086, i386:intel, i386:x86-64:intel, i386:x64-32:intel, i386:nacl, i386:x86-64:nacl, i386:x64-32:nacl, auto.
参考链接:
[Remote ‘g’ packet reply is too long
Ask Question](https://stackoverflow.com/questions/8662468/remote-g-packet-
reply-is-too-
long?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa)