我正尝试在Mac上交叉编译我的基于clang/LLVM的ELLCC cross development tools project。我的目标是ARM/Linux。在构建版本(或tbl-gen或在交叉编译-构建工具步骤中构建的任何其他构建工具)时,构建会失败,因为构建规则试图将-- FileCheck -script选项传递给链接器。有很多配置魔术正在上演,我似乎找不到在Mac上不要使用--version-script的咒语。
稍微澄清一下我的问题。ELLCC可以在Mac上很好地构建,并创建可用于创建ARM/Linux程序(或Mips/Linux、Microblaze/Linux、PowerPC/Linux等)的可执行文件。我遇到的麻烦是当我试图让ELLCC为目标编译自己的时候。
clang/LLVM需要几个它提供的工具,这些工具需要在构建主机上运行。这些工具正在使用原生Mac clang被正确编译为Mac可执行文件,但是链接阶段混淆了,并试图使用--version-script,尽管Mac链接器不支持它。
发布于 2013-12-22 15:02:48
实际上,你的头衔中有魔法旗帜(或咒语)。我想你可能在找:
--disable-ld-version-script
还有一些关于交叉编译的建议和注意事项,可以在here上找到(交叉编译一节自引导工具可能是相关的)。
发布于 2013-12-23 01:49:11
事实证明,用于交叉构建的规则存在问题。当我在OS上为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设置不正确。
https://stackoverflow.com/questions/20724145
复制相似问题