ls -> coreutils

发布时间:2026/6/26 20:44:51
ls -> coreutils ls指向coreutils是一种在嵌入式 Linux 系统如你使用的 Buildroot 系统中常见的节省空间的优化设计。这背后的原因和机制其实很巧妙我来为你拆解一下。 为什么要这么设计简单来说coreutils是一个“大礼包”里面包含了ls、cp、mv等我们在 Linux 下常用的基本命令。“多合一”的核心文件在 Buildroot 这样的嵌入式系统中为了最大程度地节省存储空间通常只会保留一个真正的可执行文件也就是coreutils。这个文件本身是“全能”的它包含了所有基本命令的功能代码。“分身”的符号链接为了让我们能像使用独立命令一样调用它们系统会为coreutils创建许多不同的符号链接Symbolic Link。你看到的ls其实就是指向coreutils的一个“分身”。运行时识别当你在终端输入ls并按下回车时系统会执行它指向的coreutils文件。coreutils程序会通过argv[0]即程序被调用时的名字ls来识别用户想执行的是哪个命令然后自动调用内部对应的功能模块。 这种设计有什么好处这种设计在嵌入式领域非常流行BusyBox也采用了类似思想主要有两大好处节省空间只需维护一个coreutils可执行文件以及多个指向它的符号链接就能提供全部功能。这极大地节省了宝贵的存储空间。易于维护当coreutils需要更新或打补丁时只需要替换这一个文件即可所有通过符号链接调用的命令都会同步更新。⚙️ Buildroot 中的实现在 Buildroot 中这种机制可以通过配置选项BR2_PACKAGE_COREUTILS_INDIVIDUAL_BINARIES来控制。如果不开启这个选项默认行为coreutils就会以这种“多合一”的单二进制文件模式安装并创建相应的符号链接。你看到的ls - coreutils就是这种情况。如果开启了这个选项coreutils则会像在标准桌面 Linux 发行版中一样安装成多个独立的二进制文件。你当前的环境采用符号链接的方式正是 Buildroot 为嵌入式系统做空间优化的典型表现。