可以从静态库中使用GCC内联函数

Can GCC inline functions from static libraries?

本文关键字:GCC 函数 静态      更新时间:2023-10-16

我正在制作一个库,它可以从其插入功能中受益匪浅,但是它很大,我决定将其编译到静态库,而不仅仅是预编译的标题。在使用库的代码中,如何从静态库中制作代码(粘贴在调用代码中而不是链接和调用(的代码(这甚至可以(?

是的启用了优化。在GCC中,您可以通过-flto选项启用LTO。基本上,这些通常工作的方式是编译器编译您的源代码时,不仅会直接发射对象代码,而且还将将其代码的内部表示形式写入对象文件中。链接时,编译器基本上会从本内部表示形式中重新运行代码生成,以便整个程序中的代码生成,就好像它写在一个大源文件中一样。这可以大大增加构建程序所需的时间。但是,它允许一些重要的优化,例如在翻译单元边界中甚至在inlip; 之间进行内部进行。

静态库只是对象文件的档案,因此,如果您启用了LTO构建库并将调用代码链接到它,则编译器将能够将功能直接插入调用代码。请注意,归根结底,仍取决于编译器决定是否在线,因此不能保证肯定会构成函数……