配置Windows下Android的NDK環境:安裝,更新cygwin…

來源:互聯網
上載者:User

最近想看看Android的JNI,然後又不想切換回Linux,所以只好選擇在Windows+cygwin+NDK這種方式了,

開始安裝cygwin環境的時候一般不懂得怎麼安裝,就算安裝之後,才會發現很多包都沒有呢,,,

好像網上說需要全部安裝devel這個類別下的包,,

還好網上看了一篇文章,是安裝與更新cygwin的,轉載記錄一下,,,

原文地址:

http://www.ibm.com/developerworks/cn/aix/library/au-spunix_cygwin/

 

 

如果您是本專欄的忠實讀者,應該已經熟悉了許多 UNIX 行話。“用管道重新導向輸出”、“殺死進程” 和 “使用萬用字元” 等行話對於新手來說很奇怪,但是您應該很熟悉這些說法了。

對於 UNIX 本身,也有各種稱呼。IBM 大型主機使用者說各種帶字母 “z” 的行話,比如 IBM z/OS 和 System z9 Virtual Machine (z/VM);嵌套系統開發人員使用 eCos 這個詞;在聊天中還會提到其他許多風格的 UNIX,比如 Linux、FreeBSD、Sun Solaris 和 Mac OS X。現代資訊技術使用各種各樣的方言,簡直就像是聖經中巴別塔的故事。

當然,也有不少人說 Windows 術語,儘管大多數人只掌握 “指向和單擊” 這樣的簡單詞彙。經過 20 年的發展,大多數 Windows 使用者已經忘了古老的 DOS 術語。

但是,與 UNIX shell 相比,Windows COMMAND 公用程式的功能實在很差;因此,UNIX 使用者通常認為 Windows 是一種讓人灰心喪氣的平台。對於習慣於使用豐富的命令列工具集的 UNIX 軟體開發人員來說,Windows 尤其彆扭。對於 UNIX 開發人員來說,使用 Windows 簡直就像是到了陌生的外國。

幸運的是,Cygwin(見 參考資料)在 Windows 環境中提供大家熟悉的一片天地,就像是美國人在法國找到了麥當勞。

Cygwin 是一個用於 Windows 的類 UNIX shell 環境。 它由兩個組件組成:一個 UNIX API 庫,它類比 UNIX 作業系統提供的許多特性;以及 Bash shell 的改寫版本和許多 UNIX 公用程式,它們提供大家熟悉的 UNIX 命令列介面。前一個組件是一個 Windows 動態連結程式庫 (DLL)。後一個組件是一組基於 Cygwin DLL 的程式,其中許多是用未經修改的 UNIX 原始碼編譯的。它們合在一起提供大家熟悉的 UNIX 環境。

在本期的 對話 UNIX 專欄中,我們要安裝 Cygwin,討論它的命令列介面 (CLI),並構建標準 Cygwin 發行版中未包含的開放源碼,以此體會把 UNIX 應用程式(至少是一部分 UNIX 應用程式)遷移到這個類比環境是多麼容易。

版本詳細資料

到編寫本文時,Cygwin DLL 的目前的版本是 1.5.25-15。可以在近期的任何 Windows 商業版本上安裝 Cygwin,但是 Windows CE 除外。(但是,未來的 Cygwin 版本將不再支援 Windows 95、Windows 98 和 Windows ME)。本文給出的樣本和圖基於帶 Service Pack 3 (SP3) 的 Windows XP Professional,使用的電腦是採用 Coherence 模式的 Apple MacBook,並使用 Parallels version 3.0。

安裝 Cygwin

與這裡介紹的其他軟體不同,Cygwin 使用 Windows 安裝程式。Cygwin setup.exe 檔可以重新安裝軟體,可以添加、修改或升級 Cygwin 配置的組件。

