标签: gcc5

如何在CentOS 7.2上安装带有yum的gcc 5.3?

我使用的是CentOS 7.2

当我使用时yum groupinstall "Development Tools",gcc版本是4.8.5,像这样:

在此输入图像描述

我想安装gcc 5.3

如何处理这个问题yum

gcc install yum centos7 gcc5

86
推荐指数
4
解决办法
12万
查看次数

Valgrind无法识别的指令

我有以下代码:

#include <iostream>
#include <random>

int main() {
    std::mt19937_64 rng(std::random_device{}());
    std::cout << std::uniform_int_distribution<>(0, 100)(rng) << '\n';
}
Run Code Online (Sandbox Code Playgroud)

我尝试使用valgrind它来描述它,但它说:

vex amd64->IR: unhandled instruction bytes: 0xF 0xC7 0xF0 0x89 0x6 0xF 0x42 0xC1
vex amd64->IR:   REX=0 REX.W=0 REX.R=0 REX.X=0 REX.B=0
vex amd64->IR:   VEX=0 VEX.L=0 VEX.nVVVV=0x0 ESC=0F
vex amd64->IR:   PFX.66=0 PFX.F2=0 PFX.F3=0
==2092== valgrind: Unrecognised instruction at address 0x4cdc1b5.  
==2092== at 0x4CDC1B5:std::(anonymous namespace)::__x86_rdrand() (random.cc:69)  
==2092== by 0x4CDC321: std::random_device::_M_getval() (random.cc:130)  
==2092== by 0x4009D4: main (random.h:1619)  
Run Code Online (Sandbox Code Playgroud)

在多个实例之前:

--2092-- WARNING: Serious error when reading …
Run Code Online (Sandbox Code Playgroud)

c++ valgrind libstdc++ gcc5

27
推荐指数
1
解决办法
7736
查看次数

使用g ++ 5.3.1编译时,程序运行速度比使用g ++ 4.8.4编译的相同程序慢3倍

最近,我开始使用带有g ++ 5.3.1的Ubuntu 16.04并检查我的程序运行速度慢了3倍.在此之前我使用过Ubuntu 14.04,g ++ 4.8.4.我使用相同的命令构建它:CFLAGS = -std=c++11 -Wall -O3.

我的程序包含循环,充满数学调用(sin,cos,exp).你可以在这里找到它.

我尝试使用不同的优化标志(O0,O1,O2,O3,Ofast)进行编译,但在所有情况下都会重现问题(使用Ofast,两种变体运行速度更快,但第一次运行速度仍然慢3倍).

在我使用的程序中libtinyxml-dev,libgslcblas.但是它们在两种情况下都具有相同的版本,并且在性能方面没有在程序中(根据代码和callgrind概要分析)占用任何重要部分.

我已经进行了分析,但它并没有让我知道它为什么会发生. Kcachegrind比较(左边比较慢).我只注意到现在程序使用与Ubuntu 14.04 libm-2.23相比libm-2.19.

我的处理器是i7-5820,Haswell.

我不知道为什么它会变慢.你有什么想法?

PS下面你可以找到最耗时的功能:

