问题标签 [gcc4.8]

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 投票
0 回答
120 浏览

c++ - Gnu C++ 4.8 thread_local 实现背后的机制是什么,确切的“运行时惩罚”是什么?

gcc 4.8.0 添加了 thread_local来自 C++11 标准的实现。更改状态可能存在“运行时惩罚” :

G++ 现在实现了 C++11thread_local关键字;[...]不幸的是,这种支持需要对在不同翻译单元中定义的非函数局部thread_local变量的引用进行运行时惩罚,即使它们不需要动态初始化,[...]。

如果程序员可以确定在非定义 TU 中没有使用变量需要触发动态初始化(或者因为变量是静态初始化的,或者在定义 TU 中的变量的使用将在另一个使用之前执行) TU),他们可以使用 -fno-extern-tls-init 选项避免这种开销。

谁能向我解释 G++ 对thread_local全局变量的作用?

  • 一般机制是什么?
  • 是什么导致了开销?
  • 每次访问涉及多少开销?指针间接?昂贵的锁?
  • 究竟在什么情况下没有开销?

从更改说明中,我假设例如这不会产生开销:

因为data在同一个翻译单元?

worker如果并且data在不同的翻译单元中,这将如何变化?这是一个例子吗?

现在使用datainworker会产生开销吗?还是这样,即使它是start开始的worker

0 投票
5 回答
21160 浏览

gcc - 在 windows 7 x64 中安装和使用 GCC

我是 GCC 的新手,对此了解不多。我想将它安装在我的 Windows 7 64 位 PC 上,并将其用于 C、C++ 和 Java。最新版本是 GCC-4.8.0。在他们的镜像链接中,我可以选择下载gcc 4.8.0.tar.bz2gcc 4.8.0.tar.gzmd5.sum。请指导我,我应该如何继续使用 GCC

0 投票
1 回答
806 浏览

build - 构建 gcc-4.8

我正在尝试在 64 位 Fedora 17 服务器上编译 gcc/g++ 4.8。我正在配置构建过程

然后我运行make。构建块会持续一段时间,然后在找不到 crti.o 时失败。我注意到失败之前的编译步骤使用 -m32 选项,这意味着正在为 32 位架构执行编译。当我搜索 crti.o 时,我在 /usr/lib64 路径中找到它,而不是在 /usr/lib 路径中,它通常用于 32 位。我只想编译 64 位,这就是为什么我在配置中包含了 with-cpu 参数。显然,这还不够。

我需要在配置中包含哪些参数,以便仅对源代码进行 64 位编译,并且仅链接 64 位系统库和类似文件?

0 投票
1 回答
8781 浏览

c++ - __int128 error when compiling 32 bit

When I'm compiling a 32 bit program, the above is the error I get. I'm using http://sourceforge.net/projects/mingwbuilds/

Why? My code compiled fine with 4.7.2 but I wanted to update to 4.8 for the bug fixes and it gets rid of the 0 used as null value for pointer warnings when there are no zeros.

Many of the bug fixes I want. It compiles my x64 ones just fine on Windows.

Is there a way to get it to compile x32 applications?

0 投票
1 回答
133 浏览

gcc4.8 - “make check”找不到已安装的共享库

安装 gcc 4.8,我使用推荐的基础设施库来减少可能的问题。

使用默认设置构建并安装 gmp--> 共享库到 /usr/local/lib 构建 isl,但 make check 找不到已安装的 gmp 共享库。无论如何安装了isl,共享库去了/usr/local/lib。构建了 clog,但 make check 也找不到安装的 isl 或 gmp 共享库

所以我进入 cloog-0.18.0/.libs/ 并建立了到 /usr/local/lib/libisl.so.10.1.1 和 libgmp.so.3 的软链接并重新运行 make check 没有任何失败。

这些是从 gcc ftp 服务器下载的推荐基础结构 tarball,并使用默认配置构建和安装。为什么“make check”可能找不到它刚刚安装的共享库?