在 Windows 系統上開啟瀏覽器,通過訪問 http://cygwin.com/setup.exe 下載 Cygwin 安裝程式。安裝程式本身非常小(大約 600KB),因為大多數 Cygwin 軟體是在安裝過程中下載的。完成下載之後,按照以下步驟安裝 Cygwin:

  1. 運行安裝程式。圖 1 顯示 Cygwin 歡迎畫面。

    圖 1. 在安裝 Cygwin 期間出現的第一個對話方塊

  2. 單擊 Next 進入下一個螢幕,選擇要執行的安裝類型。
  3. 單擊 Install from Internet
  4. 單擊 Next,然後選擇一個安裝目錄。

    配置安裝的視窗見圖 2。

    圖 2. Cygwin 安裝選項

    在大多數情況下,推薦的安裝選項是合適的,也可以進行定製,但是要注意幾點:

    • 不要在 Windows 系統的根目錄(比如 C:)中安裝 Cygwin。最好把 Cygwin 安裝在它自己的子目錄中,比如預設目錄(C:/cygwin)或 C:/Program Files/cygwin。(您選擇的目標目錄將成為類比的 UNIX 環境的根目錄 /。例如,如果在 C:/cygwin 中安裝,那麼虛擬 /usr/bin 實際上是 C:/cygwin/usr/bin)。
    • 對於 Install For 選項,不要選擇 Just Me
    • Default Text File 類型設定為 Unix,從而儘可能提高與其他 UNIX 機器上儲存的現有檔案的相容性。
  5. 單擊 Next

    在下一個視窗中,選擇一個儲存 Cygwin 所需的資料的目錄。不要選擇前一步中選擇的 Cygwin 目錄。 如果可能的話,應該在有至少 1GB 空閑空間的磁碟機上建立或選擇一個目錄。

  6. 再次單擊 Next,選擇使用的 網際網路連線類型。通常應該選擇 Direct Connection。
  7. 再次單擊 Next

    稍等一會兒,Cygwin 會下載當前的鏡像網站列表,讓您選擇一個鏡像網站,見圖 3。如果不確定應該選擇哪個網站,就選擇地理位置比較近的網站。

    圖 3. 選擇您認為可靠的或地理位置比較近的安裝網站

    經過短暫的延遲之後,安裝程式顯示可用的類別和包的完整列表。圖 4 顯示一個類別的部分內容。單擊加號 (+) 展開對應的類別;單擊 “迴圈” 標誌在 Skip(忽略此包)和包的所有可用版本之間迴圈。如果 Cygwin 提供一個公用程式的多個版本,應該選擇滿足您的需求的執行個體。順便說一下,如果選擇 B 列,就會下載二進位包;選擇 S,也會下載原始碼。

    圖 4. 選擇最適合需要的包和執行個體

    在 Cygwin 中可用的包超過 1,000 個,所以應該只選擇您需要的類別和包。(安裝所有 Cygwin 包會佔用超過 800MB 的磁碟空間)。以後隨時可以添加整個類別或單獨的包:只需重新運行 Cygwin 安裝程式。(還可以在任何時候用相同的安裝程式刪除或更新包)。搜尋 Cygwin 包列表(參見 參考資料),檢查您喜歡的 UNIX 公用程式是否在 Cygwin 中可用。

  8. 選擇您需要的工具之後,單擊 Next,下載過程開始!

    進度條分別反映每個包的下載進度、總下載進度和磁碟使用量。圖 5 是在我的測試電腦上在安裝期間截取的螢幕圖。

    圖 5. Cygwin 下載大量軟體,所以請耐心等待

    最後,安裝程式安裝軟體並(可選地)在 Start 菜單和案頭中添加捷徑。單擊 Finish

  9. 通過使用 Start 菜單或雙擊 Cygwin 表徵圖(如果添加了這些捷徑的話),啟動 Cygwin;也可以執行 Cygwin 目錄中的 Cygwin 指令碼(比如 C:/cygwin/Cygwin.bat)。

    圖 6 顯示第一次啟動 Cygwin 時的情況:它建立您的主目錄,執行 shell 開機檔案,顯示提示。現在可以運行 UNIX 命令了!

    圖 6. 現在可以在 Windows 中使用 UNIX 命令了!

    例如,試一下 ls -atype touch。後一個命令表明 touch 是可執行檔 /usr/bin/touch。

回頁首

在 Windows 中發揮 UNIX 的優勢(反之亦然)

Cygwin 在 Windows 中幾乎完整地類比一個 UNIX shell。實際上,它把這兩種作業系統很好地結合在一起了。例如,可以運行 df -h 命令顯示 “UNIX” 機器上的空閑磁碟空間。圖 7 顯示結果。

圖 7. 是 Windows 上的 UNIX 檔案系統,還是 UNIX 上的 Windows 檔案系統?

正如 前面提到的,Cygwin 安裝目錄作為虛擬 UNIX 系統的根目錄。Cygwin 把安裝目錄中的子目錄映射到 UNIX 目錄。它以單獨的卷的形式提供 Windows 磁碟機,比如 /cygwin/c。可以使用這樣的虛擬路徑啟動 Windows 程式。請嘗試輸入 /cygwin/c/Program/ Files/Internet/ Explorer/IEXPLORE.EXE 從命令列啟動 Windows Internet Explorer。(還可以使用 Tab 鍵自動延伸路徑的元素)。

