问题标签 [gcc4.9]

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

c++ - gcc 是否支持 set_value_at_thread_exit()?

这是我在这里的第一篇文章,所以请宽容:)

我遇到了来自 promise 类(c++11 的一部分)的 set_value_at_thread_exit() 方法的问题。在 VS2013 中一切正常,但 GCC 给了我以下错误消息:

我在 Ubuntu 14.04 上尝试过 GCC 4.8 和 4.9

代码是:

0 投票
1 回答
934 浏览

c++ - Run CMake with a different compiler than the system default

I am trying to build something that requires CMake, however when I try:

I get the error:

I have tried using CMAKE_CXX_COMPILER=c++11 and CMAKE_CXX_COMPILER=g++11 but those get errors too. Is this because I am using the wrong variable or because I don't have c++11 installed? What would be the fix for it?

0 投票
1 回答
97 浏览

c - “__G”是什么意思?

__G在 C 中表示什么?

我正在使用 GCC 4.9。

我正在使用最新的 MinGW 版本。

我正在用-std=gnu11.

我有以下 C(使用 GCC 编译为 C11)代码:

它编译得很好。

但是现在,在使用最新的 MinGW 进行编译时,我得到以下信息:

MinGW64 下的 GCC 似乎正在使用 `__G 做某事。

我在任何标题中都找不到它。

0 投票
0 回答
791 浏览

macos - 调试器设置:codeblock osx

  1. 我在 OSX 10.9.2 (Mavericks) 上安装了 CodeBlocks 13.12 (CodeBlocks-13.12-mac)。
  2. 我正在使用 gcc 4.9 并安装了 gdb (7.7.1)。
  3. 我能够成功地构建和运行简单的程序。
  4. 但是当我尝试“调试”(例如,“运行到光标”)时,我得到以下输出:

    [debug]命令行:/usr/local/Cellar/gdb/7.7.1/bin/gdb -nx -fullname -quiet -args /Users/skips/SkipsC++Code/DebugTutorial/bin/Debug/DebugTutorial [debug ]工作目录:/Users/skips/SkipsC++Code/DebugTutorial 启动调试器:/usr/local/Cellar/gdb/7.7.1/bin/gdb -nx -fullname -quiet -args /Users/skips/SkipsC++代码/DebugTutorial/bin/Debug/DebugTutorial

    完毕

    [debug]> set prompt >>>>>>cb_gdb:
    注册新类型: wxString
    注册新类型:STL String
    注册新类型:STL Vector
    设置断点

    无法启动控制台(osascript -e 'tell app "Terminal"' -e 'activate' -e 'do script ""' -e 'end tell' sleep 80007329)

    .
    .
    调试器名称和版本: GNU gdb (GDB) 7.7.1

    .
    .
    [debug]>>>>>>cb_gdb:
    [debug]> catch throw
    [debug]probe.c:59: internal-error: struct symtabs_and_lines parse_probes(char **, struct linespec_result *): Assertion `probe_ops != NULL'失败的。
    [debug]检测到 GDB 内部的问题,
    [debug]进一步调试可能证明不可靠。
    调试器以状态 1 完成

  5. 我已经尝试了多个版本的 gdb(例如,7.6.2),结果相同。

  6. 一个问题似乎是我没有正确设置“设置/环境/常规/设置以启动终端”。

  7. 我已经在具有 gcc 4.2.1 和 gdb 7.7.1 的 UBUNTU 虚拟机 (12.04) 上成功安装了 C::B (svn 9817)。调试器似乎在 UBUNTU VM 上运行良好。

你能帮我看看我的 OSX 版本的 C::B 吗?

跳过

0 投票
2 回答
2709 浏览

gcc - gcc 4.9.x 是稳定版吗?

胡,我对只读模式感到惊讶......

无论如何,我知道许多程序使用奇偶版本编号,例如 linux kernel 2.x。

[主要版本].[主要修订].[次要修订]

如果重大修订是奇怪的,它是不稳定的版本。

但是在wikipedia page中,它说 gcc 4.9.0 是稳定版本。

gcc 不使用该版本编号吗?但我听说 gcc 4.7 有很多错误,所以我不能确定..

0 投票
1 回答
1443 浏览

c++ - 在模板别名中解包参数包

我遇到了将可变参数模板解压缩为模板别名的问题。

以下代码适用于 Clang 3.4 和 GCC 4.8,但适用于 GCC 4.9:

GCC 4.9 抱怨:

