修改 buildlin.sh

  • 刪除 if [ ! -f /usr/include/gmp.h ]; 這一整段。我是自己 build gmp for mips,不能用 x86 版本。
  • export PREFIX=../rtl819x/toolchain/msdk-4.4.7-mips-EB-3.10-0.9.33-m32t-131227b
  • export DESTDIR=/tmp/openswan
  • export ARCH=mips
  • export OSDEP=linux
  • export CC=$PREFIX/bin/mips-linux-gcc
  • export GCC=$PREFIX/bin/mips-linux-gcc
  • export LD=$PREFIX/bin/mips-linux-ld
  • export RANLIB=$PREFIX/bin/mips-linux-ranlib
  • export AR=$PREFIX/bin/mips-linux-ar
  • export AS=$PREFIX/bin/mips-linux-as
  • export STRIP=$PREFIX/bin/mips-linux-strip
  • export LD_LIBRARY_PATH=$PREFIX/lib/gcc/mips-linux-uclibc/4.4.7/
  • export PATH=$PATH:$PREFIX/bin
  • export USERCOMPILE="-fPIC -I../gmp-6.1.0 -I$PREFIX/include -L$PREFIX/lib"
  • export USERLINK="-L../gmp-6.1.0/.libs"
  • export KERNELSRC=../rtl819x/linux-3.10

主要是參考 CROSSCOMPILE.sh,這個檔案是寫給 arm 用的,但我的是 mips,所以需要小修改。

編譯

  • 修改 buildlin.sh
  • 執行 buildlin.sh
  • 編譯出來的檔案都放在 OBJ.linux.mips,所以只要把該目錄刪除就相當於做 make clean。
  • 如果要做 install,要修改 buildlin.sh,make USE_OBJDIR=true programs 改成 make USE_OBJDIR=true programs install。

問題排除

CC /home/enos/FGN-1000/openswan-2.6.43.1/modobj26/ipsec.mod.o /home/enos/FGN-1000/openswan-2.6.43.1/modobj26/ipsec.mod.c:8: error: variable '__this_module' has initializer but incomplete type /home/enos/FGN-1000/openswan-2.6.43.1/modobj26/ipsec.mod.c:9: error: unknown field 'name' specified in initializer /home/enos/FGN-1000/openswan-2.6.43.1/modobj26/ipsec.mod.c:9: warning: excess elements in struct initializer /home/enos/FGN-1000/openswan-2.6.43.1/modobj26/ipsec.mod.c:9: warning: (near initialization for '__this_module') /home/enos/FGN-1000/openswan-2.6.43.1/modobj26/ipsec.mod.c:10: error: unknown field 'init' specified in initializer /home/enos/FGN-1000/openswan-2.6.43.1/modobj26/ipsec.mod.c:10: warning: excess elements in struct initializer /home/enos/FGN-1000/openswan-2.6.43.1/modobj26/ipsec.mod.c:10: warning: (near initialization for '__this_module') /home/enos/FGN-1000/openswan-2.6.43.1/modobj26/ipsec.mod.c:14: error: unknown field 'arch' specified in initializer /home/enos/FGN-1000/openswan-2.6.43.1/modobj26/ipsec.mod.c:14: error: 'MODULE_ARCH_INIT' undeclared here (not in a function) /home/enos/FGN-1000/openswan-2.6.43.1/modobj26/ipsec.mod.c:14: warning: excess elements in struct initializer /home/enos/FGN-1000/openswan-2.6.43.1/modobj26/ipsec.mod.c:14: warning: (near initialization for '__this_module') make[3]: *** [/home/enos/FGN-1000/openswan-2.6.43.1/modobj26/ipsec.mod.o] Error 1 make[2]: *** [modules] Error 2 make[2]: Leaving directory `/home/enos/FGN-1000/fib003_res/rtl819x/linux-3.10' make[1]: *** [module26] Error 2 make[1]: Leaving directory `/home/enos/FGN-1000/openswan-2.6.43.1' make: *** [module] Error 2

這是因為 kernel module 動態載入功能沒開啟,把 Enable loadable module support 打開即可。

參考資料

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