整合

  • 記得先將 gmp 整合到 SDK。
  • 將 strongswan-5.3.5.tar.gz 解壓到 user 目錄。
  • 修改 user/Makefile,在 # application 下面新增一行。
    # application app_y += strongswan-5.3.5
  • 修改 user/Makefile,在 prepare: 下面新增數行。
    prepare: if [ ! -e ./strongswan-5.3.5/Makefile ]; then \ cd strongswan-5.3.5; \ LD=$(CROSS_COMPILE)ld \ CFLAGS="-I$(DIR_USERS)/gmp-6.1.0" \ LDFLAGS="-L$(DIR_USERS)/gmp-6.1.0/.libs" \ ./configure --host=mips-linux --prefix=/usr --datarootdir=/tmp \ --enable-static=no --enable-shared=yes --with-systemdsystemunitdir=no \ --with-linux-headers=$(DIR_LINUX)/include/uapi; \ echo "romfs: install" >> Makefile; \ echo " rm $(DIR_ROMFS)/usr/etc/ipsec.conf" >> Makefile; \ echo " ln -s /var/ipsec.conf $(DIR_ROMFS)/usr/etc/ipsec.conf" >> Makefile; \ echo " ln -s /var/ipsec.secrets $(DIR_ROMFS)/usr/etc/ipsec.secrets" >> Makefile; \ echo "" >> Makefile; \ echo "DESTDIR=$(DIR_ROMFS)" >> Makefile; \ echo "export DESTDIR" >> Makefile; \ cd ..; \ fi

說明

  • #application 是把目錄加進編譯過程,所以目錄名稱要正確。
  • prepare: 主要是用來做 configure,所以只會做一次。做完 configure 會產生 Makefile,所以用 Makefile 來判斷是否做過 configure。如果找不到可以判斷的檔案就自己產生一個,如 iptables 的 iptables_config_done。
  • CFLAGS 讓 configure 找到 gmp include。
  • LDFLAGS 讓 configure 找到 gmp library。
  • prefix 的預設值為 /usr/local,但 SDK 預設 PATH 只有 /usr/sbin 沒有 /usr/local/sbin,所以把 prefix 改成 /usr 就不用去改 PATH。
  • datarootdir 是因為不需要文件資料,所以把資料目錄指向 tmp,就不會被包進 romfs。
  • with-systemdsystemunitdir=no 用來取消安裝 init 資料夾,SDK 不需要那東西,取消才不會出現安裝錯誤。
  • with-linux-headers 要指向 linux kernel 的 uapi 目錄,沒有指定會造成不可預期的誤錯,比如跟 Yamaha router 相連時,會造成連結成功但是 ping Yamaha 失敗。
  • DESTDIR 用來指定安裝的目錄,沒有指定為空字串。原先以為 exec-prefix 可以用來指定安裝目錄,事實上也確實是安裝到指定目錄,但 exec-prefix 其實是指定執行目錄,內部所有參數都會改成 exec-prefix 目錄。其實在安裝時 exec-prefix 前面還會加上 DESTDIR,它才是真正的安裝目錄。

台南小新 發表在 痞客邦 PIXNET 留言(0) 人氣()