gnu mipsel gcc似乎不考虑体系结构选项

pgvzfuti  于 2023-03-08  发布在  其他
关注(0)|答案(1)|浏览(133)

编译一个测试hello world C程序,将-march设置为不同的值,生成相同的可执行文件,例如:

$ mipsel-linux-gnu-gcc-10 -march=mips32 -static -EL /tmp/test.c -o /tmp/test_mips32
$ mipsel-linux-gnu-gcc-10 -march=mips32r2 -static -EL /tmp/test.c -o /tmp/test_mips32r2
$ mipsel-linux-gnu-gcc-10 -march=24kc -static -EL /tmp/test.c -o /tmp/test_24kc

结果是

$ file /tmp/test_mips32
/tmp/test_mips32: ELF 32-bit LSB executable, MIPS, MIPS32 rel2 version 1 (SYSV), statically linked, BuildID[sha1]=92738788137ab5f60695febf78213eb7961ef4bd, for GNU/Linux 3.2.0, not stripped
$ file /tmp/test_mips32r2 
/tmp/test_mips32r2: ELF 32-bit LSB executable, MIPS, MIPS32 rel2 version 1 (SYSV), statically linked, BuildID[sha1]=92738788137ab5f60695febf78213eb7961ef4bd, for GNU/Linux 3.2.0, not stripped
$ file /tmp/test_24kc 
/tmp/test_24kc: ELF 32-bit LSB executable, MIPS, MIPS32 rel2 version 1 (SYSV), statically linked, BuildID[sha1]=92738788137ab5f60695febf78213eb7961ef4bd, for GNU/Linux 3.2.0, not stripped

我还验证了文件的字节是否相同。
我错过了什么?

8zzbczxx

8zzbczxx1#

没有实际的源代码,这很难说,但答案可能只是编译器没有理由在您的情况下做出不同的选择。
请记住,所有提到的行军旗共享一个公共的MIPS内核,所以生成适用于这三个内核的代码并非不可能,也许该代码对您的情况是最佳的?

相关问题