libstdc++ 相关问题

Libstdc ++是C ++标准库的GNU实现,作为GCC的一部分提供

使用 std::stacktrace 的编译和链接错误

我正在 Fedora 39 Linux 中工作,并且想开始使用 C++23 中的 std::stacktrace,它在 libstdc++ 中可用。 不幸的是,即使是最简单的例子,我也遇到了一些错误: #我...

回答 1 投票 0

为什么 libc++ 的 std::string 实现比 libstdc++ 占用 3 倍内存?

考虑以下测试程序: #包括 #包括 #包括 int main() { std::cout << sizeof(std::string("hi")) << " "; std::

回答 4 投票 0

std::basic_istream::ignore 如果设置了 delim MSB 则会挂起

给出以下片段: #包括 #包括 int main() { std::stringstream str; str.put('a'); str.put('\x80'); str.put('a'); str.ignore(32, '\x80');...

回答 1 投票 0

在 CentOS 7 上找不到 GLIBCXX_3.4.21

我最近将 CentOS 上的 gcc 版本从 4.7 更新到 5.4,但现在编译程序时出现以下错误 /lib64/libstdc++.so.6:找不到版本“GLIBCXX_3.4.21” 我发现了...

回答 6 投票 0

__dso_handle 定义在哪里?

我在尝试编译我的程序时遇到未解决的符号错误,它抱怨找不到 __dso_handle。这个函数通常定义在哪个库中? 以下结果是否...

回答 3 投票 0

我如何重构一个方法来擦除基于反向迭代器的元素以避免触发有关复制单个迭代器的警告?

我有一个方法,它接受一个 stl 反向迭代器,做一些工作,擦除元素,并返回一个指向下一个元素的迭代器。例如: #包括 std::向量 我有一个方法,它接受一个 stl 反向迭代器,做一些工作,擦除元素,然后返回一个指向下一个元素的迭代器。例如: #include <vector> std::vector<int> int_vector; using ReverseIteratorType = decltype(int_vector)::reverse_iterator; void do_stuff(); ReverseIteratorType erase_with_reverse_iter(ReverseIteratorType iter) { do_stuff(); std::advance(iter, 1); int_vector.erase(iter.base()); return iter; } 编译时不会出现警告,并且看起来工作正常。问题是,当使用 libstdc++ 运行此代码以验证每个迭代器在使用时是否有效时,如果 iter 指向集合的最后一个元素,则会引发异常,因为迭代器在擦除后被视为单个迭代器,并且不允许调用单个迭代器的复制构造函数。 (这里的另一篇文章对这个问题有更深入的解释。). godbolt 示例在此演示了该问题 两个问题 禁止复制单个迭代器是否违反了标准,或者这是 libstdc++ 的健全性检查? 您将如何重构以避免这个问题? 你不应该忽略erase()的返回值。 erase() 使擦除元素处及其之后的元素的迭代器(以及指针和引用)无效(按容器顺序,而不是迭代器顺序。这包括作为参数传入的迭代器。

回答 1 投票 0

在 CentOS-7 中更新 /usr/include/c++

我已经在 CentOS 7 上安装了 devtoolset-10 软件包并运行 /opt/rh/devtoolset-10/enable 脚本,这样现在当我这样做时: g++ --版本 我明白了: g++ (GCC) 10.2.1 20210130(红帽 10.2...

回答 4 投票 0

在 linux 22.04 中找不到 GLIBCXX 3.4.29 [已关闭]

跑步 字符串 /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX 在我的终端中向我展示了这个: 输出: GLIBCXX_3.4 到 GLIBCXX_3.4.32 GLIBCXX_可调参数 GLIBCXX_DEBUG_MESSAGE_LENGTH 当我...

回答 1 投票 0

在 Linux 中找不到 GLIBCXX 3.4.29

跑步 字符串 /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX 在我的终端中向我展示了这个: 输出: GLIBCXX_3.4 GLIBCXX_3.4.1 GLIBCXX_3.4.2 GLIBCXX_3.4.3 GLIBCXX_3.4.4 GLIBCXX_3.4.5 GLI...

回答 1 投票 0

是否可以在不依赖编译器内置函数的情况下实现 is_trivially_constructible 的库实现?

我使用的是 gcc-4.9,它没有 is_trivially_constructible 类型特征。查看 libstdc++ 源代码(type_traits),这取决于实现的 __is_trivially_constructible...

回答 1 投票 0

生成可执行文件时是否同时使用libstdc++.a和libstdc++.so?

如果我选择这样做: gcc my.cpp -lstdc++ 它与 libstdc++.so 链接,对吧?但是代码中有一些 C/C++ 初始化部分(全局/静态变量/对象、atexit() 函数等),似乎它们

回答 2 投票 0

GCC 中 -static 和 -static-libstdc++ 的区别

-static 还向最终二进制输出添加了哪些 -static-libstdc++ 未添加的内容? 我检查了这个问题的优秀答案,但它没有解决这个特定的问题......

回答 1 投票 0

cmake 找不到 libstdc++

(使用elementaryOS/Ubuntu) 我正在交叉编译 x265 并且我鼓励了恼人的问题。由于某种原因,cmake 不想接受 -static-libstdc++,因为 ld 显然无法找到它。 ...

回答 1 投票 0

为什么我不能在 MinGW 12.2.0 和 C++11 上使用 std::atanf?

从规范https://en.cppreference.com/w/cpp/numeric/math/atan来看,C++11上似乎存在std::atanf,但在godbolt上它说“atanf”不是成员“标准”的: #包括 #包括 从规范https://en.cppreference.com/w/cpp/numeric/math/atan来看,似乎std::atanf存在于C++11上,但在godbolt上它说“atanf”不是“std”成员: #include <iostream> #include <cmath> int main() { float sampleOverLoaded = 200.0f; float outputAtan = atanf(sampleOverLoaded); float outputAtanStd = std::atanf(sampleOverLoaded); std::cout << outputAtan << std::endl; std::cout << outputAtanStd << std::endl; } 怎么了?请注意,我不想使用 atanhf。 这是一个长期存在的错误,已于 2023 年 11 月得到解决。请参阅 GCC Bug 79700 - std::fabsf 和 std::fabsl 中缺少 <cmath> 。 std::atanf 位于 C++11 标准中,但在过去 12 年左右的时间里没有人愿意添加它。有些人还认为它不应该存在(请参阅链接的错误以获取更多讨论)。 暂时使用std::atan。 这是一个重载函数,接受 float、double 和 long double: float atan ( float num ); double atan ( double num ); long double atan ( long double num ); // (until C++23) /* floating-point-type */ atan ( /* floating-point-type */ num ); // (since C++23)

回答 1 投票 0

libstdc++.so.6:找不到版本“GLIBCXX_3.4.20”

为了将 > 2GB 的原始读数上传到 Genebank 上的 SRA,我在 ubuntu 16.04 上安装了 aspera connect 插件。但按照基因库 SRA 门户上的说明,该插件并未弹出。 我...

回答 6 投票 0

什么是libc++和libstdc++

我有几个问题。 1)什么是 libc++ 和 libstdc++ ? 2)它们之间有什么区别? 3)它们可以互换吗? 4)这是编译器应该实现的东西吗? 5) 当...

