我的入门初步目标是:借助QEMU MIPS虚拟机,成功运行起MIPS架构的OPENWRT来。
我现有的环境是MAC OS X已编译好了QEMU虚拟机。原打算在MAC OS X中编译出OPENWRT的,但失败了。接下来,打算换到LINUX UBUNTU环境下编译OPENWRT.
下面记录下失败的经过:
环境介绍:
MAC OS X 10.9.5
思路:
1、安装QEMU作为虚拟机运行OPENWRT内核
2、下载openwrt源码,在MAC OS上交叉编译
步骤:
步骤1:
检查自己的MAC OS盘是否大小写不敏感
touch a
touch A
如果只有一个文件,那就是不敏感。
如果不敏感,需做步骤2.
步骤2:
用磁盘实用工具创建一个大小写敏感的、大小30G的映象文件openwrt.img,采用自动增长方式。
分区挂到MAC OS X
安装SVN
sudo port install subversion
获取源码
svn co svn://svn.openwrt.org/openwrt/branches/backfire/ backfire
此时直接进行试一下make menuconfig
会检查环境,下面是我的环境缺少的工具包:
sh-3.2# make menuconfig V=99
Checking 'working-make'... ok.
Checking 'case-sensitive-fs'... ok.
Checking 'getopt'... failed.
Checking 'fileutils'... failed.
Checking 'working-gcc'... ok.
Checking 'working-g++'... ok.
Checking 'ncurses'... ok.
Checking 'zlib'... ok.
Checking 'gawk'... failed.
Checking 'flex'... ok.
Checking 'unzip'... ok.
Checking 'bzip2'... ok.
Checking 'patch'... ok.
Checking 'perl'... ok.
Checking 'python'... ok.
Checking 'wget'... failed.
Checking 'gnutar'... failed.
Checking 'svn'... ok.
Checking 'gnu-find'... failed.
Checking 'getopt-extended'... ok.
Checking 'non-root'... failed.
Build dependency: Please install GNU getopt
Build dependency: Please install GNU fileutils
Build dependency: Please install GNU awk.
Build dependency: Please install wget.
Build dependency: Please install GNU tar.
Build dependency: Please install GNU find
Build dependency: Please do not compile as root.
Prerequisite check failed. Use FORCE=1 to override.
make: *** [tmp/.prereq-build] Error 1
解决方法:
GNU find 在findutils中,其他都好找,不愿一个一个试的话,直接拷贝下面的指令即可:
sudo port install coreutils asciidoc binutils bzip2 fastjar flex getopt gtk2 intltool jikes zlib openssl p5-extutils-makemaker python26 rsync ruby sdcc unzip gettext libxslt bison gawk autoconf wget gmake ncurses findutils
上述包安装后之后,编译出错。暂时没有解决:
make menuconfig V=99
make[1]: Entering directory `/Volumes/openwrt/backfire/scripts/config'
Undefined symbols for architecture x86_64:
"_kconf_id_lookup", referenced from:
_zconflex in zconf.tab.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[1]: *** [conf] Error 1
make[1]: Leaving directory `/Volumes/openwrt/backfire/scripts/config'
make: *** [scripts/config/mconf] Error 2