CentOS_7 OpenWrt Eclipse 環境搭建與 Dr.com 開發筆記

一:內核的編譯.javascript

1,linux 編譯環境的搭建與源碼的準備工做html

2,經常使用軟件的安裝 (make menuconfig)java

3,  針對TP-Link WR740N 一些軟件的openwrt 的移植linux

4,內核的編譯c++

二:OpenWrt  Eclipse 編譯環境的搭建git

1,OpenWrt 平臺依賴包的安裝github

2,Eclipse 環境的配置shell

3, 遠程調試設置服務器

三:OpenWrt 上 dr.com移動的編寫與移植網絡

1,源碼的分析

2,源碼的移植

3,功能的實現

4,程序的運行與安裝

四,參考

 

一:1,編譯環境的搭建與源碼的準備工做

內核的編譯須要在linux環境下進行,因此預先安裝該系統.針對CentOS須要預先安裝相應的依賴包.

 

yum install subversion binutils bzip2 gcc gcc-c++ gawk gettext flex ncurses-devel zlib-devel make patch unzip perl-ExtUtils-MakeMaker  glibc glibc-devel glibc-static 
quilt ncurses-lib sed sdcc intltool sharutils bison wget git-core openssl-devel xz 

經過git獲取源碼,源碼的地址能夠GOOGLE搜索本身須要的版本.源碼從這裏下載    https://downloads.openwrt.org/

git clone git://git.openwrt.org/14.07/openwrt.git
 

進入源碼目錄並下載相關軟件包

cd openwrt
./scripts/feeds update -a
./scripts/feeds install -a

2,經常使用軟件的安裝 (make menuconfig)

linux 內核的配置相對比較人性化,使用make menuconfig大大簡化了操做.

make defconfig
make prereq
make menuconfig

具體軟件的選擇能夠參考這裏 http://www.right.com.cn/forum/thread-83746-1-1.html,再也不作多於介紹.若是不想添加什麼軟件,能夠簡單作如下修改:

Target Systme--->  修改成本身的平臺cpu型號

Target Profile --->修改成本身的型號,個人是TP-LINK WR740N

Target Images ---> suashfs --->

LuCI ---> Collection ---> luci

LuCI--->  Applications--->luci-app-samba

完成以後退出保存便可.

3,針對TP-Link WR740N 一些軟件的openwrt 的移植

對於國內的型號和國內的型號略有不一樣,因此原源碼的端口部分須要作簡單修改.

(1)解決WAN 口在 LAN4位置的錯誤.找到文件mach-tl-wr741nd-v4.c,在目錄(你源碼的目錄)/target/linux/ar71xx/files/arch/mips/ath79/下,將代碼  ath79_setup_ar933x_phy4_switch(true, true); 改成ath79_setup_ar933x_phy4_switch(false, false);或者直接刪掉.

(2)解決燈位置不對的問題.LAN4 的燈在 WAN的位置,只須要修改上面文件的宏定義部分,將TL_WR741NDV4_GPIO_LED_WAN 修改成 17, TL_WR741NDV4_GPIO_LED_LAN4 修改成13便可.

(3)打開wifi 開關,  package/kernel/mac80211/files/lib/wifi/mac80211.sh  看到 REMOVE THIS LINE TO ENABLE WIFI ,因此須要註釋掉下面的一行代碼即可以使能WIFI了.

(4)修改flash 大小.修改 ./tools/firmware-utils/src/mktplinkfw.c 將WR740對應的關聯字段 "4" 和 "4m"  改爲 "8" 和"8M".

修改   ./target/linux/ar71xx/image/Makefile, 把740nd最後的4Mlzma改爲了8Mlzma或16Mlzma  .

4,內核的編譯

內核編譯過程當中須要聯網,會下載大量的編譯依賴包,部分URL會下載不了,能夠到這裏下載http://dl.zjuqsc.com/router/openwrt/dl/    放到源碼目錄下   ./dl   目錄便可.

