如何阻止文件名/路径出现在已编译的C二进制文件中

时间:2013-08-01 15:31:10

标签: c binary firmware iar

这可能是特定于编译器的,在这种情况下,我使用的是IAR EWARM 5.50编译器(STM32芯片的固件开发)。

我们的项目包含一堆我们先编译的C代码库,然后是主应用程序,它编译它的C代码然后链接到这些库中(非常标准的东西)。

但是,如果我使用十六进制编辑器并打开生成的任何库对象文件或最终的应用程序二进制文件,我会在输出二进制文件中找到一大堆纯文本引用到C文件的文件路径编译。 (例如,我看到“C:\ Development \ trunk \ Common \ Encryption \ SHA_1.c”)

有两个问题:

  • 我们真的不希望文件路径易于阅读,因为这表明我们的设计有些什么
  • 如果您的C文件位于一个长子目录中(二进制文件包含完整路径,而不仅仅是名称),二进制文件的大小会增长...当我们处理的是固件时,这一点尤其重要有限的代码空间(256KB)。

对此有何想法?我已经尝试了编译器中的所有开关,我可以想到“删除调试信息”等,但这些路径仍在那里。

1 个答案:

答案 0 :(得分:5)

“已添加命令行选项--no_path_in_file_macros。它会删除路径,只留下符号文件 BASE_FILE 的文件名。” 如果是IAR,它在发行说明中定义。

http://supp.iar.com/FilesPublic/UPDINFO/005832/arm/doc/infocenter/iccarm_history.ENU.html

或者您可以查找文件 BASE_FILE 宏并删除它,您不想使用该标记。