相关疑难解决方法(0)

对象文件包含太多部分

我们正在大量使用boost :: serialization和模板.一切似乎进展顺利.

除此之外,我们在Windows版本上遇到了麻烦.它似乎导致目标文件中的问题太大.我们使用MinGW/Msys和g ++ 4.7.0.

c:/mingw/bin/../lib/gcc/mingw32/4.7.0/../../../../mingw32/bin/as.exe: CMakeFiles/source.dir/sourcecode.cpp.obj: too many sections (33396)
C:\Users\username\AppData\Local\Temp\ccnAocvD.s: Assembler messages:
C:\Users\username\AppData\Local\Temp\ccnAocvD.s: Fatal error: can't write CMakeFiles/source.dir/sourcecode.cpp.obj: File too big
Run Code Online (Sandbox Code Playgroud)

谷歌大师透露了这个存档的消息,http://sourceforge.net/mailarchive/forum.php? thread_name = CA%2Bsc5mkLvj%3DW9w2%3DsY%3Dc_N%3DEwnsQuPDEX%3DiBcbsbxS3CuE_5Bg%40mail.gmail.com&forum_name=mingw- users

在其中,它表明另一个人几乎同样陷入困境.它确实指向了Visual Studio /bigobj选项的一个选项,它似乎可以满足我们的需求.但是,我们无法转移到Visual Studio.

一个建议是在汇编程序选项中添加--hash-size.这没有用.

如果我没有弄错,问题在于目标文件的限制为2 ^ 16个条目.实际上,根据错误信息,我冒昧地说它是签名的2 ^ 16条目,但那是花生./bigobjVisual Studio 的选项会将其更改为2 ^ 32.邮件列表结果不知道gcc的等效选项.进一步的谷歌搜索结果似乎与此无关.

在这一点上,我们将不得不重构我们的代码(呃)以克服这个限制.但是我仍然担心,经过大量模板化,我们可能会一次又一次地遇到这个问题(我们已经遇到了三个源文件).

所以我的问题是这样的; 有没有相当于微软/bigobj选项的gcc ?我还没有找到第三种选择吗?

c++ boost mingw g++ visual-studio

34
推荐指数
3
解决办法
2万
查看次数

GCC 4.8:-Og暗示-g?

最近更新了GCC 4.8的文档,现在引入了一个新的优化开关-Og.这个

[..]解决了快速编译和卓越调试体验的需求,同时提供了合理的运行时性能.总体开发经验应优于默认优化级别-O0.

此切换是否暗示-g或我是否必须CXXFLAGS手动将其添加到我的手中?

gcc

18
推荐指数
2
解决办法
6515
查看次数

在gcc中使用-g和-O2选项

有没有人经历混合-g(调试符号)和-O2(最佳安全优化)与gcc编译器?
我必须调试分发给最终用户的发布程序的崩溃,这些程序可能会将我发回给核心文件.
我一直习惯称:

gdb << myprogram >> << core file >>

并看看问题出在哪里.现在我可以看到调用跟踪但没有调试符号我遇到了麻烦.

任何的想法?

c gcc

12
推荐指数
2
解决办法
4380
查看次数

如何使用介子设置调试和优化标志

我在 ubuntu 20.04 上使用介子 0.53.2。
我想要一个最大限度优化的可执行文件 ( -Ofast) 但包含所有调试符号 ( -g3)

  • 如果我使用--buildtype=release它优化-O2并且可执行文件不包含调试符号。
  • 如果我使用--buildtype=debug它根本不会优化并使用-g.
  • 如果我使用--buildtype=debugoptimized它优化-O2并使用-g.

我尝试使用--debug它似乎不起作用,因为可执行文件不包含任何调试符号。相反,如果我使用-Ddebug=true调试符号,则存在但带有 flag -g

那么我该如何以最不脏的方式gcc使用标志进行编译呢?-Ofast -g3

linux optimization gcc meson-build

6
推荐指数
1
解决办法
7740
查看次数

为什么GDB在使用c源代码进行调试时会"跳回"

我正在使用内核源代码调试金鱼安卓内核(版本3.4).

现在我发现gdb有时会在行之间来回跳转,例如考虑如下的c源代码:

char *XXX;
int a;
...

if (...)
{

}
Run Code Online (Sandbox Code Playgroud)

当我到达该if条款时,我输入n并将跳回到该int a部分.这是为什么?

如果我再次执行该命令,它将输入中的括号if.

如果可能的话,我想避免那部分,并直接输入if(当然,如果条件匹配)

debugging android gdb kernel

4
推荐指数
1
解决办法
586
查看次数

标签 统计

gcc ×3

android ×1

boost ×1

c ×1

c++ ×1

debugging ×1

g++ ×1

gdb ×1

kernel ×1

linux ×1

meson-build ×1

mingw ×1

optimization ×1

visual-studio ×1