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-ipv6make
下載wget.exe 到window 桌面,運行起來來個截圖,
9 小結
前面介紹關於mingw+msys ,一些簡單用法, 有需求有興趣的可以玩一玩,的確能夠讓window下c++/C 開發者眼睛一亮。。有所頓悟。
非常流行媒體的播放器VLC社區,就使用linux 下mingw 交叉編譯出運行在window下VLC,這也是大家越來越喜歡用Mingw的原因之一。
如果有任何疑惑,請在這里聯系我,多踩踩帖!