本文介紹在windows下如何進行Linux開發應用。如何在windows下通過tftp啟動目標板,如何在windows通過NFS與目標板相“溝通”。以及如何在cygwin下生成交叉編譯工具鏈。本文中所有操作均在windows XP下進行。
TFTP伺服器設置
軟體需求:tftpsrv.exe
文件要求:zImage,ramdisk 這兩個文件為用戶自己的啟動文件。
- 在C盤新建目錄c:\tftpserver\
- 將程序TFTPSRV.exe拷入該目錄
- 在c:\tftpserver\目錄下創建tftpboot目錄
- 將zImage和ramdisk拷入tftpboot下
- 確保zImage屬性->安全里的有用戶everyone,並且有執行,讀的許可權(可省略)
- 打開DOS命令窗口,轉入到c:\tftpserver\下
- 在 DOS窗口下鍵入tftpsrv.exe dtftpboot\ ,此時 tftpserver則啟動
註:如右鍵里沒有“安全”選項,則首先確認分區是否是NTFS格式,如不是則更換成NTFS格式,然後在資源管理器里點擊“工具”菜單-“文件夾選項”,將“使用簡單文件共享(推薦)”前的勾去掉即可。如下圖:
Windows下NFS伺服器設置
軟體需求:SFU
文件要求:passwd ,group 這兩個文件為用戶自己的密碼和組文件。
示例:passwd內容
root:x:0:0:root:/root:/bin/sh
group內容
root:x:0:
安裝
- 將passwd和group兩個文件直接複製到本地C:\盤
- 運行SFU35BETA_EN.exe,這是一個自解壓文件,指定一個目錄,釋放壓縮的文件。
- 在釋放目錄中,運行SfuSetup.msi,出現Micorsoft Windows Services for UNIX Setup wizard窗口。
- 點擊Next,出現Customer Information窗口。
- 點擊Next,出現License and Support Information窗口,選中“I accept the agreement”。
- 點擊Next,出現Installation Options窗口。
- 選擇Custom Installation,點擊Next,出現Selecting Components窗口。
- 點擊Utilities目錄項,選擇Entire feature will not be available,該項的圖標變為一個棕色的叉號。
- 對“Interix GNU components”“Remote Connectivity”使用相同的選擇。
- 點擊NFS目錄項,選擇Entire Feature (including all subfeature if any) will be installed on local hard drive,該項的圖標變為一個白色背景的驅動器。
- 對“Authentication tools for NFS”使用相同的選擇, 選擇Entire Feature (including all subfeature if any) will be installed on local hard drive。
- 最終只有“Authentication tools for NFS”和“NFS”兩項是完全安裝,其他各項都不安裝。
- 點擊Next,出現User Name Mapping窗口,選中Password and group files。
- 點擊Next,在Password file path and name下的空白欄中輸入C:\passwd,在Group file path and name下的空白欄中輸入C:\group。
- 點擊Next,出現Installationg Location窗口,選擇安裝位置。
- 點擊Next,開始安裝(約21MB)。最後選擇Finish,結束安裝。如提示重啟,則重啟。 (以上安裝過程比較簡單,引用網路上文章。)
註:與卡巴斯基互聯網套裝6.0有衝突,需安裝之前關閉卡巴斯基。
共享Windows主機目錄
- 不需重啟,對要共享的目錄,右鍵點擊出現下拉菜單,選擇“屬性”,出現目錄屬性窗口。如圖:
- 選擇“NFS Sharing”選項卡,選中share this folder;指定共享名(Share name,一個簡單的名字,大小寫無關,如dir);字元編碼(Encoding)選擇GB2312-80;選中Allow anonymous access;點擊Permissions,出現NFS Share Permissions窗口,設置共享文件夾讀寫屬性。如圖:
- 在Type of access下拉菜單中選擇Read-Write(可讀可寫);要使目標板對本機文件有root許可權,選中Allow root access。
- 設置完,點擊OK按鈕,回到目錄屬性窗口。
- 點擊“安全”選項,添加everyone,使之允許讀取,控制。如圖
點擊“應用”或“確定”,使共享生效。
要設置NFS屬性,選擇開始->程序->Windows Services for Unix->Services for Unix Administration。 - 出現設置窗口后,點擊 左邊子窗口User Name Mapping,再點擊標籤欄“Map”,然後點擊 show User Maps,出現如下畫面:
- 在windows user name 和unix user name框中分別輸入guest和root,然後點擊add,則添加到mapped users中。
- 然後再點擊 show group Maps, 在windows group name 和unix group name框中分別輸入guests和root,然後點擊add,則添加到mapped groups中。
註:如右鍵里沒有“安全”選項,則首先確認分區是否是NTFS格式,如不是則更換成NTFS格式,然後在資源管理器里點擊“工具”菜單-“文件夾選項”,將“使用簡單文件共享(推薦)”前的勾去掉即可。如下圖:

啟動目標板,並在目標板上掛裝Windows目錄
將主機IP設為192.168.1.1,交叉線與目標板相連,啟動目標板,主機啟動tftp服務,運行mount命令來掛裝NFS目錄:
mount –t nfs –o nolock 192.168.1.1: share_name /mnt
share_name為共享的目錄名。顯示一下目錄內容,應為Windows機器上的共享NFS目錄內容。
這樣,我們編譯好的程序便可以放入共享目錄中,然後在目標板上運行。
註:如出現網路不通的問題,則應檢查本地連接是否有防火牆,如有,則去掉防火牆保護。
Windows下Cygwin配置
在Windows下進行Linux開發,當然要用到Cygwin了。它就是提供了在Windows下開發Linux程序的環境。
- 從http://cygwin.com/安裝Cygwin。運行安裝程序,進入Select Packages,Base,Devel, Libs下安裝包全選,其他安裝包酌情選擇。選擇安裝目錄如C:\Cygwin
- 下載腳本文件http://buildroot.uclibc.org/downloads/snapshots/buildroot-snapshot.tar.bz2
- 將buildroot-snapshot.tar.bz2複製到C:\cygwin\usr\src下
- 運行cygwin的shell,在cygwin環境里用tar –xvjf解壓縮buildroot-snapshot.tar.bz2
tar xvjf buildroot-snapshot.tar.bz2
cd buildroot - 配置uClibc 編譯系統
make menuconfig
裡面有許多配置,我的配置是arm ,arm920T;在buildroot里選擇所需的交叉編譯工具及其版本。我選擇的是linux2.6.19.2 kernel headers,uClibc 0.9.28,binutil 2.17,gcc3.4.2,gdb6.3等 - 下載這些編譯工具源碼包到目錄buildroot\dl。
- 建立Uclibc交叉編譯工具鏈。
make - 如遇到編譯錯誤,則繼續make,直至編譯結束,編譯完成後,將在usr\src\buildroot下生成build_arm文件夾,裡面的staging_dir\bin目錄下的文件便是我們的編譯工具
- 將C:\cygwin\bin下cygwin1.dll拷貝到你的buildroot目錄下build_arm\staging_dir\bin裡面。
- 將編譯路徑加入到環境變數中:
在cygwin的shell 里執行PATH=$PATH:/usr/src/buildroot/build_arm/staging_dir/bin - 這樣就可以在cygwin下用arm-linux-gcc 來編譯程序了,用法
arm-linux-gcc source.c