gcc相关内容

在不同优化级别访问 gcc/g++ 中的局部变量和全局变量的速度

我发现 gcc 中不同的编译器优化级别在访问循环中的局部变量或全局变量时会给出完全不同的结果.这让我感到惊讶的原因是,如果访问一种类型的变量比访问另一种类型的变量更可优化,我认为 gcc 优化会利用这一事实.这里有两个例子(在 C++ 中,但它们的 C 对应物给出了几乎相同的时间): 全局 = 0;for (int i = 0; i ..
发布时间:2022-01-23 21:04:38 C/C++开发

如何找出使用 gcc 时实际应用了哪些优化?

使用 IBM 的 XL 编译器系列,可以提供两个选项(-qreport 和 -qlist)来为每个源文件生成报告,其中包括关于哪些优化的信息应用了,或者代码的哪些部分无法优化(以及为什么). 是否有可能获得关于 GNU 的 g++ 的类似报告 - 如果可以,该怎么做? 解决方案 看看 -fdump-tree-[switch] 标志.您可以使用 -fdump-tree-all 来获取大 ..
发布时间:2022-01-23 21:04:19 C/C++开发

在 g++ 中转储类/结构成员变量

g++ 中是否有用于转储结构/类的成员变量 的标志或工具?为了说明,考虑这样的源代码 struct A { virtual void m() {};};结构 B:公共 A { int b;虚空 n() = 0;};结构 C : 公共 B { int c1, c2;无效o();};结构 D : 公共 C { 虚拟 void n() {};广告;}; 我想得到类似的东西 A: 0 = (vptr ..
发布时间:2022-01-23 21:04:02 C/C++开发

-lm 选项在 g++ 中有什么作用?

-lm选项在g++中有什么作用,什么时候需要? 是否有完整的 g++ 选项说明? 解决方案 这是一个链接器选项.它告诉链接器与 (-l) 链接 m 库 (libm.so/dll).那是数学图书馆.如果您 #include . ..
发布时间:2022-01-23 21:03:56 其他开发

将 Ubuntu 12.04 上的 GCC 4.6.3 升级到 4.8.2

我即将将 Ubuntu 12.04 提供的默认 GCC(版本 4.6.3)更新到 4.8.2,尽管编译需要独立的 C++ 编译器 admin@ubuntu:/usr/local/gcc_build$ sudo make 结束 配置:错误:C++ 编译器丢失或无法运行make[2]: *** [configure-stage1-libcpp] 错误 1 因此我转向g++的安装过程,偏好最新版 ..
发布时间:2022-01-23 21:03:41 其他开发

如何捕获 x86 上的数据对齐错误(Sparc 上的 SIGBUS)

是否有可能在 i386 上捕获数据对齐错误?也许通过设置一个 i386 特定的机器寄存器或类似的东西. 在这种情况下,在 Solaris-Sparc 上我收到了 SIGBUS,但在 i386 上一切正常. 环境: 32 位应用程序 Ubuntu 业力 gcc/g++ v4.4.1 编辑:这就是我问这个的原因: 我们的应用程序在使用 SIGBUS 的 Sol-Spa ..
发布时间:2022-01-23 21:01:58 C/C++开发

将 -rdynamic 链接器选项添加到 gcc/g++ 会影响性能吗?

我想在应用程序崩溃时获取堆栈跟踪.我知道 -rdynamic 选项可以使用函数名称获取完整的堆栈跟踪.但我担心是否会对我的应用程序的性能产生任何影响. 解决方案 是的,虽然它非常具体,通常不会引起关注. -rdynamic 选项指示链接器将运行时通常不需要的符号添加到符号表中.这意味着动态链接器需要在运行时清除更多(可能更多)符号以进行符号解析. 具体来说,由于基于 GNU 的 ..
发布时间:2022-01-23 21:01:24 服务器开发

当存在同名的共享库时,如何强制链接静态库

假设我有一个文件 main.cpp,它使用 libmath 中定义的 sin() 函数.还假设我们在同一目录中同时拥有 libmath.a 和 libmath.so.现在,如果我发出命令 g++ -o main main.cpp -lmath,Linux 的默认行为是链接到共享库 libmath.so.我想知道有没有办法强制程序与静态库 libmath.a 链接而不删除或移动共享库? 解决方 ..
发布时间:2022-01-23 21:01:17 服务器开发

零成本异常处理 vs setjmp/longjmp

假设与设置恢复点相关的成本,可以像这样优化循环: while (doContinue) {尝试 {做一些工作 ();}抓住 (...) {}} 变成这样: while (doContinue) {尝试 {做 {做一些工作 ();} while (doContinue);休息;} 抓住 (...) {}} 但是如果平台支持零成本的异常处理,这种优化就没有任何意义了. 有人能指出如何在不 ..
发布时间:2022-01-23 21:00:33 C/C++开发

如何在 .cpp 文件的 VSCode 编辑器中显示警告?

是否可以通过某种方式调整 VSC 以在文本编辑器中查看 GCC 警告? 请参阅下面的屏幕截图 - 它仅在编辑器中显示错误. 我使用的是安装了 C/C++ 扩展 0.26.3 的 1.43.2 版本. 尝试将 -Wall 编译器标志添加到 tasks.json 中的“args",但没有帮助. 以下是我的设置: {“editor.fontSize":13,"files.autoSav ..
发布时间:2022-01-23 20:58:46 其他开发

OS X:安装 gcc 链接到 clang

我已经安装了 gcc 和 g++: $ 哪个 gcc/usr/bin/gcc$哪个g++/usr/bin/g++$ 酿造安装 gcc警告:gcc-6.2.0 已经安装 我关注 使用 gcc 编译器编译 OpenMP 程序OS X Yosemite 通过 HomeBrew 重新安装 gcc: $ brew reinstall gcc --without-multilib 然后 $/usr/ ..
发布时间:2022-01-23 20:58:21 其他开发

g++ O1 不等于 O0 与所有相关的优化标志

我知道标题有点混乱.让我用一点背景来澄清我的问题: 就执行时间而言,当我使用 -O1 标志与 -O0 标志进行编译时,我的程序的行为很奇怪.我知道 -O1 标志做了许多优化,例如 fauto-inc-dec -fbranch-count-reg -fcombine-stack-adjustments (根据手册页超过 40).为了弄清楚是哪些优化导致了这种行为,我计划一次删除一个标志,然后编 ..
发布时间:2022-01-23 20:55:44 C/C++开发

gcc 中的 C++11 thread_local - 替代方案

如我所见:http://gcc.gnu.org/projects/cxx0x.html 不幸的是,gcc 还不支持 thread_local 关键字. 有没有其他选择?我不想使用 boost 库. 解决方案 gcc 编译器有一个存储类 __thread 可能足够接近. http://gcc.gnu.org/onlinedocs/gcc-3.3.1/gcc/Thread-Loca ..
发布时间:2022-01-23 20:54:44 C/C++开发

覆盖静态库中定义的 C 函数

我有一个 C 文件的静态库,在 Cygwin 上用 g++ 编译.我希望对库中定义的一个函数进行单元测试.该函数调用该库中定义的另一个函数,我希望覆盖依赖项以用我自己的该函数版本替换它.我无法修改静态库中的内容,所以这个解决方案 [ Override a function call inC ] 不适用. 通常,我可以编写一个 .cpp 文件并包含包含我要进行单元测试的函数的 .c 文件,该文 ..
发布时间:2022-01-23 20:54:31 其他开发