標籤:style blog http color 使用 strong
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++包,進行安裝
預設的安裝路徑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的原因之一。
如果有任何疑惑,請在這裡聯絡我,多踩踩帖!