首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用g++构建静态库的优化和标志

用g++构建静态库的优化和标志
EN

Stack Overflow用户
提问于 2009-04-28 04:00:15
回答 5查看 70.7K关注 0票数 29

我刚刚从Linux上的g++编译器开始,并在编译器标志上遇到了一些问题。他们在这里

优化

我在-O1手册页面中读到了有关优化标志-O2-O3和g++的文章。我不知道什么时候该用这些旗子。通常您使用什么优化级别?g++手册为-O2提供了以下内容。

优化更多。GCC执行几乎所有支持的优化,不涉及空间速度的权衡。当您指定-O2时,编译器不会执行循环展开或函数内联。与-O相比,此选项增加了编译时间和生成代码的性能。

如果它没有进行内联和循环展开,如何实现上述性能并推荐此选项?

静态库

如何使用g++创建静态库?在Visual中,我可以选择一个类库项目,它将被编译成"lib“文件。在g++中,什么是等价的?

EN

回答 5

Stack Overflow用户

发布于 2009-04-28 05:14:38

经验法则:

当您需要调试时,使用-O0 (和-g生成调试符号)。

准备发货时,请使用-O2。

使用gentoo时,请使用-O3.!

当您需要将其放在嵌入式系统上时,请使用-Os (优化大小,而不是提高效率)。

票数 40
EN

Stack Overflow用户

发布于 2009-04-28 13:43:52

gcc手册列出了每个优化级别的所有隐含选项。在O2中,您可以得到诸如常量折叠、分支预测和co之类的信息,这可以根据您的代码显著改变应用程序的速度。确切的选项与版本有关,但它们被详细记录下来。

要构建静态库,您可以使用ar,如下所示:

代码语言:javascript
复制
ar rc libfoo.a foo.o foo2.o ....
ranlib libfoo.a

Ranlib并不总是必要的,但是没有理由不使用它。

票数 6
EN

Stack Overflow用户

发布于 2009-04-28 05:06:42

关于何时使用什么优化选项-没有单一的正确答案。

某些优化级别有时会降低性能。它取决于您正在编写的代码类型和它所具有的执行模式,并且取决于您正在运行的特定CPU。

(为了给出一个简单的规范示例,编译器可能决定使用一个优化,使您的代码比以前稍微大一些。这可能导致代码的某一部分不再适合指令缓存,此时需要对内存进行更多的访问--例如,在循环中)。

这是最好的衡量和优化为任何你需要。试试看,衡量和决定。

一个重要的经验法则--对代码执行越多的优化,就越难使用调试器(或读取其反汇编)来调试它,因为C/C++源视图离生成的二进制文件越远。因此,在开发/调试时使用较少的优化是一条很好的经验法则。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/796162

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档