我在我的Ubuntu Linux系统上从源代码构建并安装了llvm / clang-3.7(我是从源代码构建的,因为我的工作开发环境没有apt-get可用)。 gcc版本是4.8.2。我按照http://clang.llvm.org/get_started.html处的clang构建说明,一切正常(mkdir build; cd build; cmake -G" Unix Makefiles" ../llvm; make; make install)。但是,我现在发现测试Block_copy的程序无法编译。当我尝试构建gnustep-base时,程序由autoconf自动生成。失败的部分是:
int
main ()
{
return _Block_copy ();
;
return 0;
}
我的编译命令是:
clang -o conftest -m64 -march=opteron -mno-3dnow -ggdb -O2 -Wall -I/home/build/GNUstep/Local/Library/Headers -I/home/build/GNUstep/Local/Library/Headers -I/home/build/GNUstep/System/Library/Headers -fgnu-runtime -x objective-c -m64 -L/home/build/GNUstep/Local/Library/Libraries -L/home/build/GNUstep/Local/Library/Libraries -L/home/build/GNUstep/System/Library/Libraries conftest.c -lrt -ldl -lpthread -rdynamic -m64 -fgnu-runtime -L/home/build/GNUstep/Library/Libraries -L/home/build/GNUstep/Local/Library/Libraries -L/home/build/GNUstep/System/Library/Libraries -lobjc -lm
我是否需要使用特殊选项构建clang以启用块,或者我是否应该与其他库链接?
答案 0 :(得分:1)
我是否需要使用特殊选项构建clang以启用块
没有。但是你可能需要使用clang二进制文件-fblocks
选项。
-fblocks
Enable the "Blocks" language feature.
我应该与另一个图书馆联系吗?
AFAIK,是的。
_Block_copy
是BlocksRuntime的一部分。
你编译过编译器rt吗?它包括BlocksRuntime。 The document解释了如何构建compiler-rt。