【问题标题】:How to resolve build errors in OSX cctools?如何解决 OSX cctools 中的构建错误?
【发布时间】:2016-04-20 13:58:58
【问题描述】:

我正在尝试从 OSX 下的 CCtools 集合构建工具。我这样做是出于研究目的。

当我为整个项目运行 makefile 时,我得到一个链接器错误:

=========== /Applications/Xcode.app/Contents/Developer/usr/bin/make all for misc =============
cc -Os -DLTO_SUPPORT -DTRIE_SUPPORT -g -Wall -I. -I./../include -I.  -I/usr/local/include  -c -o ./lipo.o lipo.c
cc  -nostdlib -r \
        -o ./lipo.private.o \
        ./lipo.o -L./../libstuff -lstuff
cc   -o ./lipo.NEW \
        ./lipo.private.o
Undefined symbols for architecture x86_64:
  "_is_llvm_bitcode_from_memory", referenced from:
      _main in lipo.private.o
      _check_archive in lipo.private.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[1]: *** [lipo.NEW] Error 1
make: *** [all] Error 1

运行各个工具的 make 文件会给我带来类似的链接器错误。我尝试过的所有 CCtools 版本都会出现这种情况(包括 877.5,最新源和 862,我安装的工具所在的版本。)

  • 编译工具时缺少什么?
  • 如何哄骗链接器让我知道我缺少什么库?
  • 在哪里可以找到使工具编译的指令?

附加信息:

  • 我安装了 XCode 和开发人员工具,并且一直在构建项目。
  • 我还从 brew 安装了 gcc。

我一定错过了一些愚蠢的东西。

【问题讨论】:

  • 你解决了吗?解决办法是什么?

标签: c++ macos makefile clang ld


【解决方案1】:

我无法为您的版本 877.5 提供确切的解决方案,但总体问题是编译需要您机器上的一些 LLVM 代码。它可能就像缺少 LLVM 标头的包含目录一样简单,或者可能需要链接一些 LLVM 库。在您的情况下,它们似乎与 LLVM Bitcode 有关。

就我而言,我刚刚构建了更新版本 cctools-895 的一个子集。它抱怨缺少与 LLVM 的 llvm-c/lto.h 标头相关的符号。当我将以下内容添加到有问题的文件的编译规则中时,错误消失了:

-I/opt/llvm-7.0.0/include/

LLVM 7 的版本是随机猜测的,因为我在我的机器上安装了它。您可能希望定制包含路径以指向应该构建 cctools 的正确 LLVM 版本。

在您的机器上获取 LLVM 的最简单方法是从 LLVM Download 页面获取二进制版本。

【讨论】:

    猜你喜欢
    • 2021-01-09
    • 1970-01-01
    • 2012-09-30
    • 1970-01-01
    • 2021-03-09
    • 2016-11-02
    • 1970-01-01
    • 2021-02-26
    • 2011-06-18
    相关资源
    最近更新 更多