使用這個命令進行編譯         make -j5 V=99 2>&1 |tee build.log |grep -i error  ,日誌會在當前 源碼目錄,對於第一次編譯最好不使用  -j  參數,便於出錯時會錯誤查找.內核的編譯大概須要幾個小時,依機器和網絡環境.

二:1,OpenWrt 平臺依賴包的安裝

爲了實現openwrt的在線調試,openwrt端須要安裝一些 ipk包,能夠到這裏下載(https://downloads.openwrt.org/)根據本身對應版本下載相應的包,須要下載的包以下:

(1),DropBear or OpenSSH installed & connections can be established

(2),libstdcpp (optional for C++)

(3),openssh-sftp-server

(3),gdbserver

(4),libthread-db

將包下載到拷貝到openwrt的samba服務器的目錄(提早搭建好的),而後使用命令  opkg install 你的包.ipk 若是須要什麼包下載安裝便可,不得不說openwrt依賴包這塊作的仍是至關不錯的.

2,Eclipse 環境的配置 

 

官方有關於Eclipse 相關配置的說明,不過內容過於老舊.到博客時間最新的版本爲eclipse-cpp-luna-SR2-linux-gtk-x86_64.tar.gz, 能夠從這裏下載關解壓下載的軟件,放到相應的目錄.便完成了安裝.

最新版本的Eclipse 已經集成了 Crosss Compiler 和 Remote System Explorer的功能.

新建工程 Create a new project: Menu → File → New C++ Project ,一直 next 直到這裏,按照你的 CPU添加.

能夠新建一個內置的 hello world 工程測試本身配置是否正確,若是正確,編譯會是下面這個結果.

23:58:57 **** Rebuild of configuration Debug for project openwrt_test ****
Info: Internal Builder is used for build
mips-openwrt-linux-g++ -O0 -g3 -Wall -c -fmessage-length=0 -o src/openwrt_test.o ../src/openwrt_test.cpp 
mips-openwrt-linux-g++ -o openwrt_test src/openwrt_test.o

23:58:59 Build Finished (took 2s.533ms)

3,遠程調試設置  

打開 Remote System Explorer ,右鍵Local -->new 出現下面這個對話框,選擇 linux.

 

填寫你遠程主機的IP地址, connection name能夠填寫容易區分的名子.

選擇 ssh.files.

選擇 processes.shell.linux.

選擇 ssh.files.

 

右鍵你的遠程鏈接,connect,輸入密碼便可鏈接. 對於要求設置 storage 的 password 能夠不用管,cancel便可.成功鏈接以後右鍵 Ssh Terminal-->Launch Terminal 會顯示下面這個狀態,表示已經鏈接成功.

下面進行運行,和debug的一些設置. 右鍵工具欄, Debug-->Debug Configurations.

 右鍵 C/C++ Remote Application--->New . 在Main標籤頁欄, Connection選擇已經創建的那個鏈接, 並設置Remote Absolute Path for C/C++ Application.(務必不要忘記)

 進入 Debugger 標籤頁,設置你的交叉 gdb 路徑 (在你的工具鏈目錄中).

 設置完成以後即可以進行在線調試,並會出現下面提示對話框.

 最終運行的效果以下圖:

三:1,Dr.com 源碼分析與重構

Linux版本的Drcom已經完成,在github倉庫中有 CentOS x64_86版本和 OpenWrt 版本mips_AR7xxx_AR9xxx ,連接以下:

https://github.com/sunke-github/Drcom8021x_linux

https://github.com/sunke-github/Drcom8021x_Openwrt

具體源碼不作詳細分析 ,後期將會添加  UML時序圖,便於後面想閱讀和修改代碼的童鞋.

 

 

參考:

http://wiki.openwrt.org/doc/howto/buildroot.exigence

https://github.com/coverxit/EasyDrcom

相關文章
相關標籤/搜索