首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Mac上交叉编译clang/LLVM时如何禁用--version-script?

在Mac上交叉编译clang/LLVM时如何禁用--version-script?
EN

Stack Overflow用户
提问于 2013-12-22 06:21:07
回答 2查看 1.8K关注 0票数 2

我正尝试在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链接器不支持它。

EN

回答 2

Stack Overflow用户

发布于 2013-12-22 15:02:48

实际上,你的头衔中有魔法旗帜(或咒语)。我想你可能在找:

代码语言:javascript
运行
复制
   --disable-ld-version-script

还有一些关于交叉编译的建议和注意事项,可以在here上找到(交叉编译一节自引导工具可能是相关的)。

票数 1
EN

Stack Overflow用户

发布于 2013-12-23 01:49:11

事实证明,用于交叉构建的规则存在问题。当我在OS上为Linux构建时,Makefile.rules中的变量HOST_OS是"Linux“。我不得不加上一个达尔文条件:

代码语言:javascript
运行
复制
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设置不正确。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20724145

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档