我正在尝试在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,我安装的工具所在的版本。)
其他信息:
我一定是想念一些愚蠢的事。
答案 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页获取二进制版本。