ubuntu 12.0.4编译busybox出错,求解答

2025-04-27 21:26:50
推荐回答(1个)
回答1:

#我解压tarball后,在目录下建立了build文件夹,我在build目录里开始编译。

make KBUILD_SRC=../ -f ../Makefile defconfig
sed -e 's/.*FEATURE_PREFER_APPLETS.*/CONFIG_FEATURE_PREFER_APPLETS=y/' -i .config
sed -e 's/.*FEATURE_SH_STANDALONE.*/CONFIG_FEATURE_SH_STANDALONE=y/' -i .config
make
make install #我没有执行这个安装命令,因为我不需要这个软件。

#检测一下编译好的busybox
PATH= ./busybox ash #这条命令的作用是清空PATH系统环境变量,防止执行系统目录(/bin /usr/bin等)下的可执行文件 如 ls rm等。

这样,下面的ls命令,是来自busybox 的 ash shell,而非来自系统的bash shell。

/busybox/busybox-1.21.1/build $ ls
Makefile busybox_unstripped.out editors
applets console-tools findutils
archival coreutils include
busybox debianutils include2
busybox_unstripped docs init
busybox_unstripped.map e2fsprogs libbb

make过程的部分屏幕输出:

CC networking/ifplugd.o
CC networking/ifupdown.o
CC networking/inetd.o #编译 networking/inetd.o 可以正常通过
CC networking/interface.o
......

CC util-linux/volume_id/sysv.o
CC util-linux/volume_id/udf.o
CC util-linux/volume_id/util.o
CC util-linux/volume_id/volume_id.o
CC util-linux/volume_id/xfs.o
AR util-linux/volume_id/lib.a
LINK busybox_unstripped
Trying libraries: crypt m
Library crypt is not needed, excluding it
Library m is needed, can't exclude it (yet)
Final link with: m
DOC busybox.pod
DOC BusyBox.txt
DOC busybox.1
DOC BusyBox.html

你的问题是找不到头文件,那首先,你检查一下 gcc 的默认头文件搜索目录
echo "" | gcc - -xc -v -E

看输出是否包含/usr/include

#include <...> 搜索从这里开始:
/usr/lib/gcc/i686-linux-gnu/4.6/include
/usr/local/include
/usr/lib/gcc/i686-linux-gnu/4.6/include-fixed
/usr/include/i386-linux-gnu
/usr/include

根据结果再做下一步判断。