应该补充:这是一个新的 Ubuntu 安装

0 投票
5 回答
4554 浏览

c++ - 从优先级队列中获取 unique_ptr

我正在维护一组unique_ptr实例priority_queue。在某些时候,我想获取第一个元素并将其从队列中删除。但是,这总是会产生编译器错误。请参阅下面的示例代码。

这会产生以下编译器错误(gcc 4.8.0):

更改要queue此问题中使用的代码可以解决问题,并且代码编译得很好。

有没有办法将unique_ptrs 保留在 a 中,priority_queue或者我错过了什么?

0 投票
3 回答
1310 浏览

macos - QT Creator 添加 -Xarch

我正在使用带有旧 GCC 的 QT Creator,现在我更新到 4.8 版本。但是 QT Creator 添加了 -Xarch_x86_64 选项,GCC 4.8 告诉我

有没有办法删除这个选项?我试着用

但到目前为止,什么都没有发生。

注意:我使用的是最新的 QT Creator 版本,使用 Port 下载了 GCC,并且我更改了套件上的编译器。

问候

0 投票
1 回答
1623 浏览

gcc - 在 Debian、libc6 上升级到 gcc-4.8 后 g++ 链接器错误

我刚刚对 Debian Weezy 机器进行了 dist 升级,以便从 gcc-4.7 运行 gcc-4.8。以前的构建环境是健全的,并且可以正常编译。现在它给出了以下链接器错误,任何程序(甚至是一个微不足道的 hello world):

我确定这是与 libc6 相关的简单事情,但我看不到什么?看到这个错误我很惊讶,因为我假设 dpkg 会处理任何依赖项,所以我不确定这个特定系统是否有问题或 debian 包有问题(这似乎不太可能,因为似乎没有其他人有这个问题!)

有任何想法吗?:)

0 投票
0 回答
4489 浏览

loops - GCC Graphite - 4.8 循环优化

我正在开发一个 C++ 模拟框架。在当前版本中,我发现了两个瓶颈。第一个是随机数生成,第二个(引发这个问题)是使用高度迭代的过程(heavy for loops)。

你们中的一些人可以给我关于 gcc 4.8 关于循环优化的反馈吗?

我已经阅读了一些关于这个主题的可用文献,但是,也许你可以对我说得更清楚(用更简单的词),我可以从这个早期版本中得到什么。

一个叫什么loop normalization,例如......或者它与多核架构有什么关系......

此外,优化选项的背后是什么:

-ftree-loop-optimize 在树上执行循环优化。默认情况下,此标志在 -O 或更高版本中启用。

-ftree-loop-linear 在树上执行循环交换转换。与 -floop-interchange 相同。要使用此代码转换,GCC 必须配置 --with-ppl 和 --with-cloog 以启用 Graphite 循环转换基础结构。

-floop-interchange 对循环执行循环交换转换。交换两个嵌套循环会切换内部和外部循环。

那里有任何代码优化和/或编译器专家吗?非常感谢。

注意:我目前在 Debian 4.7.2、gcc 4.7 下工作

0 投票
2 回答
2245 浏览

c++11 - 使用thread_local时gcc 4.8.1中的内存泄漏?

Valgrind 在以下代码中报告泄漏的块,显然每个线程一个:

编译器版本:

GCC 构建选项:

程序编译选项:

valgrind 版本:

Valgrind 选项:

valgrind 输出的尾部:

构造函数和析构函数为每个线程运行一次:

笔记:

  • 如果更改创建的线程数,则泄漏块数与线程数匹配。
  • 如果 GCC 是这样实现的,那么代码的结构可能允许资源重用(即泄露的块)。
  • 从 valgrind 堆栈跟踪中,thread_local.cc:34 是以下行:thread_local Foo foo;
  • 由于 sleep_for() 调用,程序运行大约需要 10 秒左右。

知道这个内存泄漏是在 GCC 中,是我的配置选项的结果,还是我的程序中的一些错误?