问题标签 [gcc3]
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.
c++ - 向量GCC 3.4.3 中的 ::push_back 错误?
以下代码对我使用 GCC 为 ARM 构建时崩溃:
我的编译器是:arm_v5t_le-gcc (GCC) 3.4.3 (MontaVista 3.4.3-25.0.30.0501131 2005-07-23)
. 为调试而构建时不会发生崩溃,但会在优化设置为 -O2 时发生。
是的, foo 函数是重现问题所必需的。起初这很令人困惑,但我发现只有在 push_back 调用未内联时才会发生崩溃。如果 GCC 注意到 push_back 方法被多次调用,它不会在每个位置内联它。例如,我还可以通过在 main 中调用 push_back 两次来重现崩溃。如果您将 foo 设为静态,则 gcc 可以判断它永远不会被调用并对其进行优化,从而导致 push_back 内联到 main 中,从而导致崩溃不会发生。
我已经在 x86 上使用 gcc 4.3.3 进行了尝试,看来该版本的问题已解决。
所以,我的问题是:
有没有其他人遇到过这个?也许我可以传入一些编译器标志来防止它。
这是 gcc 代码生成的错误,还是 stl 实现(bits/stl_bvector.h)中的错误?(我计划有时间自己测试一下)
如果是编译器的问题,是升级到 4.3.3 来修复它,还是从 arm 切换到 x86?
顺便说一句,大多数其他vector<bool>
方法似乎都有效。是的,我知道使用vector<bool>
并不是世界上最好的选择。
c++ - 无法将流代码与 gcc 链接
我在编译以下代码时遇到问题:
编译:
编译给出了一些警告:
生成的二进制文件似乎可以执行:
输出文件已创建但为空!?!
我将非常感谢有关问题可能是什么的任何指示。
c++ - C:分析 .obj 文件的实用程序,以精确字节测量某些函数的大小?
我需要查找几个 C 函数的确切字节大小。任何能够分析由 gcc 编译器生成的 .obj 文件的实用程序的任何推荐?
c++ - 隐藏符号时dynamic_cast失败
我有很多静态库。一个是 static_lib_a.a。我创建了一个动态库 dynamic_lib.so 来将它们放在一起。
在 static_lib_a.a 中,它使用 xerces 3.1.1 来解析 xml。以下是static_lib_a.a中的代码片段
pNode 的类型是 xerces::DOMNode。它被分配给 xerces::DOMElement 的对象。这行代码将进行向下转换。
为了隐藏dynamic_lib.so中static_lib_a.a的所有符号,我使用-fvisibility=hidden来构建这个静态库。我发现如果我添加 - fvisibility=hidden, pElementNode 将在运行时返回一个 NULL 指针。
gcc 编译器的版本是 3.4.4。
以前有没有人有类似的问题?
c - 关于ubuntu gcc编译器的问题
我为 ubuntu x86_64 安装了 build-essential 包,编译 c 程序和 c++ 程序工作正常,但在编译的二进制文件中,出现“Ubuntu linaro”。有没有办法删除这个?
c++ - gcc-3 二进制文件是否与 gcc-4 兼容
我有一个使用 gcc 3.4.3 编译的静态库。我想在现在将使用 gcc-4 编译的代码中使用它。我模糊地读到 gcc-3 和 gcc-4 二进制文件不兼容,并且需要重新编译该库,但只想确认这一点。反正 gcc-3 库不能与 gcc-4 一起使用吗?
c++ - 使用 boost 1.36 和 C++ 的 RHEL4 版本问题
我正在努力解决一个仅在我的 RHEL4 发布版本中看到的神秘问题。我的一些单元测试(使用 boost 1.36 单元测试框架)在 RHEL4(gcc 3.4.6)上失败并使用发布构建类型。我没有看到使用 RHEL5 版本或调试构建类型(gcc 4.1.2、boost-1.39)的问题;我也没有在 Windows 32 位或 64 位上使用 Visual Studio 2005(使用 boost-1.36)或 2008(使用 boost-1.39)看到它。
怀疑这可能是由于一些微妙的内存问题,我继续在测试应用程序上运行 valgrind(保留问题的最小案例)。这是我使用“完整,不可访问”模式运行 valgrind 时得到的结果:
当然,我在调试模式下运行了它(尽管正如我提到的,错误只发生在发布模式下)。如果我在发布模式下运行 valgrind,我会得到相同的输出(可能包含较少的细节,例如 line #s)。由此看来,问题出在 boost-1.36 中,或者可能是我对 init_unit_test_suite 的定义?显然,我可以尝试的一件事是在所有平台上使用 boost-1.39 运行;但不幸的是,我们目前正在使用 RHEL4 和 VS2005 的 boost-1.36,所以这可能还不实用。
我还观察到,在测试失败的地方强制某个记录器输出到控制台,使测试能够通过(不好,我知道)!怀疑这可能是因为我评论了所有记录器输出并运行了 valgrind - 这就是上面发布的内容。如果您需要一些 init_unit_test_suite 函数的代码片段;如果有帮助,我可以发布。欢迎并非常感谢任何解决此问题的想法。
2011 年 5 月 26 日编辑:
这是 init_unit_test_suite - 如果有人可以看一下,不胜感激。
linux - 从 2.9x 升级 GCC
我一直在尝试在我的 PS2 Linux 机器 (mips) 上从 2.95.2 升级编译器,我的脑袋快要爆炸了。我不会声称我擅长 linux。
我先回顾一下我已经完成的过程。
gcc 3.3.1下载、配置、安装
这编译了大约一个小时,然后给出了一个错误,部分错误。
经过一番谷歌搜索,这似乎表明我的 binutils 需要升级。
binutils 2.13.2下载安装
这个编译/安装没问题。
gcc 3.3.1回到尝试编译 gcc3 并且我知道在配置期间出现错误。
我现在连一个简单的 helloworld.cpp 程序都无法编译
任何想法是什么问题 -mwarm-short-loop 在谷歌中返回零,这是不寻常的。或者是否有一些我错过的升级 gcc 的特定内容。
c - 是否可以使用 GCC 3.4 模拟 -Werror 选项行为?
是否有希望强制 GCC 3.4 编译器将所有警告变成像 GCC 的 4.4 -Werror 选项那样的错误?
谢谢