搭了一天的环境,被坑死,呜呜呜
环境:Ubuntu 16.04
工具安装
SquashFS:用于Linux内核的只读文件系统
sudo apt-get install zlib1g-dev liblzma-dev liblzo2-dev
sudo git clone https://github.com/devttys0/sasquatch
cd sasquatch && sudo ./build
Binwalk
sudo apt-get install binwalk
环境安装
qemu
sudo apt-get install qemu
sudo apt-get install qemu-user-static
sudo apt-get install qemu-system
sudo apt-get install uml-utilities
sudo apt-get install bridge-utils
交叉编译环境buildroot
前面顺着来没有问题,到这我就开始踩坑了。
sudo apt-get install libncurses5-dev patch
wget http://buildroot.uclibc.org/downloads/snapshots/buildroot-snapshot.tar.bz2
tar -jxvf buildroot-snapshot.tar.bz2
cd buildroot/
make clean
make menuconfig
之后会出来个GUI,
在 target options->target arch
选项里面选择自己要编译的架构,MIPS(little endian),mips32小端模式。
在 toolchain-->Kernel Headers
选择自己主机的内核版本或者更低的版本,保存退出。
之后输入 sudo make
进行编译。
打开/etc/profile
添加:
export PATH=$PATH:/home/YOUR_NAME/buildroot/output/host/bin;
source /etc/profile
使其生效。
之后写一个C语言程序,使用 mipsel-linux-gcc
来进行编译,运行程序。
So4ms@ubuntu:~/Desktop$ mipsel-linux-gcc demo.c -o demo -static
So4ms@ubuntu:~/Desktop$ ./demo
Hello World!
使用file命令查看程序:
So4ms@ubuntu:~/Desktop$ file demo
demo: ELF 32-bit LSB executable, MIPS, MIPS32 version 1 (SYSV), statically linked, not stripped
大功告成!
踩的坑
target options->target arch
选项里面选择自己要编译的架构时,看的别的教程没说清楚,也可能是我自己憨批了,先显示出来的是i386,我就以为不能选择mips了,要在i386处按下回车就可以进行选择了。
虚拟机的内存不能分配少了,不然在make的时候就会失败,编译不全,2G内存是不够的,开始我只分配了2G的内存,弄了半天都不行,后面改成4G就可以了。
Comments | NOTHING