linux - 如何为 i386 编译静态二进制文件?
问题描述
我正在尝试使用 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 运行命令也可以看到同样的情况。
解决方案
推荐阅读
- php - 雄辩的 save() 方法在 for 循环中不起作用
- jsf - BootsFaces 不从 ajax 渲染区域
- matplotlib - 如何使用 matplotlib 绘制柱状图?
- vba - VBA中的验证规则来确定文本的长度
- powershell - 如何在不启用 WinRM 的情况下从 VMware Windows 来宾 VM 获取 CDROMDrive 信息?
- delphi - 为什么我尝试裁剪位图时出现空白 TImage?
- c# - Linq 返回分组结果
- image - Flutter CachedNetworkImageProvider 没有加载微调器
- javascript - 烧瓶熊猫到制表表都搞砸了
- python - 在 Python 中以不同字符串开头和结尾的字符串中查找字符串