Zebra編譯
以下是在ubuntu12.04實驗并編譯通過(理論上适用ubuntu10.04)
一、安裝編譯需要的工具
1. ./configure 報錯
configure: error: GNU awk is required for lib/memtype.h made by memtypes.awk.
BSD awk complains: awk: gensub doesn't support backreferences (subst "\1")
$ sudo apt-get install gawk |
2.configure: error: vtysh needs libreadline but was not found and usable on your system.
$ sudo apt-get install libreadline5 libreadline5-dev |
如果readline5裝不了,裝readline6
$ sudo apt-get install libreadline6 libreadline6-dev |
3.WARNING: `automake-1.11' is missing on your system. You should only need it if
you modified `Makefile.am', `acinclude.m4' or `configure.ac'.
You might want to install the `Automake' and `Perl' packages.
Grab them from any GNU archive site.
$ sudo apt-get install automake perl |
二、編譯配置
添加build.sh腳本
#!/bin/bash
export PATH=$PATH:/home/kevin/Documents/mips-tools/usr/bin:/home/kevin/Documents/mips-tools/bin
mkdir Output
./configure \
CC=mips_4KC-gcc \
--host=mipsel-linux \
--prefix=/home/huahuan/zebra/Output \
--enable-usr=root \
--enable-group=root
make
make install
configure配置檔案解釋
--build:執行代碼編譯的主機,正常的話就是你的主機系統。這個參數一般由config.guess來猜就可以。當然自己指定也可以。
--host:編譯出來的二進制程式所執行的主機,因為絕大多數是如果本機編譯,本機執行。是以這個值就等于build。隻有交叉編譯的時候(也就是本機編譯,其他系統機器執行)才會build和host不同。用host指定運作主機。
--target:這個選項隻有在建立交叉編譯環境的時候用到,正常編譯和交叉編譯都不會用到。他用build主機上的編譯器,編譯一個新的編譯器(binutils, gcc,gdb等),這個新的編譯器将來編譯出來的其他程式将運作在target指定的系統上。
--prefix 指定安裝目錄(這個目錄有兩個用途,一個是用來存放編譯的輸出檔案,一個是程式在目标闆上運作時,這個目錄會作為工作目錄,是以目标闆上需要建立相同的目錄)
注:
1.編譯時要根據自己的交叉編譯目錄修改PATH變量和--prefix
2.編譯時,缺少了一個宏定義,在/zebos/debra/rt_netlink.c 516行,為編譯通過臨時注掉
//case ARPHRD_IEEE802154: return ZEBRA_LLT_IEEE802154;
三、目标闆上執行
1.将輸出的目錄Output整體複制到目标闆上,放到前面—prefix指定的目錄
需要建立這個目錄/home/huahuan/zebra/Output
2. 檔案夾下Output/etc有一個zebra.conf.sample檔案,需将該檔案copy一份
cp zebra.conf.samplezebra.conf
3.執行./zebra -d -u root -groot
該步驟會查找/home/huahuan/zebra/Output/etc下是否有zebra.conf檔案,如報錯檢查—prefix指定的目錄與目前目錄是否一緻
執行完後可以ps看一下是否起來了
4.telnet localhost 2601
預設密碼zebra