问题标签 [gcc7]
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++ - flto 与 gcc7.2 崩溃
我在以下代码文件中遇到了 getline 崩溃。我构建了 gcc7.2,因为系统更新不可用。
最小的例子:
在以下几行中,GCC_INSTALL_DIR 表示我自己的 gcc 安装的目录输出:
链接库:
libc 版本:
gcc7.2的配置选项
编译命令行:
Valgrind 输出:
我们必须使用_GLIBCXX_USE_CXX11_ABI=0
,因为我们与旧库交互。
删除flto
或_GLIBCXX_USE_CXX11_ABI=0
更改-std=c++17
for-std=c++14
可解决崩溃问题。
这是 gcc-7.2 的错误还是我错过了什么?我应该向 gcc 提交错误报告吗?
我宁愿避免禁用flto
或c++17
编辑:gcc7.2 中存在的错误:https ://gcc.gnu.org/bugzilla/show_bug.cgi?id=82172
c++ - 使用 Nbody 测试对 GCC 7 与 VS2017 进行基准测试
代码取自Computer Benchmarks Game并粘贴在下面。
我修改为使用 SSE2 而不是 SSE3,因为 MSVC 不支持 SSE2。特别是,我将头文件“immintrin.h”替换为“emmintrin.h”
然后我发现代码使用了 SSE 算术的 GCC 扩展,所以我在 MSVC 版本中用 __mm_[add/sub/mul/div]_pd 替换了 +-*/。即从
至
我使用编译了 GCC(mingw-w64) 版本
和 VS2017 cli args 看起来像这样
我还在链接器选项中打开了 /LTCG。然后,我在 i7-4720HQ、12G 笔记本电脑上运行这两个版本 100,000,000 次。
GCC 版本在 7500ms 到 8500ms 之间波动,而 VS 版本持续超过 10,000ms,平均在 12,000+ms。
在深入拆卸之前,对这种性能差异有什么合理的解释吗?
gcc - 将 yaml-cpp 0.5.x 库与 g++ 7.1.0 链接
我正在尝试使用带有 g++ 7.1.0 的 yaml-cpp 0.5.3 编译一个相对简单的程序,并且出现链接器错误。最小的程序代码是:
这段代码在 g++ 4.9.0 下编译和链接很好,但在 g++ 7.1.0 下我得到了错误
我在这种情况下使用的编译命令是g++ tyaml.cpp -lyaml-cpp -o tyaml
. 我可以确认库的路径没有问题——LIBRARY_PATH
包含 libyaml-cpp.a 的正确路径,并且 g++ 4.9.0 使用相同的路径编译它。更完整的代码使用更多的 yaml-cpp,并且只有需要 std::string 的函数才会导致问题。
libyaml-cpp.a 是使用 g++ 7.1.0 编译的,所以我认为这不是库本身的问题。我已确认该库包含YAML::LoadFile
符号,并采用类型std::string const &
我无法在我正在使用的系统上继续使用旧版本的 g++。
我已经尝试过 yaml-cpp 0.5.1 和 yaml-cpp 0.5.3,都遇到了同样的问题。我怀疑这是 std::string 以某种方式实现的问题。
macos - 带有 -mavx 标志的链接器错误 GCC7
使用 gcc7 或 clang 从 Intel 的 AVX 扩展编译 256 位矢量数据类型 (__m256d) 失败。我能够编译和使用 128 位向量(没有 -mavx 标志)。但是,一旦我尝试使用 avx 向量,要么找不到一些汇编程序命令定义(GCC7),要么存在链接器错误(clang)。我使用 port 来安装所有编译器或软件包。
该程序:
使用 gcc7:
用clang我得到一个链接器错误:
铛:
GCC7:
我的笔记本电脑 CPU:2,8 GHz Intel Core i7(应该支持 AVX),Mac OS Sierra 10.12.5
我还用端口(ld64-latest 274.2)更新了我的链接器,并安装并激活了 mp-clang-4.0。有任何想法吗?
c++ - `std::mem_fn` 如何在 gcc 7.1.0 中检测 noexceptness
使用 gcc 7.1.0std::mem_fn
能够检测成员函数指针上的 noexcept-ness。它是如何做到的?我认为说明noexcept
符不是函数类型的一部分?
更令人困惑的是,当我从https://wandbox.org/permlink/JUI3rsLjKRoPArAl中删除一种方法的 noexcept 说明符时,所有 noexcept 值都会发生变化,如此处所示https://wandbox.org/permlink/yBJ0R4PxzAXg09ef。当一个是 noexcept 时,所有都是 noexcept。如何?这是一个错误吗?
cmake - 解决 cmake 错误
我经常遇到这个问题:
如您所见,我正在使用GNU 7.2.1
编译器。尤其是:
我不确定我正在运行 7.2.x 是否是问题所在。是否有一种解决方法可以让cmake
您了解已安装 C 编译器?
编辑
当我尝试强制编译器设置时,出现以下错误:
gcc7 - 构建 FIX 8 时出错
使用 gcc 7.1
使用此 ./configure 构建 FIX8 时
当我运行 make 我得到这些错误(这很奇怪,因为我告诉它不要构建测试!)
我已经确认构建也失败了
我刚刚验证它确实可以编译
它也可以编译
请指教。
c++ - 即使启用了 Wextra,gcc 也不会给出比较无符号整数 < 0 的警告
取下面的代码
where 函数f
显然总是返回 0。用它编译它g++-7.2.0 -Wall -Wextra
不会提示毫无意义的比较。然而,clang 很好地警告我们:
为什么会这样(我认为模板是问题的根源)并且gcc
在这种情况下可以强制输出警告?
c++ - c++1z动态异常规范错误
我正在尝试使用新的 GCC 版本 7.2.1 编译我的项目,但动态异常规范存在问题:
问题是这些错误来自我无法控制的第三方库。
有什么办法可以解决吗?据我所知,我不能告诉编译器用警告替换错误。使用--std=c++14
不是一个选项,因为我想使用 C++1z 的新功能。