这一节描述如何编译必要的额外套件并安装到/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 Files\SQLLIB\INCLUDE之类的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
2 則留言
Comments are closed.