void InclinedSum::prepare3D()
{
double buf1, buf2;
double sum_prev1 = 0.0, sum_prev2 = 0.0;
int break_idx1, break_idx2; 
int arr_idx;

for(int seg_idx = 0; seg_idx < props->K; seg_idx++)
{
    const Point& r = well->segs[seg_idx].r_bhp;

    for(int k = 0; k < props->K; k++)
    {
        arr_idx = seg_idx * …
Run Code Online (Sandbox Code Playgroud)

c++ ubuntu performance gcc5

17
推荐指数
1
解决办法
797
查看次数

输出sizeof()运算符的数据类型

我使用的是Ubuntu 16.04.5和GCC 5.4.0版.

我在玩sizeof()操作员,写下面的代码:

#include <stdio.h>

int main(int argc, char *argv[]){

        long int mylint = 31331313131.1313;

        printf("size of long int is %d\n", sizeof(mylint));
        printf("size of long int is %d\n", sizeof(long int));

        return 0;
}
Run Code Online (Sandbox Code Playgroud)

我尝试使用gcc -o ... ...命令编译并期待:

size of long int is 8
size of long int is 8
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误:

fl_double_lint.c: In function ‘main’:
fl_double_lint.c:11:9: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘long unsigned int’ [-Wformat=]

  printf("size of long …
Run Code Online (Sandbox Code Playgroud)

c ubuntu sizeof gcc5 ubuntu-16.04

10
推荐指数
1
解决办法
918
查看次数

如何在Linux上安装GCC 5.1(Ubuntu)

我想在Ubuntu上试验新的GCC 5.1 C++编译器.

如何在Ubuntu上安装GCC 5.1?

我更喜欢某种形式的预构建可执行文件,我可以下载和安装,而不是下载GCC的源代码并从中构建整个GCC 5.1.

此外,由于我在GCC 5中读到了libstdc ++的ABI更改,因此必须在GCC 5.1中安装新版本的libstdc ++吗?

c++ linux ubuntu gcc gcc5

9
推荐指数
1
解决办法
2万
查看次数

GCC 5.3中的新选项:-fno-semantic-interposition

GCC 5.3增加了一个新选项: -fno-semantic-interposition

新的-fno-semantic-interposition选项可用于提高共享库的代码质量,其中不允许插入导出的符号.

这听起来像是对C++项目有用的东西,其中插入不能用于任何原因,但延迟是一个问题.

但是,描述相当模糊.有人能够澄清这个选项是如何工作的吗?

c++ gcc gcc5

9
推荐指数
1
解决办法
1402
查看次数

我的fma()坏了吗?

在使用中,double fma(double x, double y, double z);我希望d下面标有的输出行中有一个非零值'?'.它似乎在内部只使用long double精度,而不是无限精度的规定.

fma函数计算(x× y)+ z,四舍五入一个三元操作:它们计算的值(仿佛)到无限精度和圆一次的结果的格式,根据当前的舍入模式.§7.12.13.12(我的重点)

那我的fma()坏了,或者我在代码或编译选项中如何错误地使用它?

#include <float.h>
#include <math.h>
#include <stdio.h>

int main(void) {
  // Invoking: Cygwin C Compiler
  // gcc -std=c11 -O0 -g3 -pedantic -Wall -Wextra -Wconversion -c -fmessage-length=0 
  //   -v -MMD -MP -MF"x.d" -MT"x.o" -o "x.o" "../x.c"

  printf("FLT_EVAL_METHOD %d\n", FLT_EVAL_METHOD);
  for (unsigned i = 20; i < 55; i++) …
Run Code Online (Sandbox Code Playgroud)

c floating-point gcc5

9
推荐指数
1
解决办法
330
查看次数

uint8_t在达到255后无法正常翻转至0,无法正常工作

我是C-Headers的新手- stdint.hinttypes.h。我正在尝试一些代码以了解uint8_t工作原理。但是,似乎遇到了问题。

我已经声明了4 uint8_t个分别具有边界值0、255、256,-1的整数,并对其执行了一些简单的算术运算。我这样做是因为我想知道C编译器(我在Linux上使用)会产生什么错误/警告gcc 5.4.0。如果不是这样的话,我很想知道输出是什么样子。下面给出的代码。

#include <inttypes.h>
#include <stdint.h>
#include <stdio.h>

int main() {
        int a = 10;
        printf("%d\n", a++);
        printf("%d\n\n", a);

        // 8 bit unsigned integer -> range[0, 255]
        uint8_t ua81=0, ua82=255, ua83=256, ua84=-1;
        printf("--------STDINT.H----uint8_t--DEMO--------\nua81 = %" PRIu8 "\n", ua81);
        printf("ua82 = %" PRIu8 "\nua83 = %" PRIu8 "\nua84 = %" PRIu8 "\n\n", ua82, ua83, ua84);
        printf("ua81+1 = %" PRIu8 "\nua82-3 = %" PRIu8 "\nua83-4+7 = %" PRIu8 …
Run Code Online (Sandbox Code Playgroud)

c stdint uint8t gcc5

9
推荐指数
2
解决办法
849
查看次数

链接到使用GCC5编译的库时,clang中的未定义引用

我尝试使用ubuntu 15.10存储库版本的libmuparser(包libmuparser2v5).用gcc编译工作正常,但不能用clang编译.我深入研究了这个问题,提出了以下最小(非)工作示例和几个问题.

考虑一个带有一个简单类的库,它接受一个string并返回一个string.

testlib.h:

#pragma once

#include <string>

struct Test {
    std::string str;

    void set(std::string s);
    std::string get();
};
Run Code Online (Sandbox Code Playgroud)

testlib.cpp:

#include "testlib.h"

void Test::set(std::string s) {
    str = s;
}

std::string Test::get() {
    return str;
}
Run Code Online (Sandbox Code Playgroud)

这是用gcc 5.2.1编译为静态库的

g++ -Wall -c testlib.cpp -o testlib-gcc.o
ar rcs libtest-gcc.a testlib-gcc.o
Run Code Online (Sandbox Code Playgroud)

现在编译一个应用程序 main.cpp

#include <iostream>
#include "testlib.h"

int main()
{
    Test p;
    p.set("Hello!");
    std::cout << p.get() << std::endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

用clang 3.6.2-1使用

clang++ main.cpp -o out-clang …
Run Code Online (Sandbox Code Playgroud)

c++ abi clang c++11 gcc5

8
推荐指数
0
解决办法
2919
查看次数

在Ubuntu 16.04下构建Proxygen

我想用Ubuntu 16.04从github构建Facebook的Proxygen c ++ http库.这是我设置的环境以及用于安装依赖项的deps.sh命令:

gcc --version
  gcc (Ubuntu 5.4.0-6ubuntu1~16.04.1) 5.4.0 20160609
export CPPFLAGS="-std=c++14"
export CXXFLAGS="-std=c++14"
git clone git@github.com:facebook/proxygen.git
cd proxygen/proxygen && ./deps.sh
Run Code Online (Sandbox Code Playgroud)

这通过构建其愚蠢的依赖关系得到了我的大部分,但我得到了一个不完整的类型错误:

libtool: compile:  g++ -DHAVE_CONFIG_H -I./.. -pthread -I/usr/include -std=c++14 -std=gnu++1y -std=c++14 -MT io/async/AsyncPipe.lo -MD -MP -MF io/async/.deps/AsyncPipe.Tpo -c io/async/AsyncPipe.cpp  -fPIC -DPIC -o io/async/.libs/AsyncPipe.o
In file included from /usr/include/c++/5/bits/move.h:57:0,
                 from /usr/include/c++/5/bits/stl_pair.h:59,
                 from /usr/include/c++/5/utility:70,
                 from /usr/include/c++/5/algorithm:60,
                 from ./../folly/Conv.h:26,
                 from Conv.cpp:16:
/usr/include/c++/5/type_traits: In instantiation of ‘struct std::make_unsigned<__int128>’:
Conv.cpp:528:52:   required from ‘folly::detail::ConversionResult<T> folly::detail::digits_to(const char*, const char*) [with Tgt = __int128]’
Conv.cpp:658:16: …
Run Code Online (Sandbox Code Playgroud)

c++ c++14 gcc5 ubuntu-16.04 proxygen

8
推荐指数
1
解决办法
991
查看次数