Msys+Mingw在手 妙用在心!


1 緣起

  平時在一些c++群面,看見很多大學十分努力的學習c++/MFC ,看見在編程語言百花爭芳的時候,C/C++還是很有很有魅力。估計很多初學者使用都是window下的visual stdio 開發工具。 通過這篇文章可以其他的編譯C++工具,融合linux和windows c++開發的能力。

    這么多年來從事過window/linux下c/c++開發,對平時的使用過的開發工具,做一個回顧總結 ,主要介紹Msys+Mingw的工具簡單使用和在Linux交叉編譯win下程序。下面就引出本文要提到的明星Msys+Mingw

2 在window下如何查看實時log文件尾部追加內容?

  開發實際項目,肯定必須有一個log文件,來輸出些日志信息,這樣開發人員可以通過log尋找bugs.

  現在開發語言都提供現成類,輸出日志。

  那如何在window平台下查看這種實時遞增的日記?

      用文本編輯器 world 打開太麻煩了,並且不方便查看尾部追加內容。

      怎么辦呢?

      解決過linux/unix 的朋友就會想到 ,如果有tail 命令就好了,一個tail -f /var/log/a.log 就可以查看日志實時的增量。

      所以的明星登場了

3 msys+mingw  window平台下崇尚gnu精神的實踐者.

    下面看一看baidu 百科是怎么介紹  http://baike.baidu.com/view/371287.htm?fr=aladdin

  Minimal GNU(POSIX)system on Windows,是一個小型的GNU環境,包括基本的bash,make等等。是Windows下最優秀的GNU環境。(是否厭倦了Cygwin蝸牛般的shell環境,試試MSYS中的rxvt)

 

MinGW:即Minimalist GNU for Windows。它是一些頭文件和函數庫的集合,該集合允許人們在沒有第三方動態鏈接庫的情況下使用GCC(GNU Compiler C)產生Win32程序。
MinGW主要由GNU binary utilities、GCC和GDB組成。同時還包括一些必要的庫,例如libc(C Runtime),及專門用於Win32環境的API接口庫。如果你想學習linux環境下的編程,而又不想裝linux,那你就裝一個MinGW吧。

     有了Msys+Mingw,我們就可以在window,就可以學習GCC編程,一致linux下程序到window了.

       百科也把Msys+Mingw的“堂哥Cygwin”缺點說了一下,在Msys+Mingw還沒有流行的時候,大家都使用Cygwin. 只能感嘆"青出於藍 勝於藍" ,Cygwin已經不是“當年的小甜甜” ,變成了“牛大嫂”

4 安裝msys+mingw 很簡單,一鍵安裝.

  直接去Mingw的網站 http://www.mingw.org/,在左側導航點擊download 就到跳轉到sourceforge.net  下載mingw-get-setup.exe (86.5 kB)

  選擇msys-base, mingw32-base, mingw-developer-toolkit,mingw-gcc-g++包,進行安裝

      mingw 安裝選項設置  mysy  install

      默認的安裝路徑C:\MinGW,  進入C:\MinGW\msys\1.0中 ,給msys 創建桌面的快捷方式.

      點擊桌面msys 圖標 ,開始進入msys之旅。

 

5 有圖有真相 -- tail 檢測文件尾部的追加內容

  在msys中 訪問C盤使用/c/ , D盤使用/d/, 其他磁盤,亦復如是。

      下面演示 使用tail 命令檢查D:/test.log 文件尾增量內容,同時使用 echo 向文件追加內容。

     

       的確是大家期待的那樣!!!

       以后再有實時查看window平台下程序文本log的場景,大家成竹在胸了。。

6  給Msys添加左膀wget  "鏡像網站不求人"

      大家可以baidu下wget ,簡單說是linux平台下載文件的程序,應用比較廣。

     本節演示在Msys中怎么編譯,在window平台就可以鏡像個網站,不用求助第三方軟件了。

     首先下載wget-1.15.tar.gz.    下載后拷貝C:\MinGW\msys\1.0\home中。

    
      

       這樣一如就像在Linux 編譯程序一樣,等一會就就編譯完了。 下面就是wget大顯身手的時候--鏡像網站了

 cd  ; wget.exe  -r -p -np -k http://www.xiulian.com/XMZHF/xmzf-index.htm
-r 表示遞歸下載,會下載所有的鏈接,不過要注意的是,不要單獨使用這個參數,因為如果你要下載的網站也有別的網站的鏈接,wget也會把別的網站的東西下載下來,所以要加上-np這個參數,表示不下載別的站點的鏈接.
-np 表示不下載別的站點的鏈接.
-k 表示將下載的網頁里的鏈接修改為本地鏈接.
-p 獲得所有顯示網頁所需的元素,比如圖片什么的.
-E  或 --html-extension   將保存的URL的文件后綴名設定為“.html”

     下載過程日志找圖,生存鏡像的網址目錄 www.xiulian.com 以及相應的目錄。

    

   

       大家是不是已經感覺到開源的偉大,以后在鏡像個網頁,wget 就搞定,再不用那些收費軟件,或者老彈廣告的軟件

     有msys+mingw,linux下的好多軟件,就可以編譯,講給你的window平台插上”翅膀“。

 

     不過大家可能感覺到 用msys編譯的軟件比較慢,不在像在linux編譯軟件快!

     下面就介紹個本最后一個玩法。

7 ”獨家玩法“-mingw-w64  在linux編譯win32/win64 軟件

     首先介紹下環境,我用的是debian7.3系統,運行的virtualbox虛擬機中.

     其次介紹mingw-w64 有2個版本的編譯器

      g++-mingw-w64-i686   - GNU C++ compiler for MinGW-w64 targeting Win32  --生成32位程序
      g++-mingw-w64-x86-64  - GNU C++ compiler for MinGW-w64 targeting Win64  -- 生成64位程序     

     在debian下 我選擇是生成32位程序的g++-mingw-w64-i686,使用apt-get 命令安裝起來很簡單。

     apt-get install binutils-mingw-w64-i686 g++-mingw-w64-i686 mingw-w64-i686-dev mingw-w64-tools

     新建helloword.cpp 文件代碼如下

#include<cstdio>
#include<cstdlib>
#include<iostream>

int main(int argc ,char* argv[])
{
        std::cout << "compile hello world.exe by linux and i686-w64-mingw32-g++\n";
        system("PAUSE") ;
        return 0;
}

    編譯程序  

    i686-w64-mingw32-g++  hellword.cpp -o helloword.exe

    將linux編譯好的helloword.exe  弄到window 運行

    

     是真的。人格擔保。。

     有的看官感覺這太簡單了,不過癮!

8  殺手鐧展示 用linux下的mingw 交叉編譯出運行在window平台的wget

       下載wget源碼,解壓同6節。執行下面幾個命令,就可以編譯出wget.exe

       export CC=i686-w64-mingw32-gcc
   export RANLIB=i686-w64-mingw32-ranlib
       export LIBS=-lpthread
   ./configure --host=mingw32 --without-ssl --disable-ipv6

       make

    下載wget.exe 到window 桌面,運行起來來個截圖,

   

      

9 小結

     前面介紹關於mingw+msys ,一些簡單用法, 有需求有興趣的可以玩一玩,的確能夠讓window下c++/C 開發者眼睛一亮。。有所頓悟。

     非常流行媒體的播放器VLC社區,就使用linux 下mingw 交叉編譯出運行在window下VLC,這也是大家越來越喜歡用Mingw的原因之一。

    如果有任何疑惑,請在這里聯系我,多踩踩帖!

  

 

                       


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM