如何修复x86_64-mu-linux-gnu主机工具链前缀的配置脚本?

时间:2017-05-16 16:01:52

标签: cross-compiling configure toolchain gnu-toolchain

vpp项目移植到buildroot打包系统时,发现了一个新的/异常/不规则的主机名:

checking host system type... x86_64-mu-linux-gnu

在buildroot中选择x86_64时,默认工具链

x86_64-linux

生成并符号链接到名为one

的buildroot私有工具链中
x86_64-buildroot-linux-uclibc

这是交叉编译构建的完全正常做法。

x86_64-mu-linux-gnu也似乎不是编译器工具集的前缀,相反,configure正在寻找

x86_64-mu-linux-gcc, x86_64-mu-linux-gcc.br_real, x86_64-mu-linux-ar, etc

问题是:

修复这个“魔术”命名(特别是去除中心“-mu”后缀)到buildroot工具链中使用的常规命令的最佳做法是什么?

如果提出创建一组符号链接的替代方法,

将非常感激。 (最好修复配置脚本系统内部)

1 个答案:

答案 0 :(得分:0)

来自Makefile的完整原始广告块存在以下问题:

# OS to configure for.  configure --host will be set to $(ARCH)-$(OS)            
# Allow per-platform overrides                                                   

OS = $(strip $($(PLATFORM)_os))                                                  
ifeq ($(OS),)                                                                    
  OS = mu-linux                                                                  
endif 

问题的解决方案以及发现不规则后缀名称的原因:

  1. vpp 希望您导出定义架构的 PLATFORM 变量 (例如: i686 arm64 ppc64 x86_64 等)
  2. 示例:

    PLATFORM=$(ARCH)
    
    1. 在编译 vpp 项目跨平台方式时,期望配置特殊变量来识别您要为目标平台编译的操作系统,并且此标识很棘手

      • 变量的名称将是" _os "的强制名称的合成。后缀。变量的值必须是操作系统名称。

      • 对于在 x86_64 上运行的Linux,您必须导出名为" x86_64_os "的变量价值" linux "分配

    2. 示例:

      x86_64_os=linux
      

      但最好以下列方式导出:

      $(ARCH)_os=linux
      
      1. 生成的构建命令示例如下所示:

        PLATFORM=$(ARCH) $(ARCH)_os=linux make bootstrap
        
      2. 如果您无法识别工具链的操作系统,项目编译环境会将 mu-linux 定义为主机操作系统,并且无法发现相应的工具链。