草庐IT

c++ - 最新版gcc使用libstdc++.so.5

仍然使用libstdc++.so.5(而不是libstdc++.so.6)的最新版本的gcc是什么? 最佳答案 在GnuABIpolicy,你可以找到这个:...gcc-3.3.3:libstdc++.so.5.0.5gcc-3.4.0:libstdc++.so.6.0.0(与之前不兼容)...因此,除非他们没有列出版本,否则gcc-3.3.3就是您想要的版本。 关于c++-最新版gcc使用libstdc++.so.5,我们在StackOverflow上找到一个类似的问题:

c++ - 如何使用 _mm_extract_ps SSE GCC instrinc 函数将十六进制 float 转换为 C/C++ 中的 float

我正在为二维卷积编写SSE代码,但SSE文档非常稀少。我正在使用_mm_dp_ps计算点积并使用_mm_extract_ps获得点积结果,但是_mm_extract_ps返回一个十六进制float,我不知道如何将这个十六进制float转换为常规float。我可以使用__builtin_ia32_vec_ext_v4sf返回一个float但我想保持与其他编译器的兼容性。_mm_extract_ps(__m128__X,constint__N){union{inti;floatf;}__tmp;__tmp.f=__builtin_ia32_vec_ext_v4sf((__v4sf)__X,

c++ - 在 Mac OS 上使用 GCC 为 MS-DOS (DOSBox) 编译 C 程序

我在MacOSX上的SnowLeopard下运行GCC4.2.1。我想用它来编译我15年前写的一些旧的C/C++DOS游戏,这样我就可以在DosBox下运行它们了。.要做到这一点,它们显然需要以DOS可执行格式编译,谁能告诉我如何使用GCC执行此操作?谢谢! 最佳答案 DOSBox在仿真下运行16位x86实模式代码。OSX10.6上的常规GCC编译器针对OSX操作系统和32位x86保护模式,因此您不能使用它来构建在DOSBox中运行的代码。您可以做的是在DOSBox本身中运行DOS编译器。DJGPP是GCC的MS-DOS端口,但是它

龙芯loongarch64服务器编译安装gcc-8.3.0

前言    当前电脑的gcc版本为8.3.0,但是在编译其他依赖包的时候,出现各种奇怪的问题,会莫名其妙的中断编译。本地文章讲解如何自编译安装gcc,替换系统自带的gcc。环境准备下载页面:龙芯开源社区网站 -LoongArchGCC8.3交叉工具链-源码下载源码包名称如:loongson-gnu-toolchain-8.3-src-loongarch64-linux-gnu-rc1.2.tar开始编译1、解压压缩包tar-xvfloongson-gnu-toolchain-8.3-src-loongarch64-linux-gnu-rc1.2.tar目录结构:2、编译binutilstar-

c++ - GCC 的 _Pragma 运算符中的预处理器标记粘贴

我正在尝试做类似于anotherquestion的事情,即有条件地在我的程序中包含OpenMP编译指示。但是,我想更进一步,避免用户每次使用pragma时都需要指定omp。换句话说,我希望编译以下代码:#include#include#ifdef_OPENMP#defineLIB_PRAGMA_OMP(x)_Pragma("omp"#x)#else#defineLIB_PRAGMA_OMP(x)#endifintmain(){LIB_PRAGMA_OMP(parallel){std::printf("Hellofromthread%d\n",omp_get_thread_num());

c++ - 跨翻译单元和 gcc 4.6 自动内联函数

如果我不将函数f声明为内联。如下:嗯:Xf(Yy);A.cpp:Xf(Yy){...}然后在不同的翻译单元中:B.cpp:#include"A.h"Zg(Ww){......f(...)......}然后我用gcc4.6编译A.o和B.o这两个翻译单元,然后也通过gcc链接它们。(也许对两个步骤都使用-O3)gcc会考虑在链接时内联函数以提高性能吗?还是为时已晚?在一次代码审查中,有人建议我不应该将我的函数声明为内联,因为编译器比我更了解何时内联。我一直觉得除非函数在header中定义,否则编译器没有内联它的选项。(如果C模式、C++模式或gnu++0x模式的答案不同,请同时指出)

c++ - 朴素矩阵乘法的优化(ICC vs GCC)

下面的代码使用一种非常直接的方法来计算矩阵乘积a*b并将结果存储在c中。该代码是在GCC4.4.6(使用-mtune=native)和英特尔编译器13.0.1上使用-O3编译的,GCC的速度明显更差(超过所用样本数据的两倍)。我很好奇造成这些差异的原因,但不幸的是,我对汇编输出不够熟悉,无法理解这里发生了什么。乍一看,似乎ICC在矢量化计算方面做得更好,但我无法破译更多。(这主要用于学习目的,因为我无法在生产中使用它!)void__attribute__((noinline))mm(//Line3intn,double*__restrict__c,double*__restrict__

c++ - gcc "overflow in expression"而等效等效表达式工作正常

这是我的代码#includestaticconstunsignedlonglongintxx=(36*36*36*36)*(36*36*36*36);staticconstunsignedlonglonginty=36*36*36*36;staticconstunsignedlonglongintyy=y*y;intmain(){std::cout这是编译输出#g++-std=c++11test.cpp-otesttest.cpp:2:62:warning:integeroverflowinexpression[-Woverflow]staticconstunsignedlonglon

c++ - 使用 GCC 编译非必要的目标文件

考虑下面的例子g++a.ob.oc.o-oprog如果c.o没有为prog提供任何可执行代码,也没有任何对c.o的依赖其他文件,GCC是否会将c.o的内容包含在prog中?换句话说,除了编译时间之外,将不必要的文件编译成可执行文件会有什么(如果有的话)负面后果?提前致谢;干杯! 最佳答案 除了您的可执行文件可能过大之外,没有任何负面影响。链接器可能会为您删除未使用的代码,这会将事情缩减。您可以在输出可执行文件上使用某种对象查看工具(otool、objdump、nm等)来查看您的程序是否具有里面有额外的符号。我使用的是Mac,所以如果

c++ - GCC函数填充值

每当我在启用优化的情况下编译C或C++代码时,dGCC都会将函数对齐到16字节边界(在IA-32上)。如果函数短于16个字节,GCC会用一些字节填充它,这些字节似乎根本不是随机的:19:c3ret1a:8db600000000lea0x0(%esi),%esi它似乎总是8db600000000...或8d742600。函数填充字节有什么意义吗? 最佳答案 填充是由汇编程序创建的,而不是由gcc创建的。它只看到一个.align指令(或等效指令),并不知道要填充的空间是在函数内部(例如循环对齐)还是函数之间,因此它必须插入NOP某种形式