3

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

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

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

这有两个问题:

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

对此有什么想法吗?我已经尝试了编译器中我能想到的“删除调试信息”等所有开关,但这些路径仍然存在。

4

1 回答 1

5

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

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

或者您可以查找FILEBASE_FILE宏并将其删除,您不想使用该标志。

于 2013-08-01T19:03:47.943 回答