wiz*_*mer 5 c++ optimization compilation
我有一个非常简单的问题,但我还没有找到答案,所以我开始了:我正在使用共享库,我想知道它是否已使用优化标志(例如 -O3 或不是。
有没有办法找到这些信息?
非常感谢
除非首先编译该库的人使用了一个编译器以某种方式将这些标志保存到二进制文件中(我认为只有最近的 GCC 允许这样做,并且可能 clang),否则本质上没有办法确切地知道使用了哪些标志。当然,如果您在查看汇编方面有丰富的经验,则可以扣除很多(例如“这看起来像一个自动展开的循环”,“这看起来像是针对速度更快的处理器进行了优化A xor A” A := 0x0,等等)。
一般来说,总是有不同的源代码最终可能成为相同的编译代码,因此无法判断编译的内容是首先“手动”优化的,还是在许多情况下已经看到编译器优化的。
此外,还有很多 C++ 编译器、很多版本,甚至更多的标志......
现在,你的问题来自某个地方;我猜你问这个是因为
现在,1.确实与优化级别无关;当然,你优化得越多,你的字节码对应的“源代码行”就越少,但你仍然可以有调试符号。
第二点:我经历了惨痛的教训,除非我成功地排除了所有其他替代方案,否则我才是错误的罪魁祸首(而不是我的编译器)。
第三点:总是有优化的空间,但是除非您能够自己重新编译库,否则这不会对您有帮助。如果重新编译,您将设置这些标志,因此无需首先了解它们是否已设置。如果您无法重新编译:知道有空间对您没有帮助。如果您刚刚让您的库摆脱复杂的构建过程:大多数构建系统都会为您留下一个日志,其中包含编译器标志等内容。
| 归档时间: |
|
| 查看次数: |
3591 次 |
| 最近记录: |