2013-12-21 43 views
1

我想在Mac上交叉編譯基於鐺/ LLVM的ELLCC cross development tools project。我的目標是ARM/Linux。構建FileCheck(或tbl-gen或在交叉編譯 - 構建工具步驟期間構建的任何其他構建工具)時構建失敗,因爲構建規則嘗試將--version-script選項傳遞給鏈接器。有很多配置魔法正在進行,我似乎無法找到說不在Mac上使用--version-script的咒語。如何在Mac上交叉編譯clang/LLVM時禁用--version-script?

對我的問題稍加說明。 ELLCC在Mac上構建良好,並創建可用於創建ARM/Linux程序(或Mips/Linux,Microblaze/Linux,PowerPC/Linux等)的可執行文件。我遇到的麻煩是當我試圖讓ELLCC爲目標進行編譯時。

clang/LLVM需要它提供的幾個工具,需要在構建主機上運行。這些工具正在使用本機Mac clang編譯爲Mac可執行文件,但鏈接階段已經混淆並試圖使用--version-script,即使Mac鏈接器不支持它。

回答

1

你的標題中幾乎有魔法標誌(或法術)。我想你可能會尋找:

--disable-ld-version-script 

也有建議和注意事項與交叉編譯,可發現here(部分交叉編譯自自舉工具可能是相關的)處理。

+0

幾乎正確,但感謝您的信息。看到我的答案。 –

0

事實證明,用於交叉構建的規則存在問題。當我在OS X上爲Linux構建時,Makefile.rules中的變量HOST_OS是「Linux」。我不得不添加一個達爾文條件:

ifeq ($(HOST_OS), $(filter $(HOST_OS), DragonFly Linux NetBSD FreeBSD GNU/kFreeBSD GNU)) 
ifneq ($(shell uname -s),Darwin) 
ifneq ($(ARCH), Mips) 
    LD.Flags += -Wl,--version-script=$(LLVM_SRC_ROOT)/autoconf/ExportMap.map 
endif 
endif 
endif 
endif 

有可能應該是一個BUILD_OS與HOST_OS,或HOST_OS設置不正確這裏。