最近幾天搞 wxWidgets,由于要同時(shí)編譯應(yīng)用程序的 Windows 版本,又懶得在虛擬機(jī)里面編譯程序,于是想到用交叉編譯的方式在 Linux 上編譯好 Windows 版本的程序,再用 Wine 或者虛擬機(jī)來執(zhí)行。試了一下,這種方法很好用,比在虛擬機(jī)里面編譯程序快很多。
我的操作系統(tǒng)是 debian sarge,其中已經(jīng)有 mingw32 編譯器,只需安裝:
apt-get install mingw32
這會(huì)安裝好 mingw32 交叉編譯系統(tǒng),用 i586-mingw32msvc-gcc 即可為 Windows 編譯程序。
在編譯 wxWidgets 的 Windows 版本之前,需要安裝 DirectX 的頭文件。大概是由于版權(quán)之類的原因,在 Debian 的 mingw32 中并未包含 DirectX 的頭文件,只包含了 DirectX 的庫(kù),因此需要自己安裝。如果不安裝,在編譯 wxWidgets 的時(shí)候會(huì)有警告,并且系統(tǒng)不會(huì)產(chǎn)生 wxDisplay 這個(gè)類。安裝并不復(fù)雜,只要從網(wǎng)絡(luò)上找到相關(guān)的頭文件和庫(kù)文件,并解壓到 /usr/i586-mingw32msvc 目錄中即可。
然后就可以編譯 wxWidgets 了,下載并解壓源碼后,用如下命令可以編譯:
./configure --host=i586-mingw32msvc --target=i586-mingw32msvc --prefix=~/Workshop/mingw32 --enable-monolithic --disable-shared
make; make install-strip
make -C contrib; make -C contrib install-strip
編譯完成后,進(jìn)入 samples 目錄,隨便找一個(gè)例程 make 一下,便可產(chǎn)生 exe 文件了。要執(zhí)行這個(gè)文件,需要 mingwm10.dll 這個(gè)文件,在 Debian 中,此文件位于 /usr/share/doc/mingw32-runtime 目錄中,把它復(fù)制到當(dāng)前目錄,便可用 wine 執(zhí)行了。如果沒有問題,也可以把這個(gè)文件仍到 Wine 的 C:\Windows\system32 目錄中。
聯(lián)系客服