问题标签 [gcc9]

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

gcc - 编译 GCC 9.2 时出错:libgotool.a:没有这样的文件

在 VM 上全新安装 Fedora 30(在下面 yum 获取 gcc 9.1,并尝试使用它来构建 gcc 9.2):

给出:

然而 libgotool.a 存在于 /home/mmalak/gcc-9.2.0/x86_64-pc-linux-gnu/libgo/libgotool.a

0 投票
1 回答
272 浏览

python - Tensorflow skylake-avx512 从源代码编译缺少 __cpu_model 符号

我正在用skylake-avx512从源代码编译tensorflow,如下所示,我的python是这样构建的:

TensorFlow 构建命令:

唯一的选项集是 XLA JIT,其他的都设置为“no”。我正在为 tensorflow v1.12.0-devel 使用 docker 映像,并且正在编译标签 v1.12.3。

为了完整性:

我正在使用 gcc-9、g++-9 和 ubuntu 16.04 进行编译。在此之前我已经修复了几个问题,但我无法弄清楚我在这里缺少什么。有人可以帮我解决这个丢失的符号吗?

0 投票
1 回答
272 浏览

c++ - 在 if constexpr 中使用带有参数包的概念时升级到 gcc 9 后的编译错误

我有一个代码在上下文中使用带有参数包的概念if constexpr。它曾经在 gcc 8 中编译和工作,但在 gcc 9 中中断:

GCC 9.2 产生的错误是:

请参阅此处的编译器资源管理器。您可以在 gcc 版本 8.3 和 9.2 之间切换以查看差异。

0 投票
1 回答
1849 浏览

c - address-of-packed-member:禁用特定功能?

我注意到每次访问打包结构的成员时都会引发此错误

  1. 如何专门为处理错位的功能禁用它?(safe_unaligned_val_16/32/64 - 通过像 memcpy 一样手动逐个字节地构造输出)
  2. 如果我将结构指针传递给函数,GCC 是否会进行一些优化?我注意到一些优化,比如当你有一个具有 4 个字节的原始类型的结构时,它只是将该值传递给一个 32 位寄存器,而函数不改变原始类型的值。如果你知道类似的东西,请详细说明这个^

谢谢,格雷格

0 投票
1 回答
163 浏览

c - uint32_t * uint32_t = uint64_t 向量乘法与 gcc

我正在尝试将uint32_t产生完整 64 位结果的uint64_t向量乘以 gcc 中的向量。我期望的结果是 gcc 发出一条VPMULUDQ指令。但是 gcc 作为代码输出的内容是对各个uint32_t源向量进行可怕的洗牌,然后是完整的 64*64=64 乘法。这是我尝试过的:

第一个屏蔽掉uint32_t向量中不需要的部分,希望 gcc 能优化掉 64*64=64 乘法中不需要的部分,然后看到屏蔽也毫无意义。没有这样的运气。

在这里,我尝试uint64_t从头开始创建一个仅包含使用过的部件集的矢量。再次 gcc 应该看到每个的前 32 位uint64_t是 0,而不是做一个完整的 64*64=64 乘法。相反,会发生大量提取和放回值,并且 64*64=64 相乘。

让我们通过将部分相乘来构建结果向量。也许 gcc 看到它可以VPMULUDQ用来实现这一点。不走运,它回落到 4 个IMUL操作码。

有没有办法告诉 gcc 我想要它做什么(32*32=64 乘法,一切都完美放置)?

注意:内联汇编或内在不是答案。手动编写操作码显然有效。但随后我将不得不为许多目标架构和功能集编写不同版本的代码。我希望 gcc 能够理解问题并从单个源代码中生成正确的解决方案。

0 投票
0 回答
308 浏览

c++ - 带有 std::__shared_ptr 的多定义链接器错误

语境

操作系统:Ubuntu 18.04

建造:CMake 3.10.2

编译器:gcc-9 (Ubuntu 9.2.1-17ubuntu1~18.04.1) 9.2.1 20191102

配置:x86_64,debug

行动

我升级到上述 gcc 版本并使用此编译器重新编译了所有第三方库和我的整个应用程序代码。所有库和应用程序都使用 编译-m64 -std=c++17,应用程序使用-stdc++fs

