当我在 Gentoo 上构建软件包时。我收到警告说'-ggdb3'标志可以'破坏包。
我还没有找到一个例子来证明这是真的。虽然我曾经发现一些在不同优化设置下崩溃的代码,但这与包含调试符号不同。
有些人能否提供一个代码示例,该代码无需调试符号即可编译,并且不会与它们一起编译(或在运行时以其他方式出错)?
在“过去”中,我从 Scratch 系统构建了一个完整的 Linux,并为每个二进制文件进行了调试。当然,安装明显更大,内存使用量不太理想,但我从来没有遇到任何问题,无论是在编译还是后续执行中。
很难证明是否定的,并且不能通过轶事来证明,但是将其作为第二台桌面/玩具服务器运行一年将使我得出结论,这确实不是问题。
我认为你得到的标志是一个标准的警告,如果你设置了一个没有测试过的 USE 标志,或者它不是真的要安装的,那么这个包将在 Gentoo 中给出。只要你知道标志是什么——在这种情况下,你似乎——并且你没有将它放在任何“关键任务”设置中(即,如果出现问题,你会受到指责)似乎是安全的忽略这些警告。
由于包含调试符号,我从未有过一次测试失败(或者更少,包中断)。在处理PPC时,我只被优化错误所困扰。
但是,您必须考虑您正在构建的内容。如果要将可执行文件复制到类似 initrd 的文件中,您通常希望将其剥离(或在没有调试符号的情况下编译),尤其是在静态链接时。
有时,当您打开调试符号时,它实际上会更改编译器生成的代码,在这种情况下,总是有可能从“正确代码”变为“错误代码”。
我不知道“-ggdb3”启用了哪些特定更改,但也许这就是您被警告的内容。