当前位置: 首页 > 知识库问答 >
问题:

在Mac上交叉编译clang/LLVM时,如何禁用--version脚本?

荣俊
2023-03-14

我正试图在Mac上交叉编译我的基于clang/LLVM的ELLCC交叉开发工具项目。我针对的是ARM/Linux。在构建FileCheck(或tbl-gen或在交叉编译-构建-工具步骤中构建的任何其他构建工具)时,构建失败,因为构建规则试图将- version-script选项传递给链接器。有很多配置魔术在进行,我似乎找不到说不要在Mac上使用-版本-脚本的咒语。

稍微澄清一下我的问题。ELLCC在Mac上构建良好,并创建可用于创建ARM / Linux程序(或Mips / Linux,Microblaze / Linux,PowerPC / Linux等)的可执行文件。我遇到的麻烦是当我尝试让 ELLCC 为目标编译自己时。

clang/LLVM需要它提供的几个工具,这些工具需要在构建主机上运行。这些工具被正确地编译为使用本机Mac clang的Mac可执行文件,但链接阶段被混淆,并试图使用--version脚本,即使Mac链接器不支持它。

共有2个答案

崔宜修
2023-03-14

事实证明,用于交叉构建的规则存在问题。当我在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设置不正确。

彭风华
2023-03-14

你的标题中实际上有魔法旗(或咒语)。我想你可能在寻找:

   --disable-ld-version-script

还有一些关于交叉编译的建议和注意事项,可以在此处找到(交叉编译自引导工具部分可能与此相关)。

 类似资料:
  • 当使用和选项进行交叉编译时,针对与本机系统相同的体系结构和硬件,我注意到 似乎比本机构建的计数器部分生成更差的优化 请考虑以下简单的代码示例: 当使用在下进行优化时,本机 target代码生成生成: 使用

  • 我正在尝试为Android ARM交叉编译llvm/clang。 我也尝试了这里列出的所有步骤,以及在这里找到的指南,但没有运气。 任何帮助都将不胜感激。谢了! 编辑:现在我正在使用以下命令: 错误消息:CLANG36++:警告:编译过程中未使用参数:'-bundle'/users/paschalis/androide/toolchains/gcc/bin/../lib/gcc/arm-linux

  • 我试图将我的一个Rust项目编译为x86_64-unknown-linux-gnu目标: 铁锈版: 我试图用rustup更新所有东西,但我仍然得到同样的问题。

  • 问题内容: 我正在x86 ubuntu机器上为树莓派ARM目标编写一些代码。我正在使用gcc-linaro- armhf工具链。我能够交叉编译并在pi上运行一些独立程序。现在,我想将代码与外部库(例如ncurses)链接。我该如何实现。 我应该将程序与主机上现有的ncurses lib链接,然后在ARM上运行吗?(我认为这行不通)我是否需要为arm获取lib的源代码或预构建版本,将其放在我的lib

  • 问题内容: 我正在尝试在OSX上交叉编译go应用程序,以为Windows和Linux构建二进制文件。我已经阅读了所有可以在网上找到的东西。我发现的最接近的示例已发布(除了有关go- nuts邮件列表的许多未完成的讨论之外): http://solovyov.net/en/2012/03/09/cross-compiling- go/ 但它不适用于我的安装。我去了1.0.2。由于1.0.2是最近的版

  • 问题内容: 这工作得很好,直到从Windows 10,现在是最后的大更新,我不能够设置与 我也尝试以管理员身份启动PowerShell,但即使这样也无法正常工作。有什么工具可以做到这一点?还是有另一种方法可以在Windows 10上交叉编译Go程序? 问题答案: 是Windows命令行解释器()的内部命令。 如果您使用的是PowerShell,则更改环境变量的值应如下所示: 有关更多详细信息,请参