ppp-2.4.5移植(交叉編譯)

移植無非就三個步驟

1、./configure

2、make

3、make install

正常情況下在步驟1可以指定編譯器,CC=xxxx之類,或者直接指定host名稱,一般--host=xxxxx指定後,對應的編譯器就不用指定了,會默認xxxx-gcc,裁剪也會默認用xxxx-strip,但是!!!ppp不支持選項‘--host=’選項,只支持‘--prefix=’,所以步驟1無法指定編譯器,需要在步驟2中添加,即 make CC=xxxx,正常的話這樣也沒問題,但是!!! ppp-2.4.5的工程生成的Makefile,裏面install時使用-s命令,默認使用的是PC下的strip命令。不是步驟2指定的xxx-strip,所以必須要去更改Makefile文件,把-s(裁剪)去掉,最後再手動對生成的可執行文件strip(裁剪)。例如直接把Makefile中的$(INSTALL) -s -c chat $(BINDIR)語句中的-s去掉,這樣make install的時候就不會報錯了。報錯如下圖↓ ↓ ↓。

問題來了,我們用的是開源的代碼,每次用./configure時,各個目錄中的Makefile又會重新生成,所以每次又得改,覺得很麻煩。有什麼辦法使install -s不是調用默認的strip 而是調用交叉編譯的strip,改configure文件?目前沒有發現直接改configure的辦法,但是可以用腳本實現交叉編譯。用sed修改需要去掉-s的Makefile

# 對全局匹配上的所有字符串進行替換
sed -i 's/原字符串/新字符串/' ab.txt
#源碼目錄
PPP_SRC_DIR		:= /src/ppp/

#輸出目錄
PPP_TARGET_DIR	        := /for_arm/ppp

TARGET_CC=arm-hisiv300-linux-gcc
TARGET_STRIP=arm-hisiv300-linux-strip

#目標名稱
PPP_TARGET_NAME	        := pppd
mkdir -p $(PPP_TARGET_DIR)
cd $(PPP_SRC_DIR); ./configure --prefix=$(PPP_TARGET_DIR)
make -j8 CC=$(TARGET_CC) -C $(PPP_SRC_DIR)
sed -i 's/-s//' $(PPP_SRC_DIR)chat/Makefile
sed -i 's/-s//' $(PPP_SRC_DIR)pppd/Makefile
sed -i 's/-s//' $(PPP_SRC_DIR)pppd/plugins/radius/Makefile
sed -i 's/-s//' $(PPP_SRC_DIR)pppdump/Makefile
sed -i 's/-s//' $(PPP_SRC_DIR)pppstats/Makefile
make -C $(PPP_SRC_DIR) install
$(TARGET_STRIP) $(PPP_TARGET_DIR)/sbin/$(PPP_TARGET_NAME)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章