【问题标题】:how to fix configure script for x86_64-mu-linux-gnu host toolchain prefix?如何修复 x86_64-mu-linux-gnu 主机工具链前缀的配置脚本?
【发布时间】:2017-05-16 16:01:51
【问题描述】:

在将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 工具链中使用的常规命名的最佳实践是什么?

如果提出创建一组符号链接的替代方法,将不胜感激。 (最好在配置脚本系统中修复)

【问题讨论】:

标签: cross-compiling configure toolchain gnu-toolchain


【解决方案1】:

这里是来自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 变量 (例如:i686arm64ppc64x86_64 等)

示例:

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

    • 变量的名称将是由“_os”后缀的arch 名称合成。变量的值必须是操作系统名称。

    • 对于在 x86_64 上运行的 linux,您必须导出名为“x86_64_os”的变量,并分配值“linux”。

示例:

x86_64_os=linux

但最好按照以下方式导出:

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

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

    李>

【讨论】:

    猜你喜欢
    • 2019-04-15
    • 2013-08-21
    • 1970-01-01
    • 1970-01-01
    • 2012-02-12
    • 1970-01-01
    • 2019-02-11
    • 2012-12-09
    • 2014-08-01
    相关资源
    最近更新 更多