回答 2 投票 0

std::format for std::wstring GCC 的自定义格式化程序

我正在尝试为 std::format 制作一个格式化程序,它将采用 std::wstring 并将其格式化为 std::string 。我的想法是用“?”替换所有不可转换的字符。 #包括 我正在尝试为 std::format 制作一个格式化程序,它将需要 std::wstring 并将其格式化为 std::string。我的想法是用“?”替换所有不可转换的字符。 #include <format> #include <string> #include <iostream> template<> struct std::formatter<std::wstring> : public std::formatter<std::string> { template<typename ParsContext> constexpr auto parse(ParsContext& ctx) { return std::begin(ctx); } template<typename FormatContext> auto format(const std::wstring &obj, FormatContext &ctx) const { std::string result{}; for(const auto & wch : obj){ if(wch < 0x80){ std::format_to(std::back_inserter(result), "{}", static_cast<char>(wch)); }else{ std::format_to(std::back_inserter(result), "?"); } } return std::formatter<std::string>::format(result, ctx); } }; int main(){ std::wstring test{L"Hello wide world.こんにちは、안녕하세요!\n"}; std::cout << std::format("{}", test); } 导致以下编译器错误:(小样本,编译器资源管理器中出现完整错误) /opt/compiler-explorer/gcc-13.2.0/include/c++/13.2.0/format:3029:19:错误:没有匹配的函数用于调用“std::basic_string_view::basic_string_view()” 3029 | 3029 _M_set(_Td{__v.data(), __v.size()}); /opt/compiler-explorer/gcc-13.2.0/include/c++/13.2.0/string_view:146:7: 注意:候选者:'constexpr std::basic_string_view<_CharT, _Traits>::basic_string_view(const _CharT*, size_type) [with _CharT = 字符; _Traits = std::char_traits; size_type = 长无符号整数]' 146 | 146 basic_string_view(const _CharT* __str, size_type __len) noexcept | ^~~~~~~~~~~~~~~~~ /opt/compiler-explorer/gcc-13.2.0/include/c++/13.2.0/string_view:146:39:注意:参数 1 没有从“wchar_t*”到“const char*”的已知转换 146 | 146 basic_string_view(const _CharT* __str, size_type __len) noexcept 将 libc++ 与 clang 结合使用,它可以工作 将 Clang 与 libc++ 结合使用 如有任何帮助,我们将不胜感激。 GCC/Clang libstd++ 失败 这是一个 libstdc++ 的错误(PR 112607),已在 GCC-trunk 中修复。

回答 1 投票 0

我如何知道每个 gcc 版本附带的 libstdc++ 版本?

我如何知道每个 gcc 版本附带的 libstdc++ 版本?有没有一种简单的方法可以获取此信息而无需安装 gcc?

回答 2 投票 0

什么时候需要使用标志 -stdlib=libstdc++?

使用gcc编译时,什么时候编译器和链接器需要使用-stdlib=libstdc++标志? 编译器会自动使用libstdc++吗? 我在 Ubuntu 13.1 上使用 gcc4.8.2...

回答 3 投票 0

使用带有-static链接标志的condition_variable的c++分段错误

我在 ARMv8-A 上运行的 Raspberry Pi 4 中使用 g++ 编译并链接了这个简单的程序。 编译器:g++ -Wall -O0 -g3 -std=c++11 -c Main.cpp 链接器: g++ -static -o "bugTest.elf" ./M...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.