0

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

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

4

1 回答 1

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变量(例如: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定义为主机操作系统,并且无法发现相应的工具链。

于 2017-05-17T14:36:55.880 回答