如何解决OSX cctools中的构建错误?

时间:2016-01-15 02:00:50

标签: c++ macos makefile clang ld

我正在尝试在OSX下的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。

我一定是想念一些愚蠢的事。

1 个答案:

答案 0 :(得分:0)

我无法为您的版本877.5提供确切的解决方案,但是总体问题是,编译需要计算机上的某些LLVM代码。它可能很简单,例如缺少LLVM标头的包含目录,或者可能需要链接某些LLVM库。就您而言,它们似乎与LLVM位码有关。

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

-I/opt/llvm-7.0.0/include/

LLVM 7的版本是一个随机猜测,之所以有用,是因为我将其安装在机器上。您可能需要定制包含路径,以指向应使用cctools构建的LLVM的正确版本。

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