我正在尝试使用 GCC 为 i386 静态编译一些代码(dosfstools),使用-static
and -march=i386
,但是库,例如 /usr/lib/i386-linux-gnu/libc.a,尽管名称不是 i386。我尝试在“debian-10.7.0-i386-netinst.iso”和“Fedora-14-i386-netinst.iso”下编译它,但 i386 都不是,尽管名称如此。如何获得真正的 i386 库?
编译后的二进制文件make CFLAGS="-march=i386" LDFLAGS="-march=i386 -static"
无法在 i586 机器上运行,并给出错误“非法指令”。命令objdump mkfs.fat -D | grep cmove
显示二进制文件具有 cmove 指令,这些指令直到 i686 才引入,因此它不是正在生成的 i386 二进制文件。对 /usr/lib/i386-linux-gnu/libc.a 运行命令也可以看到同样的情况。