Openswan Porting to Pronghorn-Metro 實務經驗分享 04

上次處理到 Openswan 的編譯,最後停在了 endian 的問題,這次能不能順利解決呢?

在使用 GCC 的編譯上,預設為 little-endian,如果要特別編譯成 big-endian 的話,要加上一個 -mbig-endian 的參數,所以,我們再來一遍。

編譯 GMP

./configure --host=arm-linux CC="arm-linux-gcc" CXX="ucfront-g++ arm-linux-uclibc-g++" --prefix=/usr/local/arm-linux CFLAGS=-mbig-endian
make
make install

然後,在 openswan/Makefile.inc 加上 CFLAGS += -mbig-endian

編譯 Openswan

make KERNELSRC=../../ADI/linux-2.6.x ARCH=arm OSDEP=linux USE_NETKEY=yes CC="arm-linux-gcc -L../ADI/romfs/lib" LD=arm-linux-ld RANLIB=arm-linux-ranlib AR=arm-linux-ar AS=arm-linux-as STRIP=arm-linux-strip programs
make DESTDIR=../../ADI/romfs install

過了嗎??沒有!!怎麼可能... 我發現在 make 的時候,回報的信息告訴我說要編譯 little-endian 的執行檔卻使用 big-endian 的 library。How could it be?? 我不是連 CFLAGS 都設定好了嗎? 正當一籌莫展的時候,幸好辦公室的同事(Hidding)即時出手相救。他很有耐心的去觀看編譯的過程,發現在編譯那幾隻程式的時候根本沒有吃到 -mbig-endian!於是我在打開 Makefile (openswan/program/pluto/Makefile) 來看 ... 天啊... 在編譯的時候根本沒有使用 CFLAGS 嘛(你前面的 CFLAGS 是寫好玩得就是了)

罪魁禍首是下面幾個~
alg_info_test:
$(BINNAMEPLUTO):
$(BINNAMEADNS):
$(BINNAMEWHACK):
$(BINNAMEWHACKINIT):

加上 CFLAGS 就可以編譯成功了。

在放到版子上執行,就會動了...才怪。他告訴我說缺少 libgmp.a ... 恩,忘了放上去。放上之後在執行一次... 他又告訴我缺少 libc.so.6 ... 奇怪,這種東西怎麼可能會少呢?這不是標準的 Glibc 嗎 ... ? 正當我這麼想的時候...我發現我錯得很離譜 ... 之前在編譯系統的時候,我明明給人家選 uClibc 的... sigh,這樣 libgmp 跟 openswan 都要重編了...。為了節省時間(或著是說建立已經被摧毀的一乾二淨的成就感),這次我不再自己編 libgmp 了,而是直接使用 ADI 所提供的 libgmp ( 在 Customize Vendor/User Settings 裡面打勾就好了 ),然後在對 OpenSwan 進行編譯的動作。

正在想要如何讓 Openswan 使用 uClibc 而不是 glibc 的時候(實在很不想用 buildroot),這時候,Hidding 又跳出來了,「你可以直接使用 ADI 所提供的 ucfront-gcc」,太好了,那就這樣幹吧~最後,我的 make 變成了下面這個樣子

make KERNELSRC=../../ADI/linux-2.6.x ARCH=arm OSDEP=linux USE_NETKEY=yes CC="../../ADI/tools/ucfront-gcc arm-linux-gcc -L../../ADI/romfs/lib" LD=arm-linux-ld RANLIB=arm-linux-ranlib AR=arm-linux-ar AS=arm-linux-as STRIP=arm-linux-strip programs

make DESTDIR=../../ADI/romfs install

Anyway ... 總算完工了... 之後,手動進行 strip ...那...到底能不能再版子上順利完成 IPsec Tunnel 的建立呢?下回在說吧

Porting 的紀錄又翻過了一頁~

留言

  1. 不好意思 我不太會用這個

    應該是04這邊 方便的話 有幾個問題想請教您

    回覆刪除
  2. 我的mail是qq11010817@gmail.com

    回覆刪除

張貼留言

這個網誌中的熱門文章

如何將Linux打造成OpenFlow Switch:Openvswitch

如何利用 Wireshark 來監聽 IEEE 802.11 的管理封包

我弟家的新居感恩禮拜分享:善頌善禱