问题标签 [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++ - 在 Ubuntu 15.10 上使用 g++-4.9 编译时出现运行时错误 [abi:cxx11]
我最近将 Ubuntu 从 15.04 更新到 15.10。这些版本之间的主要区别之一是默认 gcc 版本从 gcc-4.9 -> gcc-5 的更新。我正在开发的库是为 gcc-4.9 编写和编译的,并且依赖于仅在 gcc-4.9 中工作的其他库。
我已经在我的计算机上安装了 gcc-4.9,我可以成功编译库和我的源文件。但是,当我尝试运行生成的程序时,出现此错误:
源代码和我在这里尝试阅读的文件在升级之前可以正常工作。我曾尝试使用该-D_GLIBCXX_USE_CXX11_ABI=0
标志,但我不确定这是正确的做法,它也不起作用。
这是我当前包含在我的 makefile 中的标志的一个示例:
有什么想法可以帮助我吗?
c++ - 测量递增原子计数器和普通计数器的性能
我正在测试使用这样的程序增加原子变量比普通变量慢多少:
在我的笔记本电脑(4GB,Intel(R) Core(TM) i3-2328M CPU @ 2.20GHz)上,我平均获得了 2400 万个增量。
在更好的机器上(8 x Intel(R) Xeon(R) CPU E5-4610 v2 @ 2.30GHz,256 GB RAM)令我惊讶的是,尽管处理器要好得多,但我平均获得了 300 万个增量。
两台机器都有相同的操作系统(Fedora 21)。
我知道串行程序中的内核(或处理器)数量与性能的提高无关,但我将这些硬件信息仅作为对读者的提示。
gcc - gcc 4.9.3:更积极的 NULL 指针检查删除
我有以下代码摘录(从一个大项目中摘录),当使用 or 编译gcc 4.9.3
时-O2
,-O3
当它尝试在块 ( )s
内取消引用时它会崩溃,因为它是一个指针。if
s->someField
s
NULL
通过在 gdb 中反汇编这段代码,我注意到 null 检查实际上是由编译器优化的,这解释了崩溃。我google了一下,发现有一个选项-fno-delete-null-pointer-checks
可以解决这个问题,但是在我用这个选项编译代码后,它的行为是一样的。
这不会闯入gcc 4.7.2
。
另一个数据点是,如果我将代码更改为以下内容,它在gcc 4.9.3
. NULL
在 gdb 中,在这种情况下,检查似乎没有优化。
虽然我知道我可以更改代码以使其工作,但这是一个大项目,我无法在任何地方更改类似的情况,是否有一些其他编译器标志可以关闭编译器优化以进行空检查?
opencv - 这个时差的原因是什么?
我的代码有问题
在以下代码中:
GainDetailMatI
是Mat
9792*2448 矩阵的类型
ContrastGainBound4096x
,ContrastGainLayerI
是int
平台:Android 4.4,NDK gcc 4.9
A:
乙:
A 比 B 多使用 13 毫秒。我通过在 Application.mk
中设置来关闭 gcc 优化APP_OPTIM := debug
有没有人知道原因?
我认为也许max(0, GainDetailMatI - 4096.0)
返回类型MatExpr
并t=max(0, GainDetailMatI - 4096.0);
转换MatExpr
为Mat
也许这就是原因?
非常感谢!
regex - c++0x 正则表达式适用于 clang 但不适用于 gcc 4.9.2
我正在解析如下所示的多行文本记录:
我使用一些正则表达式从这些记录中提取数据。它们在使用 clang (MacOS X) 和 gcc 4.9.2 (Ubuntu) 编译时都可以工作。然而,其中一个regex_error
在使用 gcc 编译时会抛出一个。这是最小(非)工作示例:
我用https://myregextester.com测试了所有的正则表达式字符串,它们工作得很好。此外,在 MacOS 上使用 clang 编译的代码可以毫无问题地解析大量真实案例数据。但现在我必须在 Linux/gcc 系统上运行代码。
c++ - 使用 Eigen 的插件在第二次运行时崩溃
我正在编写一个由程序加载以添加功能的模块,我偶然发现了一个我无法理解的非常奇怪的崩溃。
首先,我使用 MSVS2015 在 Windows 中编译了完全相同的东西,它可以正常工作。但是,当我在 Unix(Solaris 10)上使用 GCC 4.9.3 编译它时,会话在第二次运行代码时崩溃,我已经设法将其范围缩小到或多或少确切地导致它崩溃的原因:复制 Eigen::MatrixXf 对象。
一个使它崩溃的非常简单的例子如下:
但是,不涉及复制矩阵的一切似乎都可以正常工作,当我构建一个非常简单的可执行程序时,我可以很好地复制数组。
我设法缩小了 Makefile 中的参数范围,但没有区别:
我真的不知道这可能是什么原因,所以我希望有人能够指出我正确的方向。我对 Unix 开发还很陌生,不确定调试它的最佳方法是什么,因此也很感谢那里的帮助。
值得注意的是,我必须自己构建 gcc 的版本,因为 Solaris 10 (x86) 没有官方二进制文件,但没有错误,除此之外它对所有内容都非常有效。
谢谢!
c++ - 寄存器、c++14 和 gcc 的编译错误
下面是我用 gcc 4.9 编译的带有标志 -std=c++1y 的代码:
我得到的错误是“为'(sp)'注册的预期显式地址”。但是,没有 c++1y 标志,我没有收到错误消息。我无法获得有关标志的任何信息来抑制显示此问题的此功能或 c++14 功能。请任何人分享您的想法以解决此问题。
node.js - npm 安装期间 libssh2 中的“C 编译器无法创建可执行文件”
在nodegit的 npm install 期间出现以下错误:
有人可以帮我弄这个吗?是因为权限问题导致 C 编译器无法创建可执行文件吗?
我的环境:
操作系统:centos-release-6-8.el6.centos.12.3.x86_64
海湾合作委员会:4.9.1
打开ssl:openssl-1.0.1e-48.el6.x86_64
libssh2:libssh2-1.4.2-2.el6_7.1.x86_64
节点:v4.4.7
npm:2.15.8
gcc -v
给出:
这是 /home/mhu/nodegit/vendor/libssh2 中 config.log 中给出错误的部分:
llvm - Clang++ --gcc-toolchain 和 gcc 4.9.3 链接问题
(Ubuntu 16.04.1)
默认情况下,16.04.1 clang 正在为 5.4 选择 gcc 工具链。不幸的是,我有一个需要5.0 之前的 ABI的库,我无法访问源代码,实施者也没有发布新版本。我一直在尝试使用 --gcc-toolchain 选项,但我无法让它工作。(ctrbegin.o 和 crtend.o 在链接处没有得到正确的前缀。)
当我尝试指定 --gcc-toolchain 时,clang 似乎接受了,然后完全忽略了该值。(16.04.1 上的 clang++-3.5 也会发生同样的事情。)
这是正确的语法吗?请注意,输出中缺少库目录。
我已经尝试了上述主题的许多变体。(4.9,删除相对路径等)我尝试了 -isystem 选项和 -cxx-isystem 选项。(两者都建议作为类似问题的解决方案。)
我错过了什么? (我希望它很简单,并且按顺序敲打头!)
c++ - 与 dylib ld 的静态链接:找不到 -lcrt0.o collect2 的库:错误:ld 返回 1 个退出状态
我正在使用 gnu49 compile 编译一个 qt5 c++ 项目,同时在 Mac OSX El Captitan 上使用 c++11 标志和通常的 qt 框架标志链接一些其他 dylib(犰狳、boost 库等)。该项目编译良好,但为了使其在其他几台机器上更具可移植性,我试图静态链接几个动态库。我在(要静态链接的)库(例如-static -lboost_thread
)之前添加了 -static 标志,如此处所述。
https://gcc.gnu.org/ml/gcc/2000-05/msg00517.html
但是,我收到以下错误。
ld:找不到-lcrt0.o collect2的库:错误:ld返回1退出状态
我验证了该错误仅在尝试静态链接而不是动态链接时出现。