2017-05-16 40 views
0

同時移植vpp項目進入buildroot包裝系統新的/不尋常的/不規則的主機名被發現:如何修復x86_64-mu-linux-gnu主機工具鏈前綴的配置腳本?

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

而在選擇x86_64的時候buildroot的,默認的工具鏈

x86_64-linux 

生成和符號鏈接轉換爲buildroot私人工具鏈命名爲

x86_64-buildroot-linux-uclibc 

這是完成嚴格遵守交叉編譯構建的常規做法。

x86_64的-MU-Linux的GNU也似乎沒有對編譯器工具集的前綴,而是配置正在尋找

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

的問題是:

什麼修復這個「魔術」命名的最佳實踐(特別是去除中心「-mu」後綴)到buildroot工具鏈中常用的命名中?

如果可以替代創建一組符號鏈接,我們將非常感激。 (最好是固定的內部配置腳本系統)

+0

的快速更新,負責不同尋常的後綴生成的文件似乎是: https://github.com/vpp-dev/vpp/blob/master/build-root/Makefile 其中完整的不尋常平臺名稱在179行被硬編碼 –

回答

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期待您導出平臺變量定義架構 (東西像:i686的arm64PPC64x86_64的等)

例如:

PLATFORM=$(ARCH) 
  • 在編譯VPP項目跨平臺的方式它期望特殊變量被配置識別操作系統你要編譯的目標平臺和這種識別n是棘手

    • 變量的名稱將是拱名稱按「_OS」後綴以下的合成。變量的值必須是OS名稱。

    • 爲上x86_64的linux上運行必須導出一個名爲 「x86_64_os」 變量與價值分配 「LINUX」。

  • 例如:

    x86_64_os=linux 
    

    但最好導出如下方式:

    $(ARCH)_os=linux 
    
  • 所得建立命令的示例的外觀例如:

    PLATFORM=$(ARCH) $(ARCH)_os=linux make bootstrap 
    
  • 如果您無法識別您的工具鏈的操作系統,項目編譯環境會將mu-linux定義爲主機操作系統,並且無法發現相應的工具鏈。