gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 16:12:59 26 4
gpt4 key购买 nike

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

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

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

两个问题:

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

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

最佳答案

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

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

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

关于c - 如何阻止文件名/路径出现在已编译的 C 二进制文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17998378/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com