dhcpd
交叉編譯
1. 簡介
- 專案中需要在
RK3566
上配置DHCP
伺服器,需要移植DHCP
- 編譯環境:
Ubuntu20.04
DHCP
版本:v4.4.3
2. zlib
移植
-
dhcp
交叉編譯依賴libz.so
-
zlib
是一個廣泛使用的開源資料壓縮庫,提供了資料壓縮和解壓縮的功能 -
下載
zli
b原始碼,選擇使用1.3.1
版本,下載地址https://www.zlib.net/
-
解壓,並進入原始碼目錄
$ tar -xvf zlib-1.3.1.tar.gz $ cd zlib-1.3.1/
-
configure
配置,指定編譯輸出路徑為build
目錄zlib-1.3.1$ ./configure --prefix=$(pwd)/build
-
由於
zlib
無法透過configure
工具配置交叉編譯工具鏈,因此需要手動修改Makefile
-
修改
CC
為交叉編譯工具鏈aarch64-none-linux-gnu-gcc
,最好使用絕對路徑的方式
-
修改
LDSHARED
中的gcc
為交叉編譯工具鏈aarch64-none-linux-gnu-gcc
,最好使用絕對路徑的方式
-
修改
AR
為交叉編譯工具鏈aarch64-none-linux-gnu-ar
,最好使用絕對路徑的方式
-
修改
RANLIB
為交叉編譯工具鏈aarch64-none-linux-gnu-ranlib
,最好使用絕對路徑的方式
-
-
編譯,並安裝到build目錄
zlib-1.3.1$ make && make install
-
檢視編譯輸出目錄
2. dhcp
移植
-
下載最新原始碼:
https://github.com/isc-projects/dhcp/releases/tag/v4_4_3
-
解壓,進入原始碼目錄
$ tar -xvf dhcp-4_4_3.tar.gz $ cd dhcp-4_4_3
-
進入
bind
目錄,將bind.tar.gz
解壓;bind(Berkeley Internet Name Domain)
是最常用的DNS伺服器軟體之一dhcp-4_4_3$ cd bind/ bind$ tar -xvf bind.tar.gz
-
返回到
dhcp
原始碼的頂層目錄bind$ cd ..
-
configue
配置-
--host
指定目標平臺,一般設定為交叉編譯工具鏈的字首即可 -
--prefix
指定編譯輸出路徑 -
--with-randomdev
指定用來生成隨機數的隨機裝置 -
BUILD_CC
指定為宿主機的gcc
,必須設定,否則編譯會報錯 -
CC
指定交叉編譯工具鏈,最好使用絕對路徑的方式,避免使用到錯誤的交叉編譯工具鏈;比如我的編譯環境中就存在多個名字相同,但是版本不同的交叉編譯工具鏈
$ ./configure \ --host=aarch64-none-linux-gnu \ --prefix=$(pwd)/build \ --with-randomdev=/dev/urandom \ ac_cv_file__dev_random=yes \ BUILD_CC=gcc \ CC=/home/jun/work/share/IG-20/rk3568/prebuilts/gcc/linux-x86/aarch64/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-gcc
-
-
重新進入
bind
目錄,修改Makefile
,指定zlib
的路徑為《2.zlib
移植》中的編譯輸出路徑-
在
bindconfig
變數中增加配置--with-zlib=/home/jun/work/share/IG-20/zlib-1.3.1/build
,指定zlib
的路徑 -
如果重新執行了
configure
,Makefile
配置將被還原,必須重新修改dhcp-4_4_3/bind/Makefile
-
-
返回頂層目錄
bind$ cd ..
-
編譯,並安裝到
build
目錄dhcp-4_4_3$ make && make install
-
檢視編譯輸出路徑
3. 安裝至目標機
-
安裝時不要忘了
libz.so
也需要複製到宿主機,確保dhcp
執行時能夠連結到該庫,不再贅述 -
將
dhcp-4_4_3/build
路徑下的所有內容複製至目標機的/usr/local/dhcpd/
路徑
-
設定
PATH
環境變數,在/etc/profile
的末尾新增如下內容 -
使環境變數立即生效
$ source /etc/profile
-
檢視
dhcp
版本
-
檢視
dhcp
應用程式路徑,確保使用的是我們自行移植的程式
4. dhcpd
配置
-
關於
dhcpd
的配置,可參考如下連結,不再贅述https://docs.redhat.com/zh_hans/documentation/red_hat_enterprise_linux/7/html/networking_guide/sec-dhcp-configuring-server