這一節描述如何編譯必要的額外套件並安裝到/usr/local。
假如你不想要自己建構這些區域套件,你可以下載編譯好的套件, 壓縮檔的內容取代你的/usr/local目錄,在安裝後(你必須將local-gtk-2.16目錄名稱改為local)你可以忽略下面的指南。
- 下載:msys-2010-11-19-local-gtk-2.16.7z
安裝就留給讀者當作習題來做。(註:這個檔無法下載,所以還是繼續看這份指南吧)
安裝靜態pkg-config執行檔
pkg-config工具是建構一些區域套件必須的工具,我已經提供了一個我們安裝在/usr/local裡的靜態連結,稍後我們會取代為我們自己建的。
解壓縮這個檔案然後安裝pkg-config到/usr/local.
wget -c http://ingar.satgnu.net/devenv/mingw32/files/msys-pkg-config-0.23-static.zip unzip msys-pkg-config-0.23-static.zip install pkg-config.exe /usr/local/bin rm msys-pkg-config-0.23-static.zip pkg-config.exe
這裡有一個錯誤會影響後面的部份,我們安裝pkg-config.sh外覆指令碼作為變通的方法:
cat > /usr/local/bin/pkg-config.sh << "EOF" #!/bin/sh if pkg-config "$@" > /dev/null 2>&1 ; then res=true else res=false fi pkg-config "$@" | tr -d r && $res EOF
讓指令碼可以執行並且設定PKG_CONFIG環境變數指到這個指令碼:
chmod ugo+x /usr/local/bin/pkg-config.sh && cat >> /usr/local/etc/profile.local << "EOF" PKG_CONFIG=/usr/local/bin/pkg-config.sh export PKG_CONFIG EOF
載入改變的profile.local:
. /usr/local/etc/profile.local
參考:
- http://lists-archives.org/gtk/02552-make-errors.html
- http://www.go-evolution.org/Building_Evolution_on_Windows#pkg-config
- 註(2011/01/11):往後的GTK編譯可能會有問題,所以建議直接下載pkg-config.exe statically built version 0.23,放在/usr/local/bin那邊
-
安裝DirectX開發檔案
- 要建構SDL,我們必須安裝directx開發檔案:
cd /usr/local wget -c http://www.libsdl.org/extras/win32/common/directx-devel.tar.gz tar xf directx-devel.tar.gz rm directx-devel.tar.gz
建構zlib
zlib是一個壓縮函式庫。
執行下面的命令來建構跟安裝zlib dll:
cd $LOCALBUILDDIR && wget -c http://www.zlib.net/zlib-1.2.5.tar.gz && tar xzf zlib-1.2.5.tar.gz && cd zlib-1.2.5 && sed 's/-O3/-O3 -mms-bitfields/' win32/Makefile.gcc >Makefile.gcc
在我們開始建構之前我們需要些修正dll匯出定義檔,假如我們沒有,之後的libxml2會建構失敗。
cat >> win32/zlib.def << "EOF" gzopen64 gzseek64 gztell64 gzoffset64 adler32_combine64 crc32_combine64 EOF
繼續建構dll:
make IMPLIB='libz.dll.a' -fMakefile.gcc && install zlib1.dll $LOCALDESTDIR/bin && install libz.dll.a $LOCALDESTDIR/lib && install libz.a $LOCALDESTDIR/lib && install zlib.h $LOCALDESTDIR/include && install zconf.h $LOCALDESTDIR/include
注意:zlib.pc必須手動建立然後安裝到$LOCALDESTDIR/lib/pkgconfig/
- 註(2011/01/11):這裡我不知為何這樣做,但是我會建議照本篇參考文件Compiling GTK+ 2.20.x for Windows with MinGW來做,你需要用rm –rf zlib-1.2.5來刪除整個資料夾,再重新用tar zxvf zlib-1.2.5.tar.gz來解壓縮,照這樣的指令來操作:
-
make -f win32/Makefile.gcc
cp -iv zlib1.dll /usr/local/bin cp -iv zconf.h zlib.h /usr/local/include cp -iv libz.a /usr/local/lib cp -iv libzdll.a /usr/local/lib/libz.dll.a
雖然不知為何這樣做,但是這樣做,可能可以編譯成功GTK+
建構nasm
Netwide Assembler。
執行下面命令來建構跟安裝nasm:
cd $LOCALBUILDDIR && wget -c http://www.nasm.us/pub/nasm/releasebuilds/2.09.03/nasm-2.09.03.tar.gz && tar xzf nasm-2.09.03.tar.gz && cd nasm-2.09.03 && ./configure --prefix=$LOCALDESTDIR && make && make install
建構SDL
簡單的直接媒體層(Simple Direct Media Layer)是一個跨平台的應用程式架構。
執行下面命令來建構跟安裝SDL:
cd $LOCALBUILDDIR && wget -c http://www.libsdl.org/release/SDL-1.2.14.tar.gz && tar xzf SDL-1.2.14.tar.gz && cd SDL-1.2.14 && ./configure --prefix=$LOCALDESTDIR && make && make install
執行下面命令建構SDL測試程式:
cd test && ./configure && make
執行SDL測試程式:
SDL_VIDEODRIVER=windib testvidinfo cat stdout.txt
SDL_VIDEODRIVER=directx testvidinfo cat stdout.txt
testplatform cat stdout.txt
testdyngl
建構libpng
libng是PNG檔案格式函式庫。
執行下面命令來建構跟安裝libpng:
cd $LOCALBUILDDIR && wget -c http://downloads.sourceforge.net/libpng/libpng-1.4.4.tar.gz && tar xzf libpng-1.4.4.tar.gz && cd libpng-1.4.4 && ./configure --prefix=$LOCALDESTDIR && make && make install
建構libjpeg
libjpg是JPEG檔案格式函式庫。
執行下面命令來建構跟安裝libjpeg:
cd $LOCALBUILDDIR && wget -c http://www.ijg.org/files/jpegsrc.v8b.tar.gz && tar zxf jpegsrc.v8b.tar.gz && cd jpeg-8b && ./configure --prefix=$LOCALDESTDIR --enable-shared --enable-static && make && make install
建構libtiff
libtiff是TIFF檔案格式函式庫。
執行下面命令來建構跟安裝libtiff:
cd $LOCALBUILDDIR && wget -c ftp://ftp.remotesensing.org/pub/libtiff/tiff-3.9.4.tar.gz && tar xzf tiff-3.9.4.tar.gz && cd tiff-3.9.4 && ./configure --prefix=$LOCALDESTDIR && make && make install
建構SDL_image
SDL_image是簡單的直接媒體層(Simple Direct Media Layer)的影像支援函式庫。
執行下面命令來建構跟安裝SDL_image:
cd $LOCALBUILDDIR && wget -c http://www.libsdl.org/projects/SDL_image/release/SDL_image-1.2.10.tar.gz && tar xzf SDL_image-1.2.10.tar.gz && cd SDL_image-1.2.10 && ./configure --prefix=$LOCALDESTDIR && make && make install
建構OpenAL Soft
OpenAL Soft是OpenAL 3D音效API的實作。
執行下面命令來建構跟安裝OpenAL Soft:
cd $LOCALBUILDDIR && wget -c http://kcat.strangesoft.net/openal-releases/openal-soft-1.12.854.tar.bz2 && tar xjf openal-soft-1.12.854.tar.bz2 && cd openal-soft-1.12.854 && cd build && cmake -DCMAKE_INSTALL_PREFIX:PATH=$LOCALDESTDIR -G "MSYS Makefiles" .. && make && make install
建構smpeg
smpeg是mpeg檔案格式函式庫
執行下面命令來建構跟執行smpeg:
cd $LOCALBUILDDIR && svn co -r 389 svn://svn.icculus.org/smpeg/trunk smpeg-389 && cd smpeg-389 && ./autogen.sh && ./configure --prefix=$LOCALDESTDIR --enable-mmx --disable-gtk-player --disable-opengl-player --disable-gtktest && make CXXLD='$(CXX) -no-undefined' && make install
建構libogg
libogg是ogg位元流格式函式庫
執行下面命令來建構跟安裝libogg:
cd $LOCALBUILDDIR && wget -c http://downloads.xiph.org/releases/ogg/libogg-1.2.1.tar.gz && tar xzf libogg-1.2.1.tar.gz && cd libogg-1.2.1 && LDFLAGS='-mwindows' ./configure --prefix=$LOCALDESTDIR && make && make install
建構libvorbis
libvorbis是vorbis音訊格式函式庫
執行下面命令來建構跟安裝libogg(註:看到這裡作者都只用複製貼上的功能來做了,應該是libvorbis,我想你應該很害怕了吧):
cd $LOCALBUILDDIR && wget -c http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.2.tar.gz && tar xzf libvorbis-1.3.2.tar.gz && cd libvorbis-1.3.2 && LDFLAGS='-mwindows' ./configure --prefix=$LOCALDESTDIR && make LIBS='-logg' && make install
建構SDL_mixer
SDL_mixer是簡單的直接媒體層(Simple Direct Media Layer )的音效支援函式庫
執行下面命令來建構跟安裝libogg:
cd $LOCALBUILDDIR && wget -c http://www.libsdl.org/projects/SDL_mixer/release/SDL_mixer-1.2.11.tar.gz && tar xzf SDL_mixer-1.2.11.tar.gz && cd SDL_mixer-1.2.11 && ./configure --prefix=$LOCALDESTDIR && make && make install
注意:假如你沒有更新msys bash套件,建構會失敗。
註(ㄚ琪):如果你有C:Program FilesSQLLIBINCLUDE之類的INCLUDE的環境變數設定的話,在make的時後會錯誤,所以請注意!
建構curl
curl是一個使用URL語法來傳輸資料的命令列工具
執行下面命令建構跟安裝curl:
cd $LOCALBUILDDIR && wget -c http://curl.haxx.se/download/curl-7.21.2.tar.gz && tar xzf curl-7.21.2.tar.gz && cd curl-7.21.2 && ./configure --prefix=$LOCALDESTDIR --without-ssl && make && make install
建構pdcurses
Public Domain Curses是curses函式庫的實作
執行下面命命來建構跟安裝pdcurses:
cd $LOCALBUILDDIR && wget -c http://downloads.sourceforge.net/project/pdcurses/pdcurses/3.4/PDCurses-3.4.tar.gz && tar xzf PDCurses-3.4.tar.gz && cd PDCurses-3.4 && cd win32 && cat mingwin32.mak | sed 's|exp-|/exp-|g' > mingwin32.new && mv mingwin32.new mingwin32.mak && cat mingwin32.mak | sed 's|type|cat|g' > mingwin32.new && mv mingwin32.new mingwin32.mak && cat mingwin32.mak | sed 's|copy|cp|g' > mingwin32.new && mv mingwin32.new mingwin32.mak && cat mingwin32.mak | sed 's|del|rm|g' > mingwin32.new && mv mingwin32.new mingwin32.mak && make -f mingwin32.mak libs && install pdcurses.a $LOCALDESTDIR/lib/libpdcurses.a && make -f mingwin32.mak clean && make -f mingwin32.mak DLL=Y libs && install pdcurses.dll $LOCALDESTDIR/bin && cd .. && install curses.h $LOCALDESTDIR/include
注意:在install指令碼裡sed lines使用他們的UNIX相同的命令來取代DOS命令。
建構freeglut
freeglut是一個OpenGL 工具包的免費實作
執行下面的命令來建構跟安裝freeglut:
cd $LOCALBUILDDIR && wget -c http://downloads.sourceforge.net/project/freeglut/freeglut/freeglut-2.6.0.tar.gz && tar xzf freeglut-2.6.0.tar.gz && cd freeglut-2.6.0 && ./configure --prefix=$LOCALDESTDIR && make && make install
執行freeglut demos來測試你的建構:
cd progs/demos/one one
註:這次的編譯失敗,而且很難解決,甚至可以說我無能解決,最主要是make到demo的程式裡有錯誤
c:/mingw/bin/../lib/gcc/mingw32/4.5.0/../../../../mingw32/bin/ld.exe: warning: –
-export-dynamic is not supported for PE targets, did you mean –export-all-symbo
ls?
CallbackMaker-CallbackMaker.o:CallbackMaker.c:(.text+0x3f): 未定義參考到「_imp__
glutBitmapString@8」
…(以下略)
看起來是使用–export-dynamic不支援,所以我改用–export-all-symbols同樣是錯,最後只好參考Using GLUT with MinGW的作法,個別編譯demos裡的程式,這樣是可以執行one的,但是不敢保證是否會影響程式的寫作,因為感覺這個套件沒有裝好!
註(2011/01/07):今天又重新跑來解決這個問題,我改用很多人說的,重跑一次autogen.sh,這個很好用,接下來的configure、make、make install都對了!
建構bullet
Bullet是碰撞偵測跟物理層的函式庫
執行下面的命令來建構跟安裝bullet:
cd $LOCALBUILDDIR && wget -c http://bullet.googlecode.com/files/bullet-2.77.tgz && tar xzf bullet-2.77.tgz && cd bullet-2.77 && ./autogen.sh && ./configure --prefix=$LOCALDESTDIR --disable-demos && make && make install
1 則留言