2013-12-21 44 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设置不正确这里。