问题标签 [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.
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
代码是:
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?
c - “__G”是什么意思?
__G
在 C 中表示什么?
我正在使用 GCC 4.9。
我正在使用最新的 MinGW 版本。
我正在用-std=gnu11
.
我有以下 C(使用 GCC 编译为 C11)代码:
它编译得很好。
但是现在,在使用最新的 MinGW 进行编译时,我得到以下信息:
MinGW64 下的 GCC 似乎正在使用 `__G 做某事。
我在任何标题中都找不到它。
macos - 调试器设置:codeblock osx
- 我在 OSX 10.9.2 (Mavericks) 上安装了 CodeBlocks 13.12 (CodeBlocks-13.12-mac)。
- 我正在使用 gcc 4.9 并安装了 gdb (7.7.1)。
- 我能够成功地构建和运行简单的程序。
但是当我尝试“调试”(例如,“运行到光标”)时,我得到以下输出:
[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 完成我已经尝试了多个版本的 gdb(例如,7.6.2),结果相同。
一个问题似乎是我没有正确设置“设置/环境/常规/设置以启动终端”。
我已经在具有 gcc 4.2.1 和 gdb 7.7.1 的 UBUNTU 虚拟机 (12.04) 上成功安装了 C::B (svn 9817)。调试器似乎在 UBUNTU VM 上运行良好。
你能帮我看看我的 OSX 版本的 C::B 吗?
跳过
gcc - gcc 4.9.x 是稳定版吗?
胡,我对只读模式感到惊讶......
无论如何,我知道许多程序使用奇偶版本编号,例如 linux kernel 2.x。
[主要版本].[主要修订].[次要修订]
如果重大修订是奇怪的,它是不稳定的版本。
但是在wikipedia page中,它说 gcc 4.9.0 是稳定版本。
gcc 不使用该版本编号吗?但我听说 gcc 4.7 有很多错误,所以我不能确定..
c++ - 在模板别名中解包参数包
我遇到了将可变参数模板解压缩为模板别名的问题。
以下代码适用于 Clang 3.4 和 GCC 4.8,但适用于 GCC 4.9:
GCC 4.9 抱怨:
存在一个归档的 GCC 错误(#59498),但这应该失败吗?以下是C++ 核心语言问题 #1430 的一些上下文,“将扩展打包到固定别名模板参数列表中”:
最初,包扩展无法扩展为固定长度的模板参数列表,但在 N2555 中进行了更改。这适用于大多数模板,但会导致别名模板出现问题。
在大多数情况下,别名模板是透明的;当它在模板中使用时,我们可以替换依赖的模板参数。但是,如果模板 ID 对非可变参数使用包扩展,这将不起作用。例如:
没有办法用 来表示
A<Ts...>
,S
所以我们需要坚持A
直到我们有T
s 可以替换,因此需要在 mangling 中处理。目前,EDG 和 Clang 拒绝了这个测试用例,抱怨 A 的模板参数太少。G++ 也是如此,但我认为这是一个错误。然而,在 ABI 名单上,John Spicer 认为它应该被拒绝。
gcc - 无法安装 GCC-4.9.0
我正在尝试在本地安装 gcc-4.9.0。我给出了以下命令来配置安装
它配置时没有给出任何错误,然后当我这样做时make install
,我收到以下错误
谁能帮我解决这个问题?
机器运行RHEL 4,linux内核为2.6.9-67.ELsmp
编辑:我在 config.log 文件中发现错误
编辑2:
我运行 make 并收到以下错误
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.
numpy - 导入 pymc 时无法导入名称 PyMCObjects
我已经安装了 pymc,现在我正在尝试将它导入我的代码中。然而,
首先,当我这样做时import pymc
,我收到了错误消息:
可以通过手动修复import numpy.core.multiarray
,但是当我再次尝试时import pymc
,我收到了另一条错误消息:
我四处搜索,类似问题的解决方案是:
- 如果这与安装有关
pymc
,请强制使用 32 位而不是 64 位。但是,此答案适用于 Windows 用户,并且我有 OS X 10.9 (Mavericks)。 - 在其他情况下,通常是由于循环依赖(例如,这里),我认为这里不是这种情况。
我的猜测是包装有问题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团队解决这个问题。
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 产生误报,但实际上没有数据竞争。