Linux上的源代码构建的clang-3.7没有找到Block_copy

时间:2015-09-29 14:40:55

标签: linux cmake clang objective-c-blocks autoconf

我在我的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以启用块,或者我是否应该与其他库链接?

1 个答案:

答案 0 :(得分:1)

  

我是否需要使用特殊选项构建clang以启用块

没有。但是你可能需要使用clang二进制文件-fblocks选项。

-fblocks
    Enable the "Blocks" language feature.
  

我应该与另一个图书馆联系吗?

AFAIK,是的。

_Block_copy是BlocksRuntime的一部分。

你编译过编译器rt吗?它包括BlocksRuntime。 The document解释了如何构建compiler-rt。