存在一个归档的 GCC 错误(#59498),但这应该失败吗?以下是C++ 核心语言问题 #1430 的一些上下文,“将扩展打包到固定别名模板参数列表中”

最初,包扩展无法扩展为固定长度的模板参数列表,但在 N2555 中进行了更改。这适用于大多数模板,但会导致别名模板出现问题。

在大多数情况下,别名模板是透明的;当它在模板中使用时,我们可以替换依赖的模板参数。但是,如果模板 ID 对非可变参数使用包扩展,这将不起作用。例如:

没有办法用 来表示A<Ts...>S所以我们需要坚持A直到我们有Ts 可以替换,因此需要在 mangling 中处理。

目前,EDG 和 Clang 拒绝了这个测试用例,抱怨 A 的模板参数太少。G++ 也是如此,但我认为这是一个错误。然而,在 ABI 名单上,John Spicer 认为它应该被拒绝。

0 投票
2 回答
6014 浏览

gcc - 无法安装 GCC-4.9.0

我正在尝试在本地安装 gcc-4.9.0。我给出了以下命令来配置安装

它配置时没有给出任何错误,然后当我这样做时make install,我收到以下错误

谁能帮我解决这个问题?

机器运行RHEL 4,linux内核为2.6.9-67.ELsmp

编辑:我在 config.log 文件中发现错误

编辑2:

我运行 make 并收到以下错误

0 投票
1 回答
255 浏览

c++ - Template conversion function to const-reference

The following works fine (as one would expect):

But this is not so clear:

GCC 4.9 says error: conversion from ‘A’ to non-scalar type ‘X<int>’ requested whereas clang 3.4 has no problems with it. If you remove the const or the & from the conversion function or if you write X<int> const &x = a then GCC is happy, too.

So GCC only fails to find the conversion function if the target type is a const & to a template class and you request a conversion to a non-const & object of that class. Is this the correct behavior? I tried to read the standard but the overloading rules are quite confusing to me.

0 投票
0 回答
983 浏览

numpy - 导入 pymc 时无法导入名称 PyMCObjects

我已经安装了 pymc,现在我正在尝试将它导入我的代码中。然而,

首先,当我这样做时import pymc,我收到了错误消息:

可以通过手动修复import numpy.core.multiarray,但是当我再次尝试时import pymc,我收到了另一条错误消息:

我四处搜索,类似问题的解决方案是:

  1. 如果这与安装有关pymc,请强制使用 32 位而不是 64 位。但是,此答案适用于 Windows 用户,并且我有 OS X 10.9 (Mavericks)。
  2. 在其他情况下,通常是由于循环依赖(例如,这里),我认为这里不是这种情况。

我的猜测是包装有问题flib,但我不知道是什么。我将不胜感激有关此问题的任何答案/提示。提前致谢!

更新(2014 年 7 月 4 日) 谢谢,克里斯!我通过 dopymc使用 conda build重建了我conda install -c https://conda.binstar.org/tobeplugged pymc,现在当我这样做时import pymc,会出现一条不同的错误消息:

正如 Chris 所指出的(请参阅下面的评论),这里正在查看问题。问题似乎与gcc(4.9版)的版本有关。我将在今天晚些时候尝试gcc使用旧版本 (4.8.2) 重建我的版本,看看这是否能解决 OS X 10.9 (Mavericks) 的问题。否则,我相信人们也可以等待pymc团队解决这个问题。

0 投票
1 回答
1267 浏览

multithreading - GCC 4.9.1 ThreadSanitizer“好像通过睡眠同步”

我正在清理一个大型项目中的 ThreadSanitizer 警告。特别是在这种确切的情况下,有一个从文件生产者读取的衍生线程。然后有一个或多个解压线程作为线程池的一部分。最后,有一个线程实际上通过检索解压缩块来进行处理。这当然允许同时解压缩多个块。

项目通过原子 bool 和 同步的位置有很多usleep(),尤其包括这个。当然,这并不理想,这是分配给我的事情之一。

但只要表示互斥锁和锁,我看不出 ThreadSanitizer 会抱怨什么问题(除了与使用条件变量相比可能会降低效率)。

ThreadSanitizer 抱怨数据竞争“好像通过睡眠同步”,并提供了usleep()调用位置。我的问题是,当然通过睡眠进行同步并不理想,但只要尊重互斥锁,我就不会看到数据竞争。据我所知,互斥锁的工作方式,我相信它们受到尊重。

因此,我试图创建一组最小的复制步骤,以便准确识别 ThreadSanitizer 所抱怨的内容。

这是我想出的代码:

使用 GCC 4.9.1 编译的代码如第一条注释所示,我在执行结束时从 ThreadSanitizer 收到以下消息:

在所有线程都加入后,tsan 最终抱怨“好像通过睡眠同步”,这似乎是 lambda 的析构函数,特别是共享指针。由于这是 c++11 的一项功能,而且谷歌提供了大量证据表明 ThreadSanitizer 不太喜欢 C++11,我怀疑这本身并不是一场“真正的”比赛。

虽然......事实上,lambda 被用作线程的入口点......我想知道这是否是一个真正的竞赛,其中线程在 lamda 被销毁之前还没有完全退出?那将是编译器错误的领域,所以我不想进一步调查(范围蠕变等)。

所以我的问题(我知道它们有点开放,请帮我缩小范围?)

在这种情况下,为什么 ThreadSanitizer 不会在生产者、解压缩器和消费者中检测到“好像通过睡眠同步”的数据竞争?而且,是否有可能(并且您可以提供示例)将此代码修改为...

A) ...产生一个真正的数据竞争,它会发出一个不会“通常”导致崩溃的 ThreadSanitizer 警告(相关软件的当前生产版本似乎不会因为这种假定的数据竞争而崩溃)?

B) ...产生一个真正的数据竞赛,乍一看似乎不是数据竞赛,但知识和/或经验表明并非如此

C) ...从 ThreadSanitizer 产生误报,但实际上没有数据竞争。