铛3.1 + ++的libc编译错误(Clang 3.1 + libc++ Compile Erro

2019-09-16 17:21发布

我已经建造和安装(前缀下~/alt成功使用GCC-4.6在Ubuntu 12.04和反过来的libc ++使用该锵建造LLVM -锵干线(2012年4月23日))。 当我想用它,我必须同时提供-lc++-libstdc++如下

/home/per/alt/bin/clang -x c++ -I/home/per/alt/include/v1 -L/home/per/alt/lib -std=gnu++0x -g -Wall ~/f.cpp -lm -lc++ -lstdc++ -lpthread -o f

编译f.cpp

#include <iostream>

using std::cout;
using std::endl;

int main(int argc, const char * argv[]) {
    cout << "sxx" << endl;
    return 0;
}

如果我省略-lstdc++我得到的链接错误

/home/per/alt/include/v1/ostream:989: error: undefined reference to '__cxa_begin_catch'
/home/per/alt/include/v1/ostream:993: error: undefined reference to '__cxa_end_catch'
/home/per/alt/include/v1/ostream:993: error: undefined reference to '__cxa_end_catch'
/tmp/f-4l9mgl.o(.eh_frame+0xd3): error: undefined reference to '__gxx_personality_v0'
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Compilation exited abnormally with code 1 at Tue Apr 24 13:59:22

应该不是libc++是一个完全替代libstdc++

Answer 1:

libcxx不来与ABI层......这就是为什么libcxxabi存在。

从理论上讲,你应该能够链接到libcxxabi。

在实践中,你可能要链接到libsupc ++或libcxxrt

有一些讨论最近在新闻组,恐怕解决方案是复杂的,并在不断变化: http://thread.gmane.org/gmane.comp.compilers.clang.devel/19782



文章来源: Clang 3.1 + libc++ Compile Error