對於當前不在OpenWRT repository中的軟件,如果是用源碼形式發布的,那么可以用OpenWRT Buildroot進行交叉編譯。
- 首先編譯好Buildroot(一般編譯過一次固件,就已經編譯好了)
- 找到目錄staging_dir/toolchain-architecture_gcc-complierver_uClibc-libcver/bin/
- 把它加入到環境變量PATH:
PATH=$PATH(上面提到的目錄)
export PATH
- 把環境變量STAGING_DIR設置為上面提到的toolchain目錄:
STAGING_DIR=toolchain目錄
export STAGING_DIR
- 設置編譯設置中的一些參數,我這里用到的是修改makefile:
make CC=architecture-openwrt-linux-uclibc-gcc LD=architecture-openwrt-linux-uclibc-ld
- 如果缺一些頭文件或者庫文件,那么需要修改CFLAGS和LDFLAGS,讓它們指向staging_dir/target-architecture_uClibc-libcver/usr/include和.../usr/lib目錄
編譯單獨的安裝包
- 首先make menuconfig,在里面選擇好需編譯的軟件包和它依賴的庫。
- 然后make tools/install
make toolchain/install
- 最后就可以編譯需要的軟件了:
make package/***/compile
make package/***/install
make package/***/index
這時就可以在bin目錄下找到軟件的安裝包了。
(最后一個make index不知道是什么東西,不運行已經能在bin下找到.ipk了)
這次主要是路由器又出問題了,於是重新編譯了一下固件(TP720的),發現認證上不去網,於是嘗試交叉編譯xd-h3c,還是不行,然后編譯了個tcpdump裝到路由上,抓包,現象很詭異,好像路由器的處理器老化了一樣,收到包后很久才回復。可能是驅動出 了問題?不知道。。最后等了很久就認證成功了。
當時折騰得煩得很,差點一怒之下買個樹莓派或者cubieboard,不想再忍受這種痛苦了。
當窮學生就是慘,以后工作了應該能使勁折騰了。
期間看了下8021.X協議。這個協議主要是用來認證的,單說以太網上面,它把一個物理端口划分為邏輯上的兩個端口,其中一個用來認證,所有的認證包都能通過,另一個用來發送正常的數據包,但是只有當認證成功了的時候那個端口才開放。