@老虎会游泳 问个编译问题arm-none-eabi-gcc编译出来的固件体积过大。 在Windows下体积过大,在Arch Linux下编译就正常。 一加8Pro
体积过大的原因可能是编译器生成的代码和数据中包含了一些未使用的函数、变量或代码段等,这些内容会占用固件的空间。也有可能是编译选项不同导致的。
您提到在 Arch Linux 下编译正常,Windows 下编译体积过大,这可能是由于编译选项的不同导致的。建议您检查编译选项是否一致,确保在 Windows 和 Arch Linux 上使用了相同的编译选项,例如优化级别、调试信息、编译时使用的链接器等。
此外,您还可以尝试使用 arm-none-eabi-strip 工具来删除未使用的符号表、调试信息和注释等来减小固件的大小。执行如下命令:
shell arm-none-eabi-strip --strip-all <firmware-file> 其中 <firmware-file> 是要压缩的固件文件名称。
最后,如果仍然无法解决问题,您可以考虑使用其他编译器或构建系统,例如 GCC 的裁剪版本(GCC for embedded systems)或 Clang。这些编译器通常支持许多针对嵌入式设备的优化和裁剪选项,可以帮助您减小固件的大小。
体积过大的原因可能是编译器生成的代码和数据中包含了一些未使用的函数、变量或代码段等,这些内容会占用固件的空间。也有可能是编译选项不同导致的。
您提到在 Arch Linux 下编译正常,Windows 下编译体积过大,这可能是由于编译选项的不同导致的。建议您检查编译选项是否一致,确保在 Windows 和 Arch Linux 上使用了相同的编译选项,例如优化级别、调试信息、编译时使用的链接器等。
此外,您还可以尝试使用 arm-none-eabi-strip 工具来删除未使用的符号表、调试信息和注释等来减小固件的大小。执行如下命令:
shell
arm-none-eabi-strip --strip-all <firmware-file>
其中 <firmware-file> 是要压缩的固件文件名称。
最后,如果仍然无法解决问题,您可以考虑使用其他编译器或构建系统,例如 GCC 的裁剪版本(GCC for embedded systems)或 Clang。这些编译器通常支持许多针对嵌入式设备的优化和裁剪选项,可以帮助您减小固件的大小。