[英]How to automatically merge C source files?
我有一个可执行文件,它由多个目录中的许多 .c 源文件组成。 目前我需要对整个源代码运行静态分析,而不是单独对每个文件进行分析。
我刚刚发现 gcc ʟᴛᴏ(链接时间优化)通过压缩镜像预处理源的 gimple 起作用。
此外,当编译器在 ʟᴛᴏ 链接阶段崩溃时,它会要求发送错误报告的预处理源。
通过合并源文件,我的意思是将用于创建可执行文件的所有文件合并到一个文件中。 编译和链接该单个文件将创建库,从而手动执行 ʟᴛᴏ 所做的工作。 (但这不是这里的目标。静态分析器不支持 ɪᴘᴏ/ʟᴛᴏ)
手动执行此操作肯定需要几个小时......
那么,有没有办法自动合并C源文件? 或者至少获得 ʟᴛᴏ 预处理源? (似乎save-temps
选项在与 ʟᴛᴏ 链接期间没有任何有趣的事情)
不,因为例如两个文件可能有冲突的static
声明。 还有其他方法可以将源代码移动到单个文件中可能会使其停止工作,并且诊断每个可能的问题需要解决停机问题。 (任意程序是否曾经使用__FILE__
的结果,如果两段代码在同一个文件中,它会失败?)不过,文件范围声明最有可能发生在现实世界中。
也就是说,您可以尝试连接文件并查看您收到的错误消息。 如果您将它们#include
两次,大多数标题应该继续工作。 冲突的标识符名称可以通过在原始文件中搜索和替换来修复。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.