【问题标题】:Compile cln with clang and libc++使用 clang 和 libc++ 编译 cln
【发布时间】:2013-10-27 17:00:00
【问题描述】:

我尝试用clang和libc++作为我的项目来编译cln,它使用ginac(它本身使用cln)需要某些c++11特性。在我尝试的过程中,我发现链接到 libc++ 而不是 stdlibc++ 应该可以解决问题,所以我最终使用以下命令进行配置:

./configure CXX=/usr/bin/clang++ CXXFLAGS="-stdlib=libc++ -std=c++11" LDFLAGS="-stdlib=libc++"

效果很好。但是,我在调用 make 时收到以下错误消息:

Making all in src
/bin/sh ../libtool  --tag=CXX   --mode=compile /usr/bin/clang++ -DHAVE_CONFIG_H -I. -    I../autoconf  -I../include -I../src -I../include -I../src   -stdlib=libc++ -std=c++11 -MT   cl_alloca.lo -MD -MP -MF .deps/cl_alloca.Tpo -c -o cl_alloca.lo `test -f 'base/cl_alloca.cc'  || echo './'`base/cl_alloca.cc
libtool: compile:  /usr/bin/clang++ -DHAVE_CONFIG_H -I. -I../autoconf -I../include -   I../src -I../include -I../src -stdlib=libc++ -std=c++11 -MT cl_alloca.lo -MD -MP -MF .deps/cl_alloca.Tpo -c base/cl_alloca.cc  -fno-common -DPIC -o .libs/cl_alloca.o
In file included from base/cl_alloca.cc:4:
In file included from ./base/cl_sysdep.h:56:
In file included from ./base/cl_macros.h:7:
../include/cln/exception.h:14:24: error: implicit instantiation of undefined template     'std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >'
            : std::runtime_error(std::string()) {}
                                 ^
/usr/bin/../lib/c++/v1/iosfwd:187:28: note: template is declared here
    class _LIBCPP_TYPE_VIS basic_string;
                       ^
1 error generated.
make[1]: *** [cl_alloca.lo] Error 1
make: *** [all-recursive] Error 1

我做错了什么?如何解释此错误消息并最终解决我的问题?

【问题讨论】:

    标签: c++ c++11 clang osx-mountain-lion libc++


    【解决方案1】:

    在include/cln/exception.h中,include &lt;string&gt;:

    // Exception types.
    
    #ifndef _CL_EXCEPTION_H
    #define _CL_EXCEPTION_H
    
    #include <stdexcept>
    + #include <string>
    
    namespace cln {
    

    这只是 cln/exception.h 中的一个错误。

    【讨论】:

      猜你喜欢
      • 2011-09-22
      • 1970-01-01
      • 2012-01-19
      • 2012-09-14
      • 1970-01-01
      • 2011-10-24
      • 2013-08-12
      • 1970-01-01
      • 2020-07-21
      相关资源
      最近更新 更多