CodeSizer:为什么那个二进制文件这么大?

Lobsters Hottest 工具

摘要

CodeSizer 是一款用于嵌入式固件的静态代码大小分析工具,它利用 objdump 和 addr2line 将代码大小归因于内联调用树,并生成 HTML 报告。

<p><a href="https://lobste.rs/s/ukyvbo/codesizer_why_is_binary_so_big">评论</a></p>
查看原文
查看缓存全文

缓存时间: 2026/07/20 09:35

Wren6991/CodeSizer

来源:https://github.com/Wren6991/CodeSizer

CodeSizer

为什么那个二进制文件这么大?

简介

CodeSizer 是一个静态代码大小分析工具。

在以体积为焦点的嵌入式固件开发中,最终的二进制文件经过了大量的内联和链接时优化。单个函数符号可能覆盖多个内联函数。CodeSizer 使用 objdump 和 addr2line 来展开每个指令地址处的内联调用栈,从而将代码大小归因到每个函数内部内联调用树中的正确节点。

输出是一个静态的 HTML 报告文件,其中包含少量 JavaScript 以实现 UI 功能,例如切换树形视图的展开/折叠。

使用方法

来自交互式帮助:

`` 用法:codesizer.py [-h] [–cross-prefix CROSS_PREFIX] [–section SECTION] elf 输出

分析 ELF 文件的静态代码大小。通过 objdump 反汇编,通过 addr2line 展开内联调用栈,并生成静态 HTML 报告。

位置参数: elf 输入的 ELF 文件 output 输出的 HTML 文件

选项: -h, –help 显示此帮助信息并退出 –cross-prefix CROSS_PREFIX objdump 和 addr2line 的前缀(默认:riscv32-unknown- elf-) –section, -j SECTION 指定 ELF 节区。可多次传入以指定多个节区。 若未指定,则默认使用 .text。 ``

必须在您的 $PATH 中存在带有给定前缀的正确工具链,或者您必须指定工具链二进制文件的完整路径。例如:

  • 如果您在 Ubuntu 上安装了 gcc-arm-none-eabi 包,则使用 --cross-prefix=arm-none-eabi-。

  • 如果您在 /opt/riscv/gcc15 安装了 riscv-gnu-toolchain 构建,则使用 --cross-prefix=/opt/riscv/gcc15/bin/riscv32-unknown-elf-。

示例输出

以下 HTML 报告(https://github.com/Wren6991/CodeSizer/releases/download/v0.1/arm-bootrom.html)由以下命令生成:

bash ./codesizer.py --cross-prefix arm-none-eabi- arm-bootrom.elf arm-bootrom.html -j .text -j .secure_gateways

该 ELF 文件来自 RP2350 A4 启动ROM发布版(https://github.com/raspberrypi/pico-bootrom-rp2350/releases/tag/A4)。

相似文章

SDCC – 小型设备C编译器

Hacker News Top

SDCC是一个小型设备C编译器,一种用于C语言编程小型和嵌入式系统的开发工具。

说真的,大代码模型到底是干嘛用的?

Lobsters Hottest

本文探讨了GCC大代码模型(mcmodel=large)的局限性,特别是它无法处理带有32位重定位的线程局部存储(TLS),因此尽管其声称用于大型二进制文件,实际上却无法用于真正的大型二进制文件。

Zig ELF 二进制文件代码高尔夫 (2025)

Lobsters Hottest

深入技术探讨如何缩小 Zig ELF 二进制文件的大小,从 2180K 缩减至 500 字节以下,通过去除调试信息、切换到 ReleaseSmall 以及使用 freestanding 目标。

基于编译器的新型编程代理将成本降低一半,并提升代码智能(SWE-bench Verified 78.2% @ 0.1美分)

Reddit r/ArtificialInteligence

Benzi 是一个由编译器驱动的编程代理,它首先将代码库编译成可查询的调用关系、数据流和类层次结构映射。据称其使用 DeepSeek V4 flash 在每次修复成本不到 10 美分的情况下,在 SWE-bench Verified 上达到了 78.2% 的成绩。官方宣称其阅读的源代码量比 Claude Code 少一半,同时速度快 40%、成本低一半。它以 VS Code 扩展、无头运行时以及 MCP 工具的形式发布。