AIX 的 XL 编译器的 -qfuncsect 选项的 gcc 等效选项是啥?

Posted

技术标签:

【中文标题】AIX 的 XL 编译器的 -qfuncsect 选项的 gcc 等效选项是啥?【英文标题】:What is the gcc equivalent option for the -qfuncsect option of XL compiler of AIX?AIX 的 XL 编译器的 -qfuncsect 选项的 gcc 等效选项是什么? 【发布时间】:2010-11-24 12:37:08 【问题描述】:

AIX 的 XL 编译器似乎具有 -qfuncsect 选项,该选项将每个函数放在单独的对象控制部分中,其效果是,在创建最终可执行文件时,它有助于删除不需要的函数。

在 gcc 中是否有相同的等效选项?我找不到相同的。

【问题讨论】:

你想达到什么目的?据我在我的平台(linux)和 gcc 上看到的,最终的可执行文件已经只有必要的功能了。 我无法实现您在 VxWorks (MIPS) 上所获得的一切。如果一个文件包含 5 个函数而我的应用程序只使用 2 个函数,那么其他 3 个函数也将被链接,这不是真的吗?如果我错了,请纠正我。谢谢! 【参考方案1】:
-ffunction-sections
-fdata-sections

http://gcc.gnu.org/onlinedocs/gcc-4.0.4/gcc/Optimize-Options.html

【讨论】:

当我在编译器中使用这些选项时,是否也应该将一些选项传递给链接器?我希望它适用于 VxWorks(MIPS 和更多架构)。 它还在此页面中对这些选项的解释中说,链接器将生成更大的对象和可执行文件。更大的目标文件很好,但是为什么更大的可执行文件,这个练习的重点是减少可执行文件的大小对吧? 如果您使用 gcc,您可以使用 -Wl 将参数传递给链接器。您应该发送给链接器的是 --gc-sections。所以除了上面提到的你还应该有 -Wl,--gc-sections【参考方案2】:

见-ffunction-sections

【讨论】:

以上是关于AIX 的 XL 编译器的 -qfuncsect 选项的 gcc 等效选项是啥?的主要内容,如果未能解决你的问题,请参考以下文章

为啥来自 IBM XL C/C++ 编译器的警告?

没有原型的静态函数(AIX 编译器允许,gcc 不允许)

AIX和Linux C++编译器差别总结

在 AIX 7.1 上从源代码编译 Ruby

gccgo,AIX:编译的 .o 文件不包含 .go_export 部分

IBM XL C 编译器 - 我如何扩展用户包括但不包括系统包括