是否存在所有已知目标三元组的列表?

时间:2012-12-11 11:54:28

标签: compiler-construction cross-compiling autoconf

交叉编译工具时,通常需要提供“目标三元组”。给出的例子

  • 的i686-PC-Linux的GNU
  • 臂-NONE-Linux的gnueabi
  • PowerPC的未知的Linux

依旧......

这些三元组有时实际上是四个组件,具有以下形式:

<CPU>-<MANUFACTURER>[-<KERNEL>]-<OS>

内核是可选的,制造商可以是“未知”或“无”,因为它通常不相关。

我还没有找到一个记录所有可能值的页面。我知道所有组件都是“自由风格”,因此没有官方标准会强制您使用官方标准化列表中的组件。然而,工具设计人员和配置脚本编写者希望用户将这些三元组指定给他们的工具/脚本,因此他们必须考虑到一些可能的值,并且应该有类似“非官方列表”工具制造商,脚本编写者和用户可以使用的参考。

有没有人找到这样的清单?

1 个答案:

答案 0 :(得分:4)

是的,libtool来源中有。它被称为PLATFORMS。它可能不完整。还有一个名为config.sub的文件在运行autoreconf时生成。这些可能更新/完整。

但根据定义,你要求的东西似乎有点不可能。如果某个制造商推出了新的'xyz'CPU,它将不会出现在列表中一段时间​​。

那么configure脚本编写者在这种情况下做了什么?我的解决方案如下。我在一个名为autoreconf的脚本中调用了bootstrap.sh,它在Goat Book人提倡的构建之前设置了一些东西。这个脚本使用sed(好的,技术上是GNU shtool中的sed包装器脚本)在config.sub将它复制到AC_CONFIG_AUX_DIR之后,将我需要的内容插入autoreconf

幸运的是,config.sub文件带有时间戳,因此如果/''xyz'被添加到“官方”列表中,您只需测试时间戳。然后,您将新的“官方”config.sub添加到您的tarball中,并使用bootstrap.sh来测试autoreconf是否正在编写足够的config.sub。如果它不够新,请用旧的复制旧版本。