順便說一句,如果要把 Windows 路徑名轉換為等效的 UNIX 路徑名或者相反,可以試試內建命令 cygpath。在預設情況下,cygpath 產生 UNIX 路徑名。使用 -w 選項產生 Windows 路徑。

$ cygpath -w /cygwin/c/Program/ Files/Internet/ Explorer/IEXPLORE.EXEc:/Program Files/Internet Explorer/IEXPLORE.EXE

 

還有協助溝通這兩個環境的其他特性:

  • Cygwin 提供它自己的 lpr(/usr/bin/lpr 而不是 Windows 的 LPR.EXE),可以直接從類比的 UNIX 環境進行列印。只需把 PRINTER 環境變數設定為 //server/printer_name 或 //server/printer_name 這樣的 Cygwin UNC;前向斜杠和反向斜杠都可以,在 Cygwin 中的其他地方也是如此。
  • 在 Cygwin 中用 ln -s 建立的符號連結在 Windows 中被解釋為捷徑。同樣,Windows 捷徑在 Cygwin 中被解釋為符號連結。因此,可以使用 Windows 捷徑帶參數啟動 UNIX 命令。
  • 因為 Cygwin 提供完整的 Bash shell,所以可以使用上述的所有相容特性(和其他特性)編寫 UNIX shell 指令碼來維護 Windows!

    例如,可以使用 UNIX find 在磁碟機上搜尋資料。請注意一點:在 Windows 檔案名稱中常常使用空格。為了保持完整的檔案名稱(請記住,UNIX 參數以空格分隔),一定要使用 find -print0xargs -0

回頁首

如何更新和擴充 Cygwin

正如前面提到的,在任何時候都可以通過運行 Cygwin 安裝程式添加、刪除和更新 Cygwin 類別和包。我們來添加幾個軟體開發包,以便像在傳統的 UNIX 系統上那樣從原始碼構建程式。

再次運行 Cygwin setup.exe 應用程式,依次通過前幾個對話方塊,直到到達 Select Packages 視窗,見 圖 4。展開 Devel 類別,使用迴圈控制項選擇以下包的最高版本:

  • autoconf2.1
  • automake1.10
  • binutils
  • gcc-core
  • gcc4-core
  • gdb
  • pcre
  • pcre-devel

做出選擇之後(為了滿足依賴性,可能會自動選擇其他包),單擊 Next 開始更新。與前面一樣,下載和安裝過程需要一定的時間(開發包往往相當大)。

在此期間,開啟一個瀏覽器並通過訪問 http://ftp.gnu.org/gnu/wget/wget-1.11.4.tar.gz 下載 GNU wget 公用程式的最新原始碼。(wget 是一種命令列工具,它可以下載任何東西。關於此工具的更多資訊,請參見 參考資料)。使用 Cygwin 把此檔案複製到 Cygwin 中的主目錄,展開壓縮檔。清單 1 顯示壓縮檔的內容。

清單 1. wget-1.11.4.tar 的內容

$ cp /cygdrive/c/Documents/ and/ Settings/Martin/My/ Documents/wget-1.11.4.tar ~$ tar xzvf wget-11.4.tarwget-1.11.4/wget-1.11.4/AUTHORSwget-1.11.4/NEWSwget-1.11.4/COPYINGwget-1.11.4/configure.batwget-1.11.4/ChangeLogwget-1.11.4/ChangeLog.READMEwget-1.11.4/msdos/wget-1.11.4/msdos/ChangeLogwget-1.11.4/msdos/Makefile.DJ...wget-1.11.4/src/cookies.cwget-1.11.4/src/http.hwget-1.11.4/src/log.hwget-1.11.4/src/sysdep.hwget-1.11.4/src/alloca.cwget-1.11.4/src/getopt.cwget-1.11.4/src/gnu-md5.hwget-1.11.4/src/ftp.cwget-1.11.4/config.subwget-1.11.4/config.guess$ 

 

當 Cygwin 下載和安裝過程完成時,單擊 Finish。現在可以從原始碼構建 wget 公用程式了。