使用 GCC-8,一切都构建得很好,但是运行整个事情会导致 SEGFAULT at std::filesystem::current_path()after doing apt update, apt upgrade.

在此之前,整个应用程序已经成功运行。

错误

我收到后续的多个定义链接器错误(+ 一个未定义的引用错误)

更多上下文

COLLECT_GCC_OPTIONS 输出为:

备注:我有一个更大的静态库列表,它们链接到一个公共共享对象中。之后的任何 -l 选项-dl都由 CMake 附加,我不设置它们。

我已经做了什么

  • 当我从 GCC-8 升级时,我删除-lstdc++fs并替换了所有出现的#include <experimental/filesystem>with#include <filesystem>并更新了所有引用和命名空间用法
  • 我删除了所有第三方源、构建文件和部署输出并重新获取源并从头开始完全重建
  • 我清理了标头包含和源,删除了未使用的包含、定义和函数等 --> 没有效果
  • 我分析了链接器错误并进nlohmann::json入库并搜索了 std::shared_ptr<std::filesystem ...--> 没有发现
  • .o我分析了受列出的三个文件影响的源代码和它包含的代码。--> 没有 std::shared_ptr<std::filesystem ...找到
  • 我检查了所有隐式转换std::filesystem::...std::shared_ptr<...--​​>没有找到
  • 我浏览了我最近更改的所有文件以查找错误<>以及任何语法关键字-> 没有找到
  • 我在 SO 上浏览了许多关于多个定义错误的帖子,随后确保所有内容都是使用相同的编译器和选项构建的。-->Unsolved

短的

我无法解释为什么代码失败。

停!

我被困在这一点上。有没有人事先遇到过这样的问题?

我很感激有关如何追踪此问题的任何线索。

更新

按照 nm 的建议,我执行了nm -C extraction.cpp.o | grep _Dir

是的,弱符号...

更新 2

似乎是我使用的 GCC-9 的非官方发行版中的编译器错误。回到 GCC-8 并进行了一些修复,问题得到解决。


为了获得更好的 PHP 7.3 体验,您可以简单地将其升级到 Laravel 5.2。它适用于 PHP 7.3 环境。

0 投票
0 回答
1477 浏览

gcc - 在 Windows 上使用 MSYS2 安装 GCC 9.2.0

在安装 MSYS2 并更新所有软件包并使用安装 gcc 工具链之后pacman -Sy mingw-w64-x86_64-toolchain

在此处输入图像描述

如上图所示,我有 9.2.0 版本。但是当我运行gcc.exe --version它说 8.1.0

在此处输入图像描述

是什么原因造成的,如何更新到 9.2.0?我这样做的原因是https://sourceforge.net/p/mingw-w64/bugs/737/

0 投票
1 回答
550 浏览

gcc - GCC 是否有用于 AVX512 操作的内置函数?

我期待找到类似的功能

__builtin_ia32_fmaddps512

根据手册,在最近的 GCC 中启用 512 位 AVX512 寄存器的使用方式与使用 256 位 AVX2 寄存器的方式相同,但它们在 GCC 9.2 中不存在。这只是等待的问题,还是它们不存在的一些政策原因?

0 投票
1 回答
236 浏览

c++ - 使用 MINGW gcc 编译时,不会为 std::string 调用重载的 new 运算符

该程序(使用选项编译-std=c++17

当使用 Clang 或 MSVS 编译时,打印:

在堆上分配 4 个字节

在堆上分配 2016 个字节

但是,当使用 GCC(Windows 上 MSYS 提供的版本 9.2.0)编译时,它只打印:

在堆上分配 4 个字节

我知道 GCC/libc++ 中的短字符串优化,但是对于短字符串来说,2000 个字符不是太多了吗?这完全是 SSO 的问题吗?

0 投票
1 回答
127 浏览

c++ - GCC 原生矩阵运算库

我想知道标准 gcc/glibc/g++ 附带的任何本机矩阵操作库。安装。我看到有许多第三方库boost、armadillo 等提供了实现。

但我想知道较新的 gcc 9.2 版本是否有提供矩阵运算而不是使用第三方库的本机库。

谢谢