gcc相关内容
我发现 gcc 中不同的编译器优化级别在访问循环中的局部变量或全局变量时会给出完全不同的结果.这让我感到惊讶的原因是,如果访问一种类型的变量比访问另一种类型的变量更可优化,我认为 gcc 优化会利用这一事实.这里有两个例子(在 C++ 中,但它们的 C 对应物给出了几乎相同的时间): 全局 = 0;for (int i = 0; i
..
使用 IBM 的 XL 编译器系列,可以提供两个选项(-qreport 和 -qlist)来为每个源文件生成报告,其中包括关于哪些优化的信息应用了,或者代码的哪些部分无法优化(以及为什么). 是否有可能获得关于 GNU 的 g++ 的类似报告 - 如果可以,该怎么做? 解决方案 看看 -fdump-tree-[switch] 标志.您可以使用 -fdump-tree-all 来获取大
..
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
..
-lm选项在g++中有什么作用,什么时候需要? 是否有完整的 g++ 选项说明? 解决方案 这是一个链接器选项.它告诉链接器与 (-l) 链接 m 库 (libm.so/dll).那是数学图书馆.如果您 #include .
..
我即将将 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++的安装过程,偏好最新版
..
..
..
是否有可能在 i386 上捕获数据对齐错误?也许通过设置一个 i386 特定的机器寄存器或类似的东西. 在这种情况下,在 Solaris-Sparc 上我收到了 SIGBUS,但在 i386 上一切正常. 环境: 32 位应用程序 Ubuntu 业力 gcc/g++ v4.4.1 编辑:这就是我问这个的原因: 我们的应用程序在使用 SIGBUS 的 Sol-Spa
..
我想在应用程序崩溃时获取堆栈跟踪.我知道 -rdynamic 选项可以使用函数名称获取完整的堆栈跟踪.但我担心是否会对我的应用程序的性能产生任何影响. 解决方案 是的,虽然它非常具体,通常不会引起关注. -rdynamic 选项指示链接器将运行时通常不需要的符号添加到符号表中.这意味着动态链接器需要在运行时清除更多(可能更多)符号以进行符号解析. 具体来说,由于基于 GNU 的
..
假设我有一个文件 main.cpp,它使用 libmath 中定义的 sin() 函数.还假设我们在同一目录中同时拥有 libmath.a 和 libmath.so.现在,如果我发出命令 g++ -o main main.cpp -lmath,Linux 的默认行为是链接到共享库 libmath.so.我想知道有没有办法强制程序与静态库 libmath.a 链接而不删除或移动共享库? 解决方
..
假设与设置恢复点相关的成本,可以像这样优化循环: while (doContinue) {尝试 {做一些工作 ();}抓住 (...) {}} 变成这样: while (doContinue) {尝试 {做 {做一些工作 ();} while (doContinue);休息;} 抓住 (...) {}} 但是如果平台支持零成本的异常处理,这种优化就没有任何意义了. 有人能指出如何在不
..
是否可以通过某种方式调整 VSC 以在文本编辑器中查看 GCC 警告? 请参阅下面的屏幕截图 - 它仅在编辑器中显示错误. 我使用的是安装了 C/C++ 扩展 0.26.3 的 1.43.2 版本. 尝试将 -Wall 编译器标志添加到 tasks.json 中的“args",但没有帮助. 以下是我的设置: {“editor.fontSize":13,"files.autoSav
..
我已经安装了 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/
..
我正在尝试 关于专门模板类的问题. 此代码在 g++ 中编译良好,但在使用 gcc 编译时会引发链接器错误.这些错误的原因是什么? $ g++ traits2.cpp$ gcc 特征2.cpp/tmp/ccI7CNCY.o:在函数“__static_initialization_and_destruction_0(int, int)"中:traits2.cpp:(.text+0x36):
..
我刚刚对 Debian Weezy 机器进行了 dist 升级,以便从 gcc-4.7 运行 gcc-4.8.以前的构建环境是健全的,并且可以正常编译.现在它给出了以下链接器错误,任何程序(甚至是微不足道的 hello world): /usr/bin/ld:/usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): 重定位 0 有无
..
..
我最近探索了 distcc 并且无法使其工作.所以我 sudo apt-get remove distcc 然后,我得到错误 ==>处理catkin包:'gencpp'==>使用 env 构建:'/opt/ros/kinetic/env.sh'Makefile 存在,跳过显式 cmake 调用...==>在'/home/pi/ros_catkin_ws/build_isolated/genc
..
我知道标题有点混乱.让我用一点背景来澄清我的问题: 就执行时间而言,当我使用 -O1 标志与 -O0 标志进行编译时,我的程序的行为很奇怪.我知道 -O1 标志做了许多优化,例如 fauto-inc-dec -fbranch-count-reg -fcombine-stack-adjustments (根据手册页超过 40).为了弄清楚是哪些优化导致了这种行为,我计划一次删除一个标志,然后编
..
如我所见: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
..
我有一个 C 文件的静态库,在 Cygwin 上用 g++ 编译.我希望对库中定义的一个函数进行单元测试.该函数调用该库中定义的另一个函数,我希望覆盖依赖项以用我自己的该函数版本替换它.我无法修改静态库中的内容,所以这个解决方案 [ Override a function call inC ] 不适用. 通常,我可以编写一个 .cpp 文件并包含包含我要进行单元测试的函数的 .c 文件,该文
..