$ cd wget-1.11.4$ ./configureconfigure: Configuring for GNU wget 1.11.4...creating po/Makefile$ makegcc -I. ...$ make install.../usr/bin/install -c -m 644 ./wget.1 /usr/local/share/man/man1/wget.1$ type wget/usr/local/bin/wget

 

為了測試這個新的公用程式,在 Cygwin 中運行它並下載 wget 原始碼:

$ /usr/local/bin/wget http://ftp.gnu.org/gnu/wget/wget-1.11.4.tar.gz

 

稍後就會得到一個新的原始碼壓縮檔。使用 Cygwin 安裝程式從 Cygwin 存放庫獲得公用程式是最簡單的方法,但是也可以在 Cygwin 中構建下載的或自己的原始碼。在 Cygwin 中可以使用全套 UNIX 開發工具,包括最流行的指令碼程式設計語言。

如果您不喜歡 Microsoft Visual Studio 等 Windows 開發工具,甚至可以用 Cygwin 中的 UNIX 編譯器和工具構建原生 Windows WIN32 應用程式。(這些應用程式不在 UNIX 上運行。要想在 UNIX 上運行 Windows 應用程式,可以考慮使用 WINE。更多資訊參見 參考資料)。

回頁首

結束語

Cygwin 並不是完美的 UNIX 類比環境,但已經相當好了。核心組件的文檔很完善,而且特別方便,它們介紹了類比 DLL 中的限制和安全風險。如果希望把複雜的 UNIX 包遷移到 Cygwin,請參考開發人員指南(參見 參考資料),評估 Cygwin 的支援是否能夠滿足您的 API 需要。

Cygwin 最棒的特性可能是它與 Windows 的整合。使用 Cygwin 和它的 UNIX 命令列來操縱系統可以大大提高生產力。建議在您的 shell PATH 變數中包含 Windows 的 Program Files 中的子目錄,這樣只需輸入程式名,就能夠啟動路徑中的任何二進位程式。

更棒的是,Cygwin 可以在同一個視窗中管理多個作業。按 Control-Z 可以暫停正在啟動並執行作業;輸入 bgfg 分別在後台和前台運行作業;輸入 jobs 管理作業列表。當然,Cygwin 還可以對輸入和輸出進行重新導向,可以通過管道把一個命令的輸出發送給另一個命令。

Cygwin 真的很不錯。

 

參考資料

學習

  • 您可以參閱本文在 developerWorks 全球網站上的 英文原文 。
  • 對話 UNIX:閱讀本系列中的其他文章。
  • 瞭解關於 Cygwin 的特性的更多資訊。
  • 閱讀官方指南 Cygwin User's Guide。
  • 查閱 Cygwin 包列表。
  • 閱讀 Cygwin API Reference,瞭解與 UNIX 的相容性以及如何遷移到 Cygwin。
  • 瞭解關於 UNIX shell 的更多資訊。
  • 瞭解關於 WINE 的更多資訊,WINE 是一種開放源碼的 Windows API 實現。
  • AIX and UNIX 專區:developerWorks 的“AIX and UNIX 專區”提供了大量與 AIX 系統管理的所有方面相關的資訊,您可以利用它們來擴充自己的 UNIX 技能。
  • AIX and UNIX 新手入門:訪問“AIX and UNIX 新手入門”頁面可瞭解更多關於 AIX 和 UNIX 的內容。
  • AIX and UNIX 專題匯總:AIX and UNIX 專區已經為您推出了很多的技術專題,為您總結了很多熱門的知識點。我們在後面還會繼續推出很多相關的熱門專題給您,為了方便您的訪問,我們在這裡為您把本專區的所有專題進行匯總,讓您更方便的找到您需要的內容。
  • 在 技術書店 瀏覽關於這些主題和其他技術主題的圖書。

獲得產品和技術

  • 下載 Cygwin installer for Windows。
  • 下載並學習 wget

討論

  • 參與 developerWorks blogs 加入 developerWorks 社區。
  • 參與 AIX 和 UNIX 論壇:
    • AIX 論壇
    • 針對開發人員的 AIX 論壇
    • Cluster Systems Management
    • IBM Support Assistant 論壇
    • 效能工具論壇
    • 虛擬化論壇
    • 更多 AIX 和 UNIX 論壇
    • AIX Networking

關於作者

Martin Streicher 是一位 Ruby on Rails 自由開發人員和 Linux Magazine 的前主編。Martin 畢業於 Purdue University 並獲得電腦科學學位,從 1986 年起他一直從事 UNIX 類系統的編程工作。他喜歡收集藝術品和玩具。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.