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/*
由於我是直接在虛擬機裏面進行的所以接下來的拷貝工作就不需要了
至此第三章操作完成!!