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

How to resolve build errors in OSX cctools?

本文关键字:cctools 构建 错误 OSX 何解决 解决      更新时间:2023-10-16

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

当我为整个项目运行生成文件时,出现链接器错误:

=========== /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。

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

我无法为您提供版本 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 下载页面获取二进制版本。