You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

编译静态BusyBox时缺失库的解决方法咨询(CentOS 8环境)

问题

使用qemu_8.0.2 + gdb + busybox_1.32.0调试内核时,启动出现内核恐慌:

Kernel panic - not syncing: No working init found.

为解决该问题,开启BusyBox的「Build static binary (no shared libs)」选项编译,却遇到以下错误:

LINK    busybox_unstripped
Your linker does not support --sort-section,alignment
Your linker does not support --sort-common
Static linking against glibc, can't use --gc-sections
Trying libraries: crypt m resolv rt
Failed: -Wl,--start-group  -lcrypt -lm -lresolv -lrt  -Wl,--end-group
Output of:
gcc -Wall -Wshadow -Wwrite-strings -Wundef -Wstrict-prototypes -Wunused -Wunused-parameter -Wunused-function -Wunused-value -Wmissing-prototypes -Wmissing-declarations -Wno-format-security -Wdeclaration-after-statement -Wold-style-definition -finline-limit=0 -fno-builtin-strlen -fomit-frame-pointer -ffunction-sections -fdata-sections -fno-guess-branch-probability -funsigned-char -static-libgcc -falign-functions=1 -falign-jumps=1 -falign-labels=1 -falign-loops=1 -fno-unwind-tables -fno-asynchronous-unwind-tables -fno-builtin-printf -Os -static -o busybox_unstripped -Wl,--start-group applets/built-in.o archival/lib.a archival/libarchive/lib.a console-tools/lib.a coreutils/lib.a coreutils/libcoreutils/lib.a debianutils/lib.a klibc-utils/lib.a e2fsprogs/lib.a editors/lib.a findutils/lib.a init/lib.a libbb/lib.a libpwdgrp/lib.a loginutils/lib.a mailutils/lib.a miscutils/lib.a modutils/lib.a networking/lib.a networking/libiproute/lib.a networking/udhcp/lib.a printutils/lib.a procps/lib.a runit/lib.a selinux/lib.a shell/lib.a sysklogd/lib.a util-linux/lib.a util-linux/volume_id/lib.a archival/built-in.o archival/libarchive/built-in.o console-tools/built-in.o coreutils/built-in.o coreutils/libcoreutils/built-in.o debianutils/built-in.o klibc-utils/built-in.o e2fsprogs/built-in.o editors/built-in.o findutils/built-in.o init/built-in.o libbb/built-in.o libpwdgrp/built-in.o loginutils/built-in.o mailutils/built-in.o miscutils/built-in.o modutils/built-in.o networking/built-in.o networking/libiproute/built-in.o networking/udhcp/built-in.o printutils/built-in.o procps/built-in.o runit/built-in.o selinux/built-in.o shell/built-in.o sysklogd/built-in.o util-linux/built-in.o util-linux/volume_id/built-in.o -Wl,--end-group -Wl,--start-group -lcrypt -lm -lresolv -lrt -Wl,--end-group
==========
/bin/ld: cannot find -lcrypt
/bin/ld: cannot find -lm
/bin/ld: cannot find -lresolv
/bin/ld: cannot find -lrt
collect2: error: ld returned 1 exit status
Note: if build needs additional libraries, put them in CONFIG_EXTRA_LDLIBS.
Example: CONFIG_EXTRA_LDLIBS="pthread dl tirpc audit pam"
make: *** [Makefile:718: busybox_unstripped] Error 1

当前环境为gcc 8.5.0 + CentOS 8,已尝试yum install libgcrypt但未解决-lcrypt缺失问题,需解决这些库的安装问题。

解决方案

1. 安装缺失的静态库开发包

CentOS 8中,静态编译所需库对应的开发包如下:

  • -lcrypt:由libxcrypt-devel提供(你之前安装的libgcrypt是独立加密库,与该依赖无关)
  • -lm、-lresolv、-lrt:均属于glibc-devel包

执行以下命令安装:

sudo dnf install libxcrypt-devel glibc-devel

(习惯用yum的话,替换dnf为yum即可,CentOS 8中两者兼容)

2. 重新编译BusyBox

安装完成后,回到BusyBox源码目录,执行:

make clean && make menuconfig

确认Settings -> Build Options下的Build static binary (no shared libs)已勾选,保存配置后编译:

make && make install

3. 解决内核恐慌补充

编译完成后,需确保根文件系统中存在/init软链接指向BusyBox,或在启动内核时通过init=/bin/busybox参数指定init程序,避免再次触发No working init found错误。

内容的提问来源于stack exchange,提问作者Frontier_Setter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 04:00:01