首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >gcc用警告/优化标志链接对象文件

gcc用警告/优化标志链接对象文件
EN

Stack Overflow用户
提问于 2017-03-03 18:30:57
回答 3查看 1.9K关注 0票数 3

我们正在使用泛型编译一段软件,其中的文件首先生成为对象文件,它们的构建方式如下:

代码语言:javascript
复制
arm-unknown-linux-gnu-gcc -c -O2 -Wstrict-prototypes -Wdeclaration-after-statement -fsigned-char -I/opt/tm-sdk/include  -mlittle-endian -Wno-trigraphs -fno-strict-aliasing -fno-omit-frame-pointer -march=armv4 -mtune=arm9tdmi -Wall -Wextra -o src/flex.o src/flex.c
...
arm-unknown-linux-gnu-gcc -c -O2 -Wstrict-prototypes -Wdeclaration-after-statement -fsigned-char -I/opt/tm-sdk/include  -mlittle-endian -Wno-trigraphs -fno-strict-aliasing -fno-omit-frame-pointer -march=armv4 -mtune=arm9tdmi -Wall -Wextra -o src/flexdb.o src/flexdb.c

然后将其与以下方面联系起来:

代码语言:javascript
复制
arm-unknown-linux-gnu-gcc -o flex src/flex.o src/flexdb.o src/flexio.o src/flexprotocol.o src/flexsettings.o src/flexstate.o -L/opt/tm-sdk/lib -ltag  -lrt -ltmreader -lsqlite3 -lsha1

我的问题是:在链接过程中是否需要包括优化和警告标志?如果在从对象文件创建flex二进制文件时包含了-Wall-Wextra-O2,那么它会做什么吗?

编辑:根据反馈澄清含义。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-03-03 19:06:13

在编译的最后阶段,我们是否需要包括优化和警告标志?

当然,您不需要在链接阶段包含它们。你已经知道了,因为你不包括他们。但我想你真正想知道的是..。

如果在从对象文件构建flex二进制文件时包含了-Wall、-Wextra和-O2,它会做些什么吗?

所有或几乎所有警告都是在编译阶段生成的。我不知道有什么例外,但可以想象会有一些例外。因此,在链接期间传递与警告相关的标志可能会触发警告,否则您将不会收到警告。但这不应以任何方式影响编译后的二进制文件。

优化是不同的。有些优化可以在链接时执行,但可能不能在默认的优化级别上执行。从链接命令中省略优化标志不应该破坏您的构建,但是包含它们可能会导致二进制文件的速度更快和/或更小。

总的来说,我认为没有什么好的理由避免在链接步骤中传递与编译步骤中相同的警告和优化标志。如果您愿意,传递特定于预处理程序的标志(例如-D)也是无害的,因为它们在链接期间只会被忽略。我假设所有这些都是由make管理的,所以并不是每次都需要输入这些选项。

票数 5
EN

Stack Overflow用户

发布于 2017-03-03 18:32:48

不,你只是用gcc的最后一次调用调用链接器,-W和-O标志是用于编译器的。

票数 -1
EN

Stack Overflow用户

发布于 2017-03-03 18:50:19

-Wall主要是一个预处理器选项,但也有一个参考库。请参阅这里

-Wextra似乎严格地说是一种c++预处理选项。请参阅这里

-O2是编译器优化级别设置。请参阅这里

因此,要回答您的准确问题,只有-Wall可能会帮助您的链接步骤。其他两个人不会。您可以通过使用和不使用这些选项进行构建来测试这一点,查看在警告情况下是否创建了任何额外的输出,以及不同构建之间的代码大小或执行时间是否不同。

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

https://stackoverflow.com/questions/42586080

复制
相关文章

相似问题

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