3.3配置内核
make menuconfig需要安装如下
sudo apt-get install libncurses5-dev
3.3.1交叉编译内核设置
make ARCH=i386 CROSS_COMPLIE=i686-none-linux-gnu-
ARCH是目标机 CROSS_COMPLIE是交叉编译器的前缀也可以在顶成Makefile修改
3.3.2基本内核配置
make allnoconfig最小配置方法便于彻底定制
3.3.5中最后添加启动项笔者有问题出现,具体解决方法请自行百度
3.4构建基本根文件系统
vita@lx-VirtualBox:/vita$ mkdir -p rootfs/lib
vita@lx-VirtualBox:/vita$ cp -d sysroot/lib/* rootfs/lib/
vita@lx-VirtualBox:/vita$ cp -d cross-tool/i686-none-linux-gnu/lib/lib\
> *.so.*[0-9] rootfs/lib/
cp -d -d:若源文件为连接文件杜属性,则复制连接文件属性而非文件本身
3.43安装bash
vita@lx-VirtualBox:/vita/build$ tar xvf ../source/bash-4.2.tar.gz
vita@vita@lx-VirtualBox:/vita/build/bash-4.2$ ./configure --prefix=/usr \
> --bindir=/bin --without-bash-malloclx-VirtualBox:/vita/build/bash-4.2$ ./configure --prefix=/usr \
> --bindir=/bin --without-bash-malloc
vita@lx-VirtualBox:/vita/build/bash-4.2$ make && make install DESTDIR=$SYSROOT
vita@lx-VirtualBox:/vita/build/bash-4.2$ echo $?
0
成功执行
vita@lx-VirtualBox:/vita$ mkdir rootfs/bin
vita@lx-VirtualBox:/vita$ cp sysroot/bin/bash rootfs/bin/
vita@lx-VirtualBox:/vita/cross-tool/bin$ vim ldd
vita@lx-VirtualBox:/vita/cross-tool/bin$ chmod a+x ldd
ldd脚本
<span style="font-size:18px;"></span><pre name="code" class="plain">#!/bin/bash
LIBDIR="${SYSROOT}/lib ${SYSROOT}/usr/lib
${CROSS_TOOL}/${PATH}/lib"
find() {
for d in $LIBDIR;do
found=""
if [ -f "${d}/$1" ]; then
found="${d}/$1"
break
fi
done
if [ -n "$found" ];then
printf "%8s%s => %s\n" "" $1 $found
else
printf "%8s%s => (not found)\n" "" $1
fi
}
readelf -d $1 | grep NEEDED \
| sed -r -e 's/.*Shared library :[ ]+\[(.*)\]/\1/;'\
| while read lib ;do
find $lib
done
加上执行权限
chmod a+x ldd
脚本编写好了之后楼主在执行
vita@lx-VirtualBox:/vita$ ldd rootfs/bin/bash
0x00000001 => (not found)
0x00000001 => (not found)
0x00000001 => (not found)
不知到这是怎么一回事??
3.4.4安装跟文件系统到目标系统
vita@lx-VirtualBox:/vita$ i686-none-linux-gnu-strip rootfs/lib/* \> rootfs/bin/*
由于我是直接在虚拟机里面进行的所以接下来的拷贝工作就不需要了
至此第三章操作完成!!