问题标签 [libstdc++]

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 回答
210 浏览

c++ - C++ STL 版本控制问题 + Boost

我一直在构建一个 C++ 库,我想将它作为单个 .so 文件分发给我的用户,并希望该 .so 文件在大多数情况下与发行版无关。因此,我一直在静态链接第 3 方库(但仍然动态链接到标准库)

现在它在 CentOS 6.2(64 位)上使用 g++ 构建良好,但在 CentOS 5.3 上构建时遇到问题。编译正常,但出现链接器错误:

我已经对错误进行了一些搜索,这似乎是标准库本身的版本控制问题。我的代码,或者更确切地说是 boost::thread 的代码,正在尝试调用 CentOS 5.3 中包含的标准库中不存在的新版本。

可以理解。所以我需要:

  • 静态链接到 C++ 标准库(我已经对此进行了一些研究,这对 64 位系统来说是一个巨大的痛苦。大多数 64 位系统中包含的 libstdc++.a 不是使用 -fPIC 构建的,而-fPIC 实际上是必须在 64 位系统上进行静态链接。我必须自己构建 libstdc++.a。呃...
  • 将 boost::timer 恢复为更兼容的版本。我主要将它用于便携式互斥锁,所以我不需要前沿的 boost::thread 功能。但这有其自身的问题:在 boost 网站上,他们在哪里记录了他们对标准库的依赖关系(以及哪些版本)。他们有记录吗?我好像找不到资料。另外,这是一个明智的选择吗?标准库还能给我带来哪些令人讨厌的惊喜?

鉴于我的目标(尽可能接近发行版不可知论者),您会推荐哪条路线?

0 投票
1 回答
248 浏览

c++ - 使用 mingw 初始化 libstdc++

我正在使用 mingw 开发一个 C++ 库。但是,一旦我执行通过 C++ 运行时的函数调用,我就会获得一个 sigsev(好吧,“访问冲突”正确,它是 Windows)。这让我觉得 C++ 结构的初始化没有运行。我想要以下任何一项:

1)关于为什么会发生这种情况的任何具体想法。否则:

2) 关于 libstdc++ 中的哪些函数应该执行以初始化运行时的任何提示。

提前感谢您的帮助。

0 投票
2 回答
3140 浏览

c++ - icpc C++11 与 gcc 标准库

我正在使用 icpc(非可选)并且我正在使用 -std=c++0x 进行编译,因此我可以使用lambas。

但是,当我这样做时,它会使用 gcc stdlib 创建 havok,其中一个支持另一个不支持的功能。

我试过定义

但这没有帮助。

因此,理想情况下,我要求的是能够将 c++0x 语言功能与 C++03 标准库一起使用。

海合会 4.6

国际刑事法院 12.1]

编辑错误示例:

0 投票
1 回答
2070 浏览

gcc - libstdc++ 依赖关系是如何确定的?

在 Linux 上,我在同一台机器上构建了两个二进制文件 A 和 B。我将它们带到另一台安装了稍旧的 libstdc++ 的机器上。当我在二进制 AI 上运行 ldd -v 时,得到:

当我在二进制 BI 上运行 ldd -v 时,得到:

请注意,未找到 GLIBCXX_3.4.15 的依赖项。这是有道理的,因为安装的 libstdc++ 只支持 GLIBCXX_3.4.10。

问题是:ldd 通过什么机制确定二进制 B 依赖于 GLIBCXX_3.4.15?更重要的是,我如何确定是什么代码导致了这种依赖关系?

0 投票
2 回答
138 浏览

c++ - 字符串问题

我目前正在调试一个相当大的程序。当我来到以下代码行时:

该程序的行为不正确。这里的 value 是一个指向结构的指针,该结构的成员名为 binary_string,类型为 std::string。当我在调试时到达这一行时,我看到:

这行代码执行后,value->binary_string为空!我什至将线路更改为

它仍然失败!

当我在调试时到达这条线时,我的程序正在使用大约 100 Mb 的内存,所以我认为这不是内存问题(尽管我正在运行 Valgrind 以验证这一点)。我正在使用 Ubuntu 11.10、g++-4.6 和 libstdc++6。

有没有人遇到过这样的事情?我不知道为什么我的琴弦不起作用!

谢谢,

山姆

编辑1:

值的类型是 NumberInst,定义如下:

编辑2:

看起来我已经缩小了搜索范围。在调试时,我尝试了一些打印命令:

在这种情况下,似乎 substr 无法正常工作。但是,当我在 main 函数中测试 substr 时,它似乎工作正常。

0 投票
1 回答
239 浏览

c++ - 非常基本的正则表达式场景与我对 libstdc++-v3 的预期不同

我得到的行为与我的预期不同(也与 Microsoft C++ 不同)。

考虑以下 test.cpp 文件:

在我的 Ubuntu Oneiric 机器上,注意我是如何编译程序的,并注意我从 a.out 得到的输出:

另一方面,在我的 Windows 机器上,使用 Visual Studio 2010 我已经:

我不是专家,但 Microsoft Visual Studio 似乎是正确的答案。这是一个非常基本的场景,所以我想知道发生了什么。我不敢相信这是一个错误,我不敢相信这是 MS 和 GNU 在如此基本的层面上的根本分歧。我怀疑我的配置或命令行中有什么东西。在安装默认的 Ubuntu 11.10 客户端和“apt-get install build-essentials”后,我得到了我的 g++ 编译器和头文件。

可能是我缺少的编译开关,或者是 MS 和 GNU 之间的根本分歧

0 投票
1 回答
2792 浏览

php - 加载使用 SWIG 制作的 php 扩展时未定义的符号

我正在尝试加载使用 SWIG 制作的 PHP 扩展,但在启动 PHP 时出现以下错误:

我尝试加载的扩展名已命名libtg.so并使用以下命令编译:

libtg_wrap.oSWIG 生成的包装器代码的目标文件在哪里。

缺少的符号__gxx_personality_v0在 中找到libstdc++.so,从以下命令可以看出:

libstdc++.so中引用libtg.so,从以下命令可以看出:

所以我不明白为什么它找不到符号。关于如何进一步调试的任何想法?

0 投票
2 回答
2506 浏览

gcc - 使用静态链接的 libstdc++ 创建共享库时失败

在 64 位 x86 机器上使用 gcc 4.5.1,我首先创建 ao 如下: g++ -fPIC -c a.cc -o ao

然后尝试创建 liba.so 如下: g++ -static-libstdc++ -shared -W1,-soname,liba.so -o liba.so.1.0.0 ao

但失败了,信息如下:relocation R_X86_64_32S against `vtable for __gnu_cxx::stdio_filebuf >' can not be used when making a shared object; 使用 -fPIC 重新编译

我尝试重新编译 libstdc++ 库,添加了 -fPIC,但它还是失败了

0 投票
2 回答
1082 浏览

gcc - GDB 错误消息 (GCC 4.7) (来自 macports)

当我启动 gdb 时,我有这样的消息:

看来我需要再次获取 libstdc++ 但如何使用 macports?

0 投票
1 回答
176 浏览

linux - 升级的构建机器(Debian),构建在服务器(CentOS)上不起作用

混合 C++/Free Pascal 程序,Linux。我曾经在 32 位 Debian 机器上构建它并在 64 位 CentOS 5.3 服务器机器上运行它,它运行良好。现在我已经将我的 Debian 盒子升级到了 6.0.3(Squeeze)。下一次重建后,程序不再在服务器主机上运行,​​而是打印以下内容:

现在,当我运行 时ls -l /usr/lib/libstdc++*,我注意到在开发盒上libstdc++.so.6是一个符号链接到libstdc++.so.6.0.13,而在主机上它是一个符号链接到 libstdc++.so.6.0.8. 那可能是罪魁祸首。

你能建议一个故障排除策略吗?我应该以某种方式将早期版本的 libstdc++ 放在开发盒上并尝试链接它,还是尝试升级产品盒?