天天看點

openwrt 在MAC OS X上編譯失敗

我的入門初步目标是:借助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

繼續閱讀