问题标签 [libc++]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
8666 浏览

c++ - 在 Linux 上为 clang 构建 libc++ 的认可方法是什么?

编辑/更新/注意:让 clang 使用 libstdc++。到目前为止,对我来说一直工作得很好。

================================

过去我cmake可以通过buildit使用.libhttp://llvm.org/svn/llvm-project/libcxx/trunk

这个buildit脚本似乎没有使用我之前使用libsupc++的方法。cmake例如,本指南显示了一个cmake为 生成生成文件的咒语libc++,它将能够负责编译和安装。

我的问题是这些不同的生产 LLVM 的方法之间有什么区别——libc++应该使用哪一种?他们的行为会有所不同吗?

buildit脚本似乎没有为安装提供任何帮助。是否有关于如何正确安装库的说明?在我以前用 cmake 构建的 libc++ 中,我必须始终添加-lc++到链接器标志(以及带有 的路径-L),这在我的 OS X makefile 中是不需要的。

0 投票
2 回答
14150 浏览

clang - 在 mac 10.6.8 上安装 libc++

我目前正在尝试在我的 Mac 上安装 lib++.1.dylib。我按照这里的说明http://libcxx.llvm.org/下载了源代码。当我尝试时./buildit遇到clang++: command not found错误。

所以我去了这里http://clang.llvm.org/get_started.html并安装了clang。不幸的是,现在当我重新安装 libcxx 时,我仍然收到 clang++ 错误。Clang 本身clang --help的工作原理是打开帮助菜单。

安装 Xcode 不是一个选项,因为我正在运行 10.6.8。

我该如何继续,即让 clang++ 命令工作?

0 投票
1 回答
1490 浏览

c++ - LLVM libc++ 无法在 Mac OS 上使用 clang 3.3 编译

我刚刚从 LLVM 网页下载了 clang 3.3 (homebrew) 到我的 mac (OS X 10.8.4),但是在使用时得到这个编译器错误std=c++11 stdlib=libc++

看来我还需要另一个 libc++(尽管据说它在 MAC 上已 100% 完成......),但我找不到任何东西。任何帮助表示赞赏。仅供参考:


而且,是的,我用谷歌搜索它并找到了这个:http ://comments.gmane.org/gmane.comp.compilers.llvm.bugs/24138声称它已在 libc++ 主干中解决???


好的,正如霍华德所建议的,我已经将树干顶端的 libc++ 下载到 /opt/local/share/libcxx 中,但是在构建它时遇到了麻烦。手册说 to cd libcxx/libexport TRIPLE=-apple-和 run ./buildit。我认为这意味着bash(我通常是tcsh用户,所以我移动了我的.tcshrc,得到了一个新的 shell 并开始了bash)。我这样做了,编译成功了,但是库构建失败了。显然./buildit没有看到$TRIPLE=-apple-,因为它选择了错误LDSHARED_FLAG(不是第 81 行,而是第 103 行,如果$TRIPLE未设置,则将使用它),即使它应该echo $TRIPLE产生。当我在顶部-apple-添加语句时,它什么也不报告。怎么会?这里有什么问题?echo TRIPLE = $TRIPLEbuildit


失败是因为LDSHARED_FLAG选择了错误,加载不起作用(ld关于未知选项的抱怨-soname,我认为这在 linux 下是有意义的)。我不知道为什么buildit(一个#! /bin/sh文件)没有拾取TRIPLE环境变量(它确实拾取了几个不需要的变量,例如CXXand CC)。我现在只是TRIPLE=-apple-在该文件的顶部添加了它,它确实构建了库。然而,装载机吐出了几个警告,所有这些都是形式

ld:警告:在 ___cxa_bad_typeid 中直接访问 std::bad_typeid 的全局弱符号类型信息意味着在运行时不能覆盖弱符号。这可能是由使用不同可见性设置编译的不同翻译单元引起的。

但最重要的是,它可以工作(至少编译,我还没有测试这个库)。我有最后一个问题。建议是使用-I-L告诉编译器这个版本的下落。不能放到平常的地方/usr/include/c++/v1/吗?请注意,无论如何,Xcode 在其他地方都有它的版本,我已经在那个地方添加了一个符号链接 ( /usr/include/c++/v1/),以让我的自制 clang 3.2 工作(在一些 Xcode 更新之后)。图书馆呢?我也可以把它放在一个标准的地方吗?

0 投票
3 回答
13110 浏览

linker-errors - clang++ -stdlib=libc++ 导致未定义的引用

为什么在 libc++ 中使用 clang 时出现以下链接器错误:

在哪里:

代码很简单:

0 投票
1 回答
1760 浏览

c++ - glm 和 cxx-prettyprint,clang:调用在模板定义中不可见的函数'operator <<'

有人一起使用这些库吗?cxx-prettyprintglm。我遇到了一个很难弄清楚的编译时问题。

如果您对“SUITE”和“TEST”感到困惑,那是因为这段代码使用UnitTest++.

Math.h 中有:

这是错误:

0 投票
1 回答
1337 浏览

c++ - libc++ 无法处理 fcgi streambuf

我想使用 fcgi 和 nginx 用 C++11 编写一个网站。目前只有 Clang++ 结合 libc++ 支持完全 C++11。

但是当我运行我的 fcgi 程序时,当有人通过浏览器请求页面时,我得到一个 seg-fault:似乎 libc++ 不喜欢 fcgi 使用流的方式。

测试代码:

上面的代码是用以下代码编译的:

gdb 输出以下内容:

如果我在没有 -stdlib=libc++ 的情况下编译它,一切正常,除了我不能使用一些 c++11 功能......</p>

有没有办法可以运行我的 fcgi-app 而不会崩溃并使用 libc++?

0 投票
1 回答
3368 浏览

xcode - 无法在 XCode 中选择 libc++ 或 libstdc++

我正在尝试在 XCode 中构建一个同时使用 Cinder 和 OpenSubdiv 的项目。

它们在很多方面发生冲突,我已经解决了大多数问题,但最后一个让我头疼。

我有一个链接器错误:

“架构 x86_64 的未定义符号:“std::__throw_length_error(char const*)”,引用自:blah blah

经过一番研究,我发现我应该将“C++ 标准库”从 libc++ 更改为 libstdc++。

但是,Cinder 抱怨并告诉我它需要libc++。所以我被困住了。

我设法让 Cinder 和 OpenSubdiv 在 windows 上一起工作,但在 mac 上真的很难。有没有可能解决这个问题的方法?

0 投票
1 回答
924 浏览

c++ - 如何将 XCode 的 libc++ 与 top-of-trunk clang 一起使用?

编译此文件时

使用带有 Xcode 的 clang 版本,我可以告诉 clang 使用 llvm 的 libc++,如下所示:

但是,当使用自建版本的 clang 时,此命令不起作用,因为 clang 找不到 libc++:

我知道我可以从源代码下载、构建和安装 libc++;但是,我更愿意使用 Xcode 附带的版本。

使用我自己的 clang 版本时,如何使用 Xcode 附带的 libc++ 版本?

0 投票
2 回答
723 浏览

c++11 - 向量和字符串编译简单代码的异常规范实例化中的 libc++ 错误

编译此简单代码时出现错误,如果删除 noexcept ,则不会出现错误:

这是我得到的错误,我知道它是在异常规范的实例化中,但我怀疑 std::string 不是可构造的,..第一个错误让我认为有一个错误。

在 /Users/Mani/Development/Projects/flowOfLife/Graphics/Graphics/TestCompileError.cpp:1 包含的文件中: 在 /Users/Mani/Development/Projects/flowOfLife/Graphics/Graphics/TestCompileError.h:4 包含的文件中: /usr/local/bin/../lib/c++/v1/vector:575:67: 错误:'std::__1::is_nothrow_move_constructible, std::__1::allocator > > > ' 除了(is_nothrow_move_constructible::value); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ 在文件中包含在 /Users/Mani/Development/Projects/flowOfLife/Graphics/Graphics/TestCompileError.cpp:1 中:在文件中包含在 /Users/Mani/Development/Projects/flowOfLife/Graphics/Graphics/TestCompileError.h:4 中:在文件中包含在 /usr/local/bin/../lib/c++/v1/vector:264: /usr/local/bin/../lib/c++/v1/__config:325:34: 注意:从宏扩展' NOEXCEPT ' 定义NOEXCEPT(x) noexcept(x) ^ 在 /Users/Mani/Development/Projects/flowOfLife/Graphics/Graphics/TestCompileError.cpp:1 中包含的文件中:/Users/Mani/Development/Projects/flowOfLife/Graphics/Graphics/TestCompileError。 h:29:29:注意:在此处要求 std::vector vectorFoo_ 的“向量”的异常规范的实例化中;^ 在/Users/Mani/Development/Projects/flowOfLife/Graphics/Graphics/TestCompileError.cpp:1 中包含的文件中:在/Users/Mani/Development/Projects/flowOfLife/Graphics/Graphics/TestCompileError.h:4 中包含的文件中:在 /usr/local/bin/../lib/c++/v1/vector:265 中包含的文件中:在 /usr/local/bin/../lib/c++/v1/__bit_reference:15 中包含的文件中:在文件包含在 /usr/local/bin/../lib/c++/v1/algorithm:624: /usr/local/bin/..Tp>::type> ^ 在 /Users/Mani/Development/Projects/flowOfLife/Graphics/Graphics/TestCompileError.cpp:1 中包含的文件中:在 /Users/Mani/Development/Projects/flowOfLife/Graphics/Graphics 中包含的文件中/TestCompileError.h:4: /usr/local/bin/../lib/c++/v1/vector:575:20: 注意:在模板类 'std:: _1::is_nothrow_move_constructible 的实例化中,std::__1: :allocator > > >' 在这里请求 NOEXCEPT(is_nothrow_move_constructible::value); ^ 在/Users/Mani/Development/Projects/flowOfLife/Graphics/Graphics/TestCompileError.cpp:1 中包含的文件中:在/Users/Mani/Development/Projects/flowOfLife/Graphics/Graphics/TestCompileError.h:4 中包含的文件中:在 /usr/local/bin/../lib/c++/v1/vector:264 包含的文件中:/usr/local/bin/../lib/c++/v1/__config:325:34:注意:扩展从宏 ' NOEXCEPT ' 定义NOEXCEPT(x) noexcept(x) ^ 在 /Users/Mani/Development/Projects/flowOfLife/Graphics/Graphics/TestCompileError.cpp:1 中包含的文件中:/Users/Mani/Development/Projects/flowOfLife/Graphics/Graphics/TestCompileError。 h:29:29:注意:在此处要求 std::vector vectorFoo_ 的“向量”的异常规范的实例化中;^ 在/Users/Mani/Development/Projects/flowOfLife/Graphics/Graphics/TestCompileError.cpp:1 中包含的文件中:在/Users/Mani/Development/Projects/flowOfLife/Graphics/Graphics/TestCompileError.h:4 中包含的文件中: /usr/local/bin/../lib/c++/v1/vector:582:58: 错误: 'std::__1::is_nothrow_move_assignable, std::__1::allocator >> >' is_nothrow_move_assignable::value);NOEXCEPT ' 定义NOEXCEPT(x) noexcept(x) ^ 在 /Users/Mani/Development/Projects/flowOfLife/Graphics/Graphics/TestCompileError.cpp:1 中包含的文件中:/Users/Mani/Development/Projects/flowOfLife/Graphics/Graphics/TestCompileError。 h:29:29:注意:在此处请求的 'operator=' 的异常规范的实例化中 std::vector vectorFoo_; ^ 在/Users/Mani/Development/Projects/flowOfLife/Graphics/Graphics/TestCompileError.cpp:1 中包含的文件中:在/Users/Mani/Development/Projects/flowOfLife/Graphics/Graphics/TestCompileError.h:4 中包含的文件中:在 /usr/local/bin/../lib/c++/v1/vector:265 中包含的文件中:在 /usr/local/bin/../lib/c++/v1/__bit_reference:15 中包含的文件中:在文件包含在 /usr/local/bin/../lib/c++/v1/algorithm:624: /usr/local/bin/.. /lib/c++/v1/type_traits:2760:45: 注意:在模板类 'std::__1::add_lvalue_reference, std::__1::allocator > > >' 的实例化中:public is_nothrow_assignableTp>::type, ^ 在/Users/Mani/Development/Projects/flowOfLife/Graphics/Graphics/TestCompileError.cpp:1 中包含的文件中:在/Users/Mani/Development/Projects/flowOfLife/Graphics/Graphics/TestCompileError.h:4 中包含的文件中: /usr/local/bin/../lib/c++/v1/vector:582:14: 注意:在模板类 'std::_1::is_nothrow_move_assignable, std::__1::allocator > > >' 的实例化中此处请求 is_nothrow_move_assignable::value); ^ 在 /Users/Mani/Development/Projects/flowOfLife/Graphics/Graphics/TestCompileError.cpp:1 中包含的文件中:NOEXCEPT ' 定义NOEXCEPT(x) noexcept(x) ^ 在 /Users/Mani/Development/Projects/flowOfLife/Graphics/Graphics/TestCompileError.cpp:1 中包含的文件中:/Users/Mani/Development/Projects/flowOfLife/Graphics/Graphics/TestCompileError。 h:29:29:注意:在此处请求的 'operator=' 的异常规范的实例化中 std::vector vectorFoo_; ^ 在/Users/Mani/Development/Projects/flowOfLife/Graphics/Graphics/TestCompileError.cpp:1 中包含的文件中:在/Users/Mani/Development/Projects/flowOfLife/Graphics/Graphics/TestCompileError.h:4 中包含的文件中:在 /usr/local/bin/../lib/c++/v1/vector:265 中包含的文件中:在 /usr/local/bin/../lib/c++/v1/__bit_reference:15 中包含的文件中:在文件包含在 /usr/local/bin/../lib/c++/v1/algorithm:624: /usr/local/bin/..Tp>::type> ^ 在 /Users/Mani/Development/Projects/flowOfLife/Graphics/Graphics/TestCompileError.cpp:1 中包含的文件中:在 /Users/Mani/Development/Projects/flowOfLife/Graphics/Graphics 中包含的文件中/TestCompileError.h:4: /usr/local/bin/../lib/c++/v1/vector:575:20: 注意:在模板类 'std:: _1::is_nothrow_move_constructible 的实例化中,std::__1: :allocator > > >' 在这里请求 NOEXCEPT(is_nothrow_move_constructible::value); ^ 在/Users/Mani/Development/Projects/flowOfLife/Graphics/Graphics/TestCompileError.cpp:1 中包含的文件中:在/Users/Mani/Development/Projects/flowOfLife/Graphics/Graphics/TestCompileError.h:4 中包含的文件中:在 /usr/local/bin/../lib/c++/v1/vector:264 包含的文件中:/usr/local/bin/../lib/c++/v1/__config:325:34:注意:扩展从宏 ' NOEXCEPT ' 定义NOEXCEPT(x) noexcept(x) ^ 在 /Users/Mani/Development/Projects/flowOfLife/Graphics/Graphics/TestCompileError.cpp:1 中包含的文件中:/Users/Mani/Development/Projects/flowOfLife/Graphics/Graphics/TestCompileError。 h:29:29:注意:在此处要求 std::vector vectorFoo_ 的“向量”的异常规范的实例化中;

我的编译器从树顶发出叮当声。我究竟做错了什么?

谢谢

更新 Coliru 上的错误。如果我不指定 libc++ 而是使用 stdlibc++ 它会编译。它开始看起来很像 libc++ 中的错误。

0 投票
1 回答
500 浏览

c++ - 使用 libc++ 会导致 GDB 在 OS X 上出现段错误

我正在尝试将 C++11(在 OS X 上使用 Clang 和 libc++)用于程序,但是每当我使用 gdb 进行调试并尝试检查标准容器时,gdb segfaults。这是一个最小的例子:

文件.cpp:

如果我使用以下代码为 C++11 编译:

然后按如下方式调试,当我尝试时它崩溃p str.size()

如果我不在 gdb 中运行它,我不会崩溃并且它工作正常(但我需要 gdb 来调试我的程序)。此外,如果我-std=c++11 -stdlib=libc++从编译选项中删除,那么它工作正常(即使在 gdb 中),但我的程序需要 C++11。

Are there some known issues with gdb and C++11 (specifically libc++)? I know libc++ and libstdc++ can cause issues if used together, but I'm not trying to use them together (at least not consciously; all I want to use is libc++). Am I specifying some compilation options wrong? Is there a way to properly compile for C++11 on OS X and still be able to debug properly?