天天看點

Quagga(zebra)安裝配置Zebra編譯

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