常见问题
安装相关
Q: sudo apt install 报错 “Unable to locate package”
原因: 包管理器缓存过期。
解决:
sudo apt update
# 然后重新安装Q: macOS 上 gcc 实际上是 Clang
原因: macOS 的 gcc 命令默认指向 Clang。
解决: 使用交叉编译器 i686-elf-gcc:
brew install i686-elf-gcc后续 Makefile 中将 gcc 替换为 i686-elf-gcc。
Q: WSL 中 QEMU 窗口不显示
原因: 缺少图形界面支持。
解决:
- Windows 11: 确保 WSL2 已更新到最新版(自带 WSLg)
- Windows 10: 安装 VcXsrv 并设置 DISPLAY 环境变量:
export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0
Q: QEMU 启动报错 “Could not initialize SDL”
解决: 安装 SDL 库:
sudo apt install libsdl2-dev或使用无窗口模式测试:
qemu-system-x86_64 -drive format=raw,file=test.img -nographic编译相关
Q: gcc -m32 报错 “cannot find -lgcc”
原因: 缺少32位库支持。
解决:
sudo apt install gcc-multilibQ: NASM 报错 “unrecognized option”
原因: NASM 版本过低。
解决:
# 检查版本
nasm --version
# 如果版本低于 2.14,手动安装新版
sudo apt install nasm调试相关
Q: GDB 连接 QEMU 失败
解决: 启动 QEMU 时添加调试选项:
# 启动 QEMU 并等待 GDB 连接
qemu-system-x86_64 -drive format=raw,file=os.img -s -S
# 在另一个终端启动 GDB
gdb
(gdb) target remote localhost:1234Q: GDB 没有源码信息
解决: 编译时添加调试信息:
gcc -m32 -g -ffreestanding -c kernel.c -o kernel.o
nasm -f elf32 -g boot.asm -o boot.o