交叉编译时,是否有GCC选项可打印目标三元组?

7

gcc -dumpmachine 几乎完美,但它不支持影响目标的标志。另一方面,clang 可以:

$ gcc -dumpmachine
x86_64-unknown-linux-gnu
$ gcc -dumpmachine -m32
x86_64-unknown-linux-gnu

$ clang -dumpmachine
x86_64-unknown-linux-gnu
$ clang -dumpmachine -m32
i386-unknown-linux-gnu

1
可能不会,就GCC编译器本身而言,-m32并不改变目标,就像-march=i486不会将目标更改为i486-unknown-linux-gnu一样。 - Ross Ridge
我认为答案是否定的。不过,clang 的行为看起来很有用(特别是如果 -m32 结果也遵守了 -march 选项,例如在适当的情况下打印 i686-...)。 - Jonathan Wakely
1
注意:-m32 不是“交叉编译”,它只是使用相同架构的不同指令集,被称为多库目标。 - Jonathan Wakely
实际上,我认为 clang 会这样做,但它没有;即使 -march-armv7-a 会导致其目标从 armv5te-... 更改为 arm7-...-dumpmachine 的输出仍然保持不变。太糟糕了! - Tavian Barnes
1个回答

4
也许 -print-multiarch 很有用。根据文档,这个选项“显示目标的规范化 GNU 三元组,作为库路径中的一个组件”。
在我的 x86_64 系统上,我得到了以下输出:
$ gcc -print-multiarch
x86_64-linux-gnu
$ gcc -print-multiarch -m32
i386-linux-gnu

1
除了在我的电脑上只打印一个换行符之外,其他都很完美:/ - Tavian Barnes
哎呀,太遗憾了。我在这里了解到了这个选项:https://wiki.debian.org/Multiarch/Tuples。显然,它已经在gcc 4.7中集成了。 - Grodriguez

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接