MinGW/MSYS development environment

文章一:

搭建qemu windows编译环境

准备使用qemu的vexpress平台调试学习arm linux。vexpress是cortex-A9四核结构,支持vexpress平台的qemu要1.0后的版本。windows平台较新的qemu版本比较难找,准备自己下载源代码编译。本文记录环境的搭建过程与qemu的编译。

1. 安装MinGW

www.mingw.org下载mingw-get-setup.exe工具,运行,选择安装目录(如D:\MinGW)。

工具运行后会下载并运行MinGW Installation Manager,根据需要选择安装的包。

然后执行Installation->Apply changes,等待安装完成。

 

2,启动MinGW

为方便启动MinGW工具,新建到D:\MinGW\msys\1.0\msys.bat的快捷方式。

拷贝D:\MinGW\msys\1.0\etc目录下的fstab.sample文件为fstab,修改fstab的内容:

#Win32_Path  Mount_Point
d:/mingw  /mingw

点击快捷方式运行MinGW,执行命令ls /mingw:

$ ls /mingw
bin  include  lib  libexec  mingw32  msys  share  var

 

3,安装python

编译QEMU需要python工具,并且版本不能太高(3.0以下的版本)。

本文安装python-2.7.6.msi到D:\Python27\。

同时修改fstab文件增加如下内容:

d:/Python27 /python

修改etc目录下的profile文件,增加python命令的路径:

if [ $MSYSTEM == MINGW32 ]; then
  export PATH=".:/usr/local/bin:/mingw/bin:/bin:/python:$PATH"
else
  export PATH=".:/usr/local/bin:/bin:/mingw/bin:/python:$PATH"
fi

 

4,安装gtk库

编译QEMU还需要用到glib2.0的库,pkg-config与libz的库,这些东西在gtk的开发包里面都有。gtk的开发包可以在如下网址下载到:

http://www.gtk.org/download/index.php

可以单独安装需要的开发工具,本文直接下载了整个gtk开发工具包

http://www.gtk.org/download/win32.php

下载GTK+ 2.x的http://ftp.gnome.org/pub/gnome/binaries/win32/gtk+/2.24/gtk+-bundle_2.24.10-20120208_win32.zip

解压gtk -bundle_2.24.10-20120208_win32.zip到D:\MinGW\gtk目录,配置环境变量

if [ $MSYSTEM == MINGW32 ]; then
  export PATH=".:/usr/local/bin:/mingw/bin:/bin:/python:/mingw/gtk/bin:$PATH"
else
  export PATH=".:/usr/local/bin:/bin:/mingw/bin:/python:/mingw/gtk/bin:$PATH"
fi

export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:/mingw/gtk/lib/pkgconfig"

重新启动MinGW运行:

$ pkg-config.exe  --cflags --libs gtk+-2.0
-mms-bitfields -Id:/mingw/gtk/include/gtk-2.0 -Id:/mingw/gtk/lib/gtk-2.0/include
 -Id:/mingw/gtk/include/atk-1.0 -Id:/mingw/gtk/include/cairo -Id:/mingw/gtk/incl
ude/gdk-pixbuf-2.0 -Id:/mingw/gtk/include/pango-1.0 -Id:/mingw/gtk/include/glib-
2.0 -Id:/mingw/gtk/lib/glib-2.0/include -Id:/mingw/gtk/include -Id:/mingw/gtk/in
clude/freetype2 -Id:/mingw/gtk/include/libpng14  -Ld:/mingw/gtk/lib -lgtk-win32-
2.0 -lgdk-win32-2.0 -latk-1.0 -lgio-2.0 -lpangowin32-1.0 -lgdi32 -lpangocairo-1.
0 -lgdk_pixbuf-2.0 -lpango-1.0 -lcairo -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0
 -lglib-2.0 -lintl

 

5,安装SDL

下载SDL-1.2.15源代码,使用MinGW对SDL进行编译安装:

$ ./configure

$ make

$ make install

执行sdl-config命令,检查sdl是否编译正确:

$ sdl-config
Usage: sdl-config [--prefix[=DIR]] [--exec-prefix[=DIR]] [--version] [--cflags]
[--libs] [--static-libs]

 

6,编译qemu

$ ./configure --prefix="d:/qemu" --target-list=arm-softmmu  --disable-coroutine-pool

指定安装目录为d:\qemu,只要编译arm平台相关的工具,coroutine-pool在windows平台的qemu上有问题,禁止该选项。从./configure --help可以看到,禁止只是降低性能。因为使用qemu调试跟踪内核,性能无关紧要。

 --disable-coroutine-pool disable coroutine freelist (worse performance)
 --enable-coroutine-pool  enable coroutine freelist (better performance) 

 

如果出现如下错误:

ERROR: zlib check failed
       Make sure to have the zlib libs and headers installed.

重新运行MinGW Installer,从All Packages里面选择msys-zlib的dev软件包安装:

 

然后继续执行上述的configure命令,成功之后执行:

$ make

$ make install

 

7,测试qemu工具

D:\qemu>qemu-system-armw.exe执行qemu,会提示缺少库文件。根据提示从MinGW的目录下搜索缺少的文件。最后需要拷贝如下的库文件到qemu的安装目录:

库文件准备好之后就可以用qemu启动内核与文件系统来测试功能了,当然也要测试qemu的调试功能。








文章二:

《MinGW找不到Gcc的解决方法

MinGw安装换成了GUI的MinGW Installation Manager进行安装,选择好安装包后,居然提示:

mxio@mxio-PC ~
$ gcc
sh: gcc: command not found

MinGW找不到Gcc的解决方法

解决方法:

假设MinGW+MSYS安装在c:\mingw下,那么修改对应 MinGw\msys\1.0\etc文件夹中的fstab.sample文件为 fstab

确认下面的路径正确:

MinGW找不到Gcc的解决方法

#Win32_Path  Mount_Point
c:/mingw  /mingw

 

重启MSYS窗口,输入 gcc-v 看到搞定了!









文章三:http://ingar.satgnu.net/devenv/mingw32/base.html

MinGW/MSYS development environment


Building a custom MinGW/MSYS development environment
Introduction
Index ..  Base system ..  Local packages ..  GTK+ ..  Qt .. Tools ..  Projects ..  Home .

This guide describes how to build a custom MSYS/MinGW development environment on windows. The goal is to create a set of matching libraries that can be used to build your own programs, with SDL, Qt 4 or GTK 2.

The guide was inspired by the Linux from Scratch way of working. If you have experience with building packages on Linux, building an MSYS/MinGW environment should feel familiar.

The directory structure emulates a traditional UNIX system with msys installation and the mingw compiler as base system in /usr, additional binaries in /opt and our own packages in/local32 and/or /local64.

This is a work in progress.

Last updated: 2014-01-20

Special thanks go to maci, for the nice examples in his Quake2World mingw scripts.

Web References


MinGW/MSYS development environment
Part 1: Setting up the base system
Index ..  Base system ..  Local packages ..  GTK+ ..  Qt .. Tools ..  Projects ..  Home .

The base system consist of the GCC compiler, the MinGW-w64 runtime, and MSYS utilities.

The compiler abd the runtime are provided by packages from the MinGW-builds project. MSYS provides a UNIX-like shell environment.

Installing the MinGW Installation Manager

We begin by installing the MinGW Installation Manager. This program will allows us to install MinGW and MSYS packages. The MSYS packages provide the shell and the necessary command line tools, but we will not use the Installation Manager to install the MinGW compiler suite.

Download the MingGW Installation Manager setup:

Run the installer. Click the Install button to accept the license and continue.


Specify the installation directory, the default C:\MinGW is usually approriate. Review the other options and click the Continue button to begin the installation.


Wait until the installation has finished and click the Continue button.

Installing MSYS packages

We use the MinGW Installation Manager to install MSYS packages:

Select Basic Setup on the left side of the screen. Mark the following packages to install:

  • mingw-developer-toolkit
  • msys-base
Make sure no other packages are marked.


Open the Installation menu and click Apply Changes.


Click the Apply button.


Patiently wait for the installation to complete.


Click the Close button upon completion.


Install a number of additional packages, select All Packages on the left of the screen and mark the following packages for installation:

  • msys-rxvt
  • msys-unzip
  • msys-wget
  • msys-zip
Note: in my installation, each package appeared multiple times. Select the top one.

Install the packages with the same procedure: open the Installation menu and click Apply Changes, click the Apply button, press the Close button upon completion.

Creating a desktop shortcut


Next, we create a new shortcut to launch the MSYS shell. CLick on the desktop with the right mouse button, select New -> Shortcut.

Set the location to C:\MinGW\msys\1.0\msys.bat, and call it MSYS Shell.


Right-click on the new shortcut and open its properties. Edit it so it looks like this:
  • Target: C:\MinGW\msys\1.0\msys.bat --rxvt
  • Start in: C:\MinGW\msys\1.0\bin
Press the  OK button.


Launch the MSYS Shell by double-clicking the shortcut.


You can paste clipboard text to the RXVT terminal with the shift+insert key combination, hence can copy the commands from this guide and paste them into the terminal window. If you use the mouse to select text in the RXVT window, it will be automatically copied to the clipboard as well.

Installing MinGW-w64

MinGW is a port of the GCC compiler to the win32 platform. MinGW-W64 adds 64-bit support and an improved windows runtime.

Before installing the compiler, a little bit of cleanup has to be done: the MinGW Installation Manager has put a number of packages into C:\MinGW\mingw32, rename it toC:\MinGW\mingw.dist.

mv /c/MinGW/mingw32 /c/MinGW/mingw.dist

Download the i686 package:

If you want to build 64-bit applications, you'll also need the x86_64 package:

Unzip the compiler packages into the C:\MinGW directory, you can use the 7-zip utility, or any archiver that understands the 7z format. You should and up with two new subdirectories:C:\MinGW\mingw32 and C:\MinGW\mingw64.

These packages support the win32 threading model and do not support C11 threading. Building GTK fails using the POSIX threading packages.

References:

Post-installation configuration

MSYS emulates a UNIX file system hierarchy. By default, the MSYS directory C:\MinGW\msys\1.0 will be mounted as root directory / and as /usr. Traditional windows drives like D: and E:can be accessed as /d or /e. Use the mount command to get an overview:

$ mount
C:\Users\Ingar\AppData\Local\Temp on /tmp type user (binmode,noumount)
C:\MinGW\msys\1.0 on /usr type user (binmode,noumount)
C:\MinGW\msys\1.0 on / type user (binmode,noumount)
c: on /c type user (binmode,noumount)
d: on /d type user (binmode,noumount)

Mount the installation directory of the custom compiler package in a convenient location:

mount 'C:\MinGW\mingw32\' /mingw32
mount 'C:\MinGW\mingw64\' /mingw64

We will add a number of extra directories to /etc/fstab, to be mounted whenever a new shell is started: /opt, where we will install a few extra packages, /sources, where downloads will be saved, /build32 where we will download the sourcode and compile packages, and /local32, where we will install our own compiled packages. These directories can be anywhere, but to keep the setup simple and consistent we will create C:\MinGW\optC:\MinGW\build32 and C:\MinGW\local32 and mount them as /opt/build32 and /local32.

Additionally, we create a 64-bit variant for each of the 32-bit directories. Note that the /sources directory is the same for both environments, this prevents having to download source packages twice.

Create the necessary directories:

mkdir /c/mingw/{opt,build32,local32,build64,local64,sources}

Mount the directories, this will automaticly add them to /etc/fstab:

umount /mingw
mount 'C:\MinGW' /mingw
mount 'C:\MinGW\opt\' /opt
mount 'C:\MinGW\local32\' /local32
mount 'C:\MinGW\build32\' /build32
mount 'C:\MinGW\local64\' /local64
mount 'C:\MinGW\build64\' /build64
mount 'C:\MinGW\sources\' /sources

Create necessary subdirectories in /local32/local64 and /opt:

mkdir /opt/bin /local{32,64}/{bin,etc,include,lib,share}
mkdir /local{32,64}/lib/pkgconfig

Create /local32/etc/profile.local:

cat > /local32/etc/profile.local << "EOF"
#
# /local32/etc/profile.local
#

alias dir='ls -la --color=auto'
alias ls='ls --color=auto'

PKG_CONFIG_PATH="/local32/lib/pkgconfig"
CPPFLAGS="-I/local32/include"
CFLAGS="-I/local32/include -mms-bitfields -mthreads -mtune=pentium3"
CXXFLAGS="-I/local32/include -mms-bitfields -mthreads -mtune=pentium3"
LDFLAGS="-L/local32/lib -mthreads"
export PKG_CONFIG_PATH CPPFLAGS CFLAGS CXXFLAGS LDFLAGS

PATH=".:/local32/bin:/mingw32/bin:/mingw/bin:/bin:/opt/bin"
PS1='\[\033[32m\]\u@\h \[\033[33m\w\033[0m\]$ '
export PATH PS1

# directory where sources will be downloaded
LOCALSOURCEDIR=/sources
# package build directory
LOCALBUILDDIR=/build32
# package installation prefix
LOCALDESTDIR=/local32
export LOCALBUILDDIR LOCALDESTDIR

EOF

Create /local64/etc/profile.local:

cat > /local64/etc/profile.local << "EOF"
#
# /local64/etc/profile.local
#

alias dir='ls -la --color=auto'
alias ls='ls --color=auto'

PKG_CONFIG_PATH="/local64/lib/pkgconfig"
CPPFLAGS="-I/local64/include"
CFLAGS="-I/local64/include -mms-bitfields -mthreads"
CXXFLAGS="-I/local64/include -mms-bitfields -mthreads"
LDFLAGS="-L/local64/lib"
export PKG_CONFIG_PATH CPPFLAGS CFLAGS CXXFLAGS LDFLAGS

PATH=".:/local64/bin:/mingw64/bin:/mingw/bin:/bin:/opt/bin"
PS1='\[\033[32m\]\u@\h \[\033[33m\w\033[0m\]$ '
export PATH PS1

# directory where sources will be downloaded
LOCALSOURCEDIR=/sources
# package build directory
LOCALBUILDDIR=/build64
# package installation prefix
LOCALDESTDIR=/local64
export LOCALBUILDDIR LOCALDESTDIR

EOF

Make sure it is executed on login:

cat >> /etc/profile << "EOF"
if [ -f /local32/etc/profile.local ]; then
        source /local32/etc/profile.local
fi

EOF

Apply the new settings:

source /local32/etc/profile.local

Note that the default environment is 32-bit. You can switch to the 64-bit environment with the following command:

source /local64/etc/profile.local
Configuring vim

(Skip this section if you don't want to use the VIM editor)

Create a configuration file for VIM:

cat > ~/.vimrc << "EOF"
" Configuration file for VIM
set nocompatible
set bs=2                " allow backspacing over everything in insert mode
set ai                  " set autoindenting on
" set backup            " keep a backup file
set nobackup            " do not keep a backup file
set history=256	        " keep 256 lines of command line history
set ruler               " show the cursor position all the time
set tabstop=8           " tab at 4 characters
set shiftwidth=8        " 4 characters indentation
set nowrap              " do not wrap long lines
set visualbell          " no bell
set background=light    " msys rxvt has a light background
"set background=dark    " mingw shell uses a black background
syntax on               " syntax highlighting on

EOF

Set vim as default editor in the 32-bit environment:

cat >> /local32/etc/profile.local << "EOF"
EDITOR=vim
export EDITOR
EOF

In the 64-bit environment:

cat >> /local64/etc/profile.local << "EOF"
EDITOR=vim
export EDITOR
EOF
Installing additional packages in /opt

We install a few third-party tools in /opt to prevent them from interfering with the default packages.

Download and install the 7zip command line package:

cd ${LOCALSOURCEDIR} && \
wget -c "http://downloads.sourceforge.net/sevenzip/7za920.zip" && \
cd /opt/bin && \
unzip ${LOCALSOURCEDIR}/7za920.zip && \
mkdir -p ../doc/7za920 && \
mv license.txt readme.txt 7-zip.chm ../doc/7za920

Download and install the Portable Git package from msysgit:

cd ${LOCALSOURCEDIR} && \
wget -c "http://msysgit.googlecode.com/files/PortableGit-1.8.4-preview20130916.7z" && \
cd /opt && \
7za x ${LOCALSOURCEDIR}/PortableGit-1.8.4-preview20130916.7z && \
rm git-bash.bat git-cmd.bat 'Git Bash.vbs' && \
mv ReleaseNotes.rtf README.portable doc/git

Download and install the win32 subversion client using the following commands:

cd ${LOCALSOURCEDIR} && \
wget -c "http://downloads.sourceforge.net/project/win32svn/1.8.5/apache22/svn-win32-1.8.5.zip" && \
cd ${LOCALBUILDDIR} && \
unzip ${LOCALSOURCEDIR}/svn-win32-1.8.5.zip && \
cp -va svn-win32-1.8.5/* /opt && \
mkdir -p /opt/doc/svn-win32-1.8.5 && \
mv /opt/README.txt /opt/doc/svn-win32-1.8.5

Download and install the win32 cmake client using the following commands:

cd ${LOCALSOURCEDIR} && \
wget -c "http://www.cmake.org/files/v2.8/cmake-2.8.12.1-win32-x86.zip" && \
cd ${LOCALBUILDDIR} && \
unzip ${LOCALSOURCEDIR}/cmake-2.8.12.1-win32-x86.zip && \
cp -va cmake-2.8.12.1-win32-x86/* /opt
Building packages

The following sections of this guide describe how to build various local packages. If you do not want to build them yourself, you can download my build:

32-bit local packages with GTK+
msys-2013-12-14-local32-gtk.7z
64-bit local packages with GTK+
msys-2013-12-14-local64-gtk.7z

These packages should be extracted into the main installation directory C:\MinGW, you should end up with C:\MinGW\mingw32 and/or C:\MinGW\mingw64.

Remember you can always switch between environments by reading the apporiate profile:

To switch to the 32-bit build environment:

source /local32/etc/profile.local

To switch to the 64-bit build environment:

source /local64/etc/profile.local
MinGW/MSYS development environment
Part 2: Building local packages
Index ..  Base system ..  Local packages ..  GTK+ ..  Qt .. Tools ..  Projects ..  Home .

This section describes how to compile the necessary additional packages and install them in ${LOCALDESTDIR}. This variable is set to /local32 or /local64, depending on your build environment.

Installing a static pkg-config binary

The pkg-config tool is necessary to build a number of local packages. To resolve of a circular dependency between pkg-config and glib I've provided a staticly linked version we install in ${LOCALDESTDIR}. Later on we'll replace it with our own build.

Unpack the archive and install pkg-config into ${LOCALDESTDIR}.

cd ${LOCALSOURCEDIR} && \
wget -c http://ingar.satgnu.net/devenv/mingw32/files/msys-pkg-config-0.26-static.zip  && \
cd ${LOCALBUILDDIR}  && \
unzip ${LOCALSOURCEDIR}/msys-pkg-config-0.26-static.zip && \
install pkg-config.exe ${LOCALDESTDIR}/bin

There is a bug that affects the next part of this guide, as a workaround we install a pkg-config.sh wrapper script:

cat >  ${LOCALDESTDIR}/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

Make the script executable and point the PKG_CONFIG environment variable to the script:

chmod ugo+x ${LOCALDESTDIR}/bin/pkg-config.sh && \
echo "PKG_CONFIG=${LOCALDESTDIR}/bin/pkg-config.sh" >> ${LOCALDESTDIR}/etc/profile.local && \
echo "export PKG_CONFIG" >> ${LOCALDESTDIR}/etc/profile.local

Load the altered profile.local:

source ${LOCALDESTDIR}/etc/profile.local

References:

Building zlib

zlib is a compression library.

Build and install the zlib dll by executing the following commands:

cd ${LOCALSOURCEDIR} && \
wget -c http://www.zlib.net/zlib-1.2.8.tar.gz && \
cd ${LOCALBUILDDIR} && \
tar xzf ${LOCALSOURCEDIR}/zlib-1.2.8.tar.gz && \
cd zlib-1.2.8 && \
sed 's/-O3/-O3 -mms-bitfields -mthreads/' win32/Makefile.gcc >Makefile.gcc && \
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

Note: zlib.pc must be created manually and installed into ${LOCALDESTDIR}/lib/pkgconfig/

Building nasm

The Netwide Assembler.

Build and install nasm by executing the following commands:

cd ${LOCALSOURCEDIR} && \
wget -c http://www.nasm.us/pub/nasm/releasebuilds/2.10.09/nasm-2.10.09.tar.gz && \
cd ${LOCALBUILDDIR} && \
tar xzf ${LOCALSOURCEDIR}/nasm-2.10.09.tar.gz && \
cd nasm-2.10.09 && \
./configure --prefix=${LOCALDESTDIR} && \
make && \
make install
Building SDL (legacy)

The Simple Direct Media Layer is a cross-platform application framework. Version 1.2 has been superseded by version 2, but you can have both versions installed for applications that need it.

Build and install SDL by executing the following commands:

cd ${LOCALSOURCEDIR} && \
wget -c http://www.libsdl.org/release/SDL-1.2.15.tar.gz && \
cd ${LOCALBUILDDIR} && \
tar xzf ${LOCALSOURCEDIR}/SDL-1.2.15.tar.gz && \
cd SDL-1.2.15 && \
./configure --prefix=${LOCALDESTDIR} && \
make && \
make install

Build the SDL test programs by executing the following commands:

cd test && \
./configure && \
make

Run the SDL test programs:

SDL_VIDEODRIVER=windib testvidinfo
cat stdout.txt
SDL_VIDEODRIVER=directx testvidinfo
cat stdout.txt
testplatform
cat stdout.txt
testdyngl
Building SDL2

The Simple Direct Media Layer is a cross-platform application framework.

Build and install SDL2 by executing the following commands:

cd ${LOCALSOURCEDIR} && \
wget -c http://www.libsdl.org/release/SDL2-2.0.1.tar.gz && \
cd ${LOCALBUILDDIR} && \
tar xzf ${LOCALSOURCEDIR}/SDL2-2.0.1.tar.gz && \
cd SDL2-2.0.1 && \
./configure --prefix=${LOCALDESTDIR} && \
make && \
make install

Build the SDL2 test programs by executing the following commands:

cd test && \
./autogen.sh && \
./configure && \
make

Run the SDL2 test programs:

./testplatform
./testgl2

The following test takes some time to complete, it won't show any output until it's done.

./testthread
Building libpng

libng is PNG image file format library.

Build and install libpng by executing the following commands:

cd ${LOCALSOURCEDIR} && \
wget -c "http://downloads.sourceforge.net/libpng/libpng-1.6.7.tar.gz" && \
cd ${LOCALBUILDDIR} && \
tar xzf ${LOCALSOURCEDIR}/libpng-1.6.7.tar.gz && \
cd libpng-1.6.7 && \
./configure --prefix=${LOCALDESTDIR} && \
make && \
make install

Building libjpeg

libjpeg is a JPEG image file format library.

Build and install libjpeg by executing the following commands:

cd ${LOCALSOURCEDIR} && \
wget -c http://www.ijg.org/files/jpegsrc.v9.tar.gz && \
cd ${LOCALBUILDDIR} && \
tar xzf ${LOCALSOURCEDIR}/jpegsrc.v9.tar.gz && \
cd jpeg-9 && \
./configure --prefix=${LOCALDESTDIR} --enable-shared --enable-static && \
make && \
make install

Building libtiff

libtiff is a TIFF image file format library.

Build and install libtiff by executing the following commands:

cd ${LOCALSOURCEDIR} && \
wget -c ftp://ftp.remotesensing.org/pub/libtiff/tiff-4.0.3.tar.gz && \
cd ${LOCALBUILDDIR} && \
tar xzf ${LOCALSOURCEDIR}/tiff-4.0.3.tar.gz && \
cd tiff-4.0.3 && \
./configure --prefix=${LOCALDESTDIR} && \
make && \
make install

Building libwebp

libwebp is a WebP image file format library.

Build and install libwebp by executing the following commands:

cd ${LOCALSOURCEDIR} && \
wget --no-check-certificate -c https://webp.googlecode.com/files/libwebp-0.3.1.tar.gz && \
cd ${LOCALBUILDDIR} && \
tar xzf ${LOCALSOURCEDIR}/libwebp-0.3.1.tar.gz && \
cd libwebp-0.3.1 && \
./configure --prefix=${LOCALDESTDIR} && \
make && \
make install

Building SDL_image (legacy)

SDL_image is an image support library for the Simple Direct Media Layer

Build and install SDL_image by executing the following commands:

cd ${LOCALSOURCEDIR} && \
wget -c http://www.libsdl.org/projects/SDL_image/release/SDL_image-1.2.12.tar.gz && \
cd ${LOCALBUILDDIR} && \
tar xzf ${LOCALSOURCEDIR}/SDL_image-1.2.12.tar.gz && \
cd SDL_image-1.2.12 && \
./configure --prefix=${LOCALDESTDIR} && \
make && \
make install

Building SDL2_image

SDL2_image is an image support library for SDL2

Build and install SDL_image by executing the following commands:

cd ${LOCALSOURCEDIR} && \
wget -c http://www.libsdl.org/projects/SDL_image/release/SDL2_image-2.0.0.tar.gz && \
cd ${LOCALBUILDDIR} && \
tar xzf ${LOCALSOURCEDIR}/SDL2_image-2.0.0.tar.gz && \
cd SDL2_image-2.0.0 && \
./configure --prefix=${LOCALDESTDIR} && \
make && \
make install

Building OpenAL Soft

OpenAL Soft is an implementation of the OpenAL 3D audio API.

Build and install OpenAL Soft by executing the following commands:

cd ${LOCALSOURCEDIR} && \
wget -c http://kcat.strangesoft.net/openal-releases/openal-soft-1.15.1.tar.bz2 && \
cd ${LOCALBUILDDIR} && \
tar xjf ${LOCALSOURCEDIR}/openal-soft-1.15.1.tar.bz2 && \
cd openal-soft-1.15.1 && \
cd build && \
cmake -DCMAKE_INSTALL_PREFIX:PATH=${LOCALDESTDIR} -G "MSYS Makefiles" .. && \
make && \
make install

Test the OpenAL Soft installation:

openal-info
Building smpeg (legacy)

smpeg is an mpeg file format library

Build and install smpeg by executing the following commands:

cd ${LOCALBUILDDIR} && \
svn export svn://svn.icculus.org/smpeg/tags/release_0_4_5 smpeg-0.4.5 && \
cd smpeg-0.4.5 && \
./autogen.sh && \
./configure --prefix=${LOCALDESTDIR} --enable-mmx --disable-gtk-player \
            --disable-opengl-player --disable-gtktest  && \
make && \
make install

Building smpeg2

smpeg is an mpeg file format library

Build and install smpeg by executing the following commands:

cd ${LOCALBUILDDIR} && \
svn export svn://svn.icculus.org/smpeg/tags/release_2_0_0 smpeg-2.0.0 && \
cd smpeg-2.0.0 && \
./autogen.sh && \
./configure --prefix=${LOCALDESTDIR} --enable-mmx  && \
make && \
make install

Building libogg

libogg is an ogg bitstream format library

Build and install libogg by executing the following commands:

cd ${LOCALSOURCEDIR} && \
wget -c http://downloads.xiph.org/releases/ogg/libogg-1.3.1.tar.gz && \
cd ${LOCALBUILDDIR} && \
tar xzf ${LOCALSOURCEDIR}/libogg-1.3.1.tar.gz && \
cd libogg-1.3.1 && \
LDFLAGS='-mwindows' ./configure --prefix=${LOCALDESTDIR} && \
make  && \
make install

Building libvorbis

libvorbis is a vorbis audio format library

Build and install libvorbis by executing the following commands:

cd ${LOCALSOURCEDIR} && \ 
wget -c http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.3.tar.gz && \
cd ${LOCALBUILDDIR} && \
tar xzf ${LOCALSOURCEDIR}/libvorbis-1.3.3.tar.gz && \ 
cd libvorbis-1.3.3 && \ 
LDFLAGS='-mwindows' ./configure --prefix=${LOCALDESTDIR} && \ 
make && \ 
make install

Building FLAC

FLAC is a Free Lossless Audio Codec.

The 64-bit build requires  ./configure --build=x86_64-w64-mingw32 --disable-xmms-plugin --prefix=${LOCALDESTDIR}

Build and install FLAC by executing the following commands:

cd ${LOCALSOURCEDIR} && \
wget -c http://downloads.xiph.org/releases/flac/flac-1.3.0.tar.xz && \
cd ${LOCALBUILDDIR} && \
tar xJf ${LOCALSOURCEDIR}/flac-1.3.0.tar.xz && \
cd flac-1.3.0 && \
./configure --disable-xmms-plugin --prefix=${LOCALDESTDIR} && \
make && \
make install
Building SDL_mixer (legacy)

SDL_mixer is an audio support library for the Simple Direct Media Layer

Fails to build.

The following patch is required before running ./configure:

--- Makefile.in.org     2013-06-29 17:23:02 +0200
+++ Makefile.in 2013-06-29 17:23:51 +0200
@@ -66,10 +66,10 @@
        $(LIBTOOL) --mode=link $(CC) -o $@ $(OBJECTS) $(VERSION_OBJECTS) $(LDFLAGS) $(EXTRA_LDFLAGS) $(LT_LDFLAGS)
 
 $(objects)/playwave$(EXE): $(objects)/playwave.lo $(objects)/$(TARGET)
-       $(LIBTOOL) --mode=link $(CC) -o $@ $(objects)/playwave.lo $(SDL_CFLAGS) $(SDL_LIBS) $(objects)/$(TARGET)
+       $(LIBTOOL) --mode=link $(CC) -o $@ $(objects)/playwave.lo $(SDL_CFLAGS) -lSDLmain $(SDL_LIBS) $(objects)/$(TARGET)
 
 $(objects)/playmus$(EXE): $(objects)/playmus.lo $(objects)/$(TARGET)
-       $(LIBTOOL) --mode=link $(CC) -o $@ $(objects)/playmus.lo $(SDL_CFLAGS) $(SDL_LIBS) $(objects)/$(TARGET)
+       $(LIBTOOL) --mode=link $(CC) -o $@ $(objects)/playmus.lo $(SDL_CFLAGS) -lSDLmain $(SDL_LIBS) $(objects)/$(TARGET)
 
 install: all install-hdrs install-lib #install-bin
 install-hdrs:

Build and install SDL_mixer by executing the following commands:

cd ${LOCALSOURCEDIR} && \
wget -c http://www.libsdl.org/projects/SDL_mixer/release/SDL_mixer-1.2.12.tar.gz && \
cd ${LOCALBUILDDIR} && \
tar xzf ${LOCALSOURCEDIR}/SDL_mixer-1.2.12.tar.gz --exclude=Xcode && \
cd SDL_mixer-1.2.12 && \
./configure --prefix=${LOCALDESTDIR} && \
make && \
make install
Building SDL2_mixer

SDL2_mixer is an audio support library for SDL2.

Build and install SDL_mixer by executing the following commands:

cd ${LOCALSOURCEDIR} && \
wget -c http://www.libsdl.org/projects/SDL_mixer/release/SDL2_mixer-2.0.0.tar.gz && \
cd ${LOCALBUILDDIR} && \
tar xzf ${LOCALSOURCEDIR}/SDL2_mixer-2.0.0.tar.gz --exclude=Xcode && \
cd SDL2_mixer-2.0.0 && \
./configure --prefix=${LOCALDESTDIR} && \
make && \
make install
Building curl

curl is a command line tool for transferring data with URL syntax

Build and install curl by executing the following commands:

cd ${LOCALSOURCEDIR} && \
wget -c http://curl.haxx.se/download/curl-7.33.0.tar.gz && \
cd ${LOCALBUILDDIR} && \
tar xzf ${LOCALSOURCEDIR}/curl-7.33.0.tar.gz && \
cd curl-7.33.0 && \
CFLAGS="-mms-bitfields -mthreads" ./configure  --prefix=${LOCALDESTDIR} --without-ssl  && \
make && \
make install

Building pdcurses

Public Domain Curses is an implementation of the curses library

Build and install pdcurses by executing the following commands:

cd ${LOCALSOURCEDIR} && \
wget -c http://downloads.sourceforge.net/project/pdcurses/pdcurses/3.4/PDCurses-3.4.tar.gz  && \
cd ${LOCALBUILDDIR} && \
tar xzf ${LOCALSOURCEDIR}/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

Note: the sed lines replace the DOS commands in the install script with their UNIX equivalent.

Building freeglut

freeglut is a free implementation of the OpenGL Utility Toolkit

Build and install freeglut by executing the following commands:

cd ${LOCALSOURCEDIR} && \
wget -c http://downloads.sourceforge.net/project/freeglut/freeglut/2.8.1/freeglut-2.8.1.tar.gz && \
cd ${LOCALBUILDDIR} && \
tar xzf ${LOCALSOURCEDIR}/freeglut-2.8.1.tar.gz && \
cd freeglut-2.8.1 && \
./configure --prefix=${LOCALDESTDIR} && \
make && \
make install

Run the freeglut demos to test your build:

cd progs/demos/one
one
Building the Bullet Physics library

Bullet is a collision detection and physics library

Build and install bullet by executing the following commands:

cd ${LOCALSOURCEDIR} && \
wget -c http://bullet.googlecode.com/files/bullet-2.82-r2704.tgz && \
cd ${LOCALBUILDDIR} && \
tar xzf ${LOCALSOURCEDIR}/bullet-2.82-r2704.tgz && \
cd bullet-2.82-r2704 && \
./autogen.sh && \
./configure --prefix=${LOCALDESTDIR} --disable-demos && \
make && \
make install && \
install src/BulletDynamics/ConstraintSolver/btFixedConstraint.h ${LOCALDESTDIR}/include/bullet/BulletDynamics/ConstraintSolver/
Building the PhysicsFS library

PhysicsFS is a library to provide abstract access to various archives.

Build and install PhysicsFS by executing the following commands:

cd ${LOCALSOURCEDIR} && \
wget http://icculus.org/physfs/downloads/physfs-2.0.3.tar.bz2 && \
wget -c http://ingar.satgnu.net/devenv/mingw32/files/physfs-2.0.3-size_t.patch  && \
cd ${LOCALBUILDDIR} && \
tar xjf ${LOCALSOURCEDIR}/physfs-2.0.3.tar.bz2 && \
cd physfs-2.0.3 && \
patch -Np0 -i ${LOCALSOURCEDIR}/physfs-2.0.3-size_t.patch
mkdir build && \
cd build && \
cmake -DCURSES_LIBRARY=${LOCALDESTDIR}/bin/pdcurses.dll \
-DZLIB_LIBRARY=${LOCALDESTDIR}/lib/libz.dll.a -DZLIB_INCLUDE_DIR=${LOCALDESTDIR}/include \
-DCMAKE_INSTALL_PREFIX=${LOCALDESTDIR} -G "MSYS Makefiles" .. && \
make && \
make install

Notes:

wget http://icculus.org/physfs/downloads/physfs-2.0.3.tar.bz2
icculus.org seems to have issues with wget -c
patch -Np0 -i ${LOCALSOURCEDIR}/physfs-2.0.3-size_t.patch
The 64-bit version does not build without patching.

MinGW/MSYS development environment
Part 3: Building GTK+
Index ..  Base system ..  Local packages ..  GTK+ ..  Qt .. Tools ..  Projects ..  Home .

This section describes how to compile the GTK+ library and necessary dependencies.

Building libiconv

libiconv is a text encoding library

cd ${LOCALSOURCEDIR} && \
wget -c http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz && \
cd ${LOCALBUILDDIR} && \
tar xzf ${LOCALSOURCEDIR}/libiconv-1.14.tar.gz && \
cd libiconv-1.14 && \
./configure --prefix=${LOCALDESTDIR} && \
make && \
make install
Building gettext

gettext is a tool for localizing and translating programs

Build and install the gettext runtime by executing the following commands:

cd ${LOCALSOURCEDIR} && \
wget -c http://ftp.gnu.org/pub/gnu/gettext/gettext-0.18.3.1.tar.gz && \
cd ${LOCALBUILDDIR} && \
tar xzf ${LOCALSOURCEDIR}/gettext-0.18.3.1.tar.gz && \
mv gettext-0.18.3.1 gettext-0.18.3.1-runtime && \
cd gettext-0.18.3.1-runtime && \
cat gettext-tools/woe32dll/gettextlib-exports.c | grep -v rpl_opt > gettext-tools/woe32dll/gettextlib-exports.c.new && \
mv gettext-tools/woe32dll/gettextlib-exports.c.new gettext-tools/woe32dll/gettextlib-exports.c && \
CFLAGS="-mms-bitfields -mthreads -O2" ./configure --prefix=${LOCALDESTDIR} --enable-threads=win32 --enable-relocatable && \
cd gettext-runtime && \
make && \
make install

Build and install the gettext tools by executing the following commands:

cd ${LOCALBUILDDIR} && \
tar xzf ${LOCALSOURCEDIR}/gettext-0.18.3.1.tar.gz && \
mv gettext-0.18.3.1 gettext-0.18.3.1-static && \
cd gettext-0.18.3.1-static && \
CFLAGS="-mms-bitfields -mthreads -O2" ./configure --prefix=${LOCALDESTDIR} --enable-threads=win32 --enable-relocatable --disable-shared && \
make && \
install gettext-tools/src/msgfmt.exe ${LOCALDESTDIR}/bin && \
install gettext-tools/src/msgmerge.exe ${LOCALDESTDIR}/bin && \
install gettext-tools/src/xgettext.exe ${LOCALDESTDIR}/bin

References:

Building glib

glib is a low-level core library that forms the basis of GTK+

Build and install glib by executing the following commands:

cd ${LOCALSOURCEDIR} && \
wget -c http://ftp.gnome.org/pub/gnome/sources/glib/2.28/glib-2.28.8.tar.xz && \
cd ${LOCALBUILDDIR} && \
tar xJf ${LOCALSOURCEDIR}/glib-2.28.8.tar.xz && \
cd glib-2.28.8 && \
./configure --prefix=${LOCALDESTDIR} --with-pcre=internal --enable-debug=no --disable-gtk-doc && \
make && \
make install
Building pkg-config

pkg-config is a helper tool used when compiling applications and libraries.

This build will replace the static binary we installed earlier.

Build and install pkg-config by executing the following commands:

cd ${LOCALSOURCEDIR} && \
wget -c http://pkgconfig.freedesktop.org/releases/pkg-config-0.28.tar.gz && \
cd ${LOCALBUILDDIR} && \
tar xzf ${LOCALSOURCEDIR}/pkg-config-0.28.tar.gz && \
cd pkg-config-0.28 && \
./configure --prefix=${LOCALDESTDIR} && \
make && \
make install
Building freetype

Freetype is a library for rendering TrueType fonts.

Build and install freetype by executing the following commands:

cd ${LOCALSOURCEDIR}  && \
wget -c http://download.savannah.gnu.org/releases/freetype/freetype-2.5.2.tar.gz && \
cd ${LOCALBUILDDIR} && \
tar xzf ${LOCALSOURCEDIR}/freetype-2.5.2.tar.gz && \
cd freetype-2.5.2 && \
./configure --prefix=${LOCALDESTDIR} && \
make && \
make install

By default, freetype disables a few options that may have patent restrictions. You can enable them by editing the file include/config/ftoption.h after unpacking the source code. Uncomment the line that says #define FT_CONFIG_OPTION_SUBPIXEL_RENDERING. Make sure you read http://www.freetype.org/patents.html before enabling this option.

Building expat

expat is an XML parsing library

Build and install expat by executing the following commands:

cd ${LOCALSOURCEDIR} && \
wget -c http://downloads.sourceforge.net/project/expat/expat/2.0.1/expat-2.0.1.tar.gz && \
cd ${LOCALBUILDDIR} && \
tar xzf ${LOCALSOURCEDIR}/expat-2.0.1.tar.gz && \
cd expat-2.0.1 && \
./configure --prefix=${LOCALDESTDIR} && \
make && \
make install

Building libxml2

libxml2 is an XML parsing library

Build and install libxml2 by executing the following commands:

cd ${LOCALSOURCEDIR} && \
wget -c ftp://xmlsoft.org/libxml2/libxml2-2.9.1.tar.gz && \
cd ${LOCALBUILDDIR} && \
tar xzf ${LOCALSOURCEDIR}/libxml2-2.9.1.tar.gz && \
cd libxml2-2.9.1 && \
./configure --prefix=${LOCALDESTDIR} --with-zlib=${LOCALDESTDIR} && \
make && \
make install

Configuration options:

--without-python
libxml2 fails to build if it finds python in your PATH. Add this  configure option to disable python detection (Thanks to Thomas Hooge).

Building fontconfig

fontconfig is a library for font customization and configuration

The build fails on a test program, test-migration. This is a  known issue. The easiest solution is to remove the 'test' subdirectory from the SUBDIR declarations in the Makefile generated by the configure script. It needs to be removed twice.

Build and install fontconfig by executing the following commands:

cd ${LOCALSOURCEDIR} && \
wget -c http://www.freedesktop.org/software/fontconfig/release/fontconfig-2.11.0.tar.gz && \
cd ${LOCALBUILDDIR} && \
tar xzf ${LOCALSOURCEDIR}/fontconfig-2.11.0.tar.gz && \
cd fontconfig-2.11.0 && \
./configure --prefix=${LOCALDESTDIR} --enable-libxml2 --disable-docs && \
make && \
make install

Building pixman

pixman is a low-level pixel manipulation library

Build and install pixman by executing the following commands:

cd ${LOCALSOURCEDIR} && \
wget -c http://cairographics.org/releases/pixman-0.32.4.tar.gz && \
cd ${LOCALBUILDDIR} && \
tar xzf ${LOCALSOURCEDIR}/pixman-0.32.4.tar.gz && \
cd pixman-0.32.4 && \
./configure --prefix=${LOCALDESTDIR} && \
make && \
make install

Building cairo

cairo is a 2d graphics library

Build and install cairo by executing the following commands:

cd ${LOCALSOURCEDIR} && \
wget -c http://cairographics.org/releases/cairo-1.12.16.tar.xz && \
cd ${LOCALBUILDDIR} && \
tar xJf ${LOCALSOURCEDIR}/cairo-1.12.16.tar.xz && \
cd cairo-1.12.16 && \
./configure --prefix=${LOCALDESTDIR} && \
make && \
make install
Building pango

pango is a text rendering library

Build and install pango by executing the following commands:

cd ${LOCALSOURCEDIR} && \
wget -c http://ftp.gnome.org/pub/gnome/sources/pango/1.29/pango-1.29.4.tar.bz2 && \
cd ${LOCALBUILDDIR} && \
tar xjf ${LOCALSOURCEDIR}/pango-1.29.4.tar.bz2 && \
cd pango-1.29.4 && \
./configure --prefix=${LOCALDESTDIR} --with-included-modules=yes \
--disable-debug --disable-gtk-doc --without-x && \
make && \
make install

Configuration options:

--with-included-modules=yes
This options causes pango modules to be staticly linked into the main library.

Building atk

atk is the gnome accessibility toolkit

Build and install atk by executing the following commands:

cd ${LOCALSOURCEDIR} && \
wget -c http://ftp.gnome.org/pub/gnome/sources/atk/1.32/atk-1.32.0.tar.bz2 && \
cd ${LOCALBUILDDIR} && \
tar xjf ${LOCALSOURCEDIR}/atk-1.32.0.tar.bz2 && \
cd atk-1.32.0 && \
./configure --prefix=${LOCALDESTDIR} --disable-debug && \
make && \
make install

Building gdk-pixbuf

GdkPixBuf provides pixel buffer and rendering functions

Build and install GdkPixBuf by executing the following commands:

cd ${LOCALSOURCEDIR} && \
wget -c http://ftp.gnome.org/pub/gnome/sources/gdk-pixbuf/2.24/gdk-pixbuf-2.24.0.tar.bz2 && \
cd ${LOCALBUILDDIR} && \
tar xjf ${LOCALSOURCEDIR}/gdk-pixbuf-2.24.0.tar.bz2 && \
cd gdk-pixbuf-2.24.0 && \
./configure --prefix=${LOCALDESTDIR} --with-included-loaders=yes \
--without-libjasper --disable-debug && \
make && \
make install

Configuration options::

--with-included-loaders=yes
This option causes the gdk image loaders to be staticly linked into the gdk-pixbuf library
--without-libjasper
disable JPEG2000 support

Building gtk+

gtk+ is an application framework library

  • The 32-bit build will fail around gtk-update-icon-cache unless you run the msys shell as administrator.
  • Edit gdk/win32/gdkdnd-win32.c and remove #define INITGUID, otherwise the builds fails on the newer mingw-w64.
  • For the 64-bit build, you need to rm gtk/gtk.def before running make.

Build and install gtk+ by executing the following commands:

cd ${LOCALSOURCEDIR} && \
wget -c http://ftp.gnome.org/pub/gnome/sources/gtk+/2.24/gtk+-2.24.10.tar.xz && \
cd ${LOCALBUILDDIR} && \
tar xJf ${LOCALSOURCEDIR}/gtk+-2.24.10.tar.xz && \
cd gtk+-2.24.10 && \
./configure --prefix=${LOCALDESTDIR} --with-gdktarget=win32 \
--with-included-immodules=ime --disable-debug --disable-gtk-doc && \
make && \
make install

Configuration options::

--with-included-immodules=ime
This options causes the ime input module to be staticly linked into the main library.

At this point, you should test your gtk installation. The pixbuf-demo demonstrates image capabilities.

cd demos
./pixbuf-demo

You should see a window with rotating icons.


The gtk-demo demonstrates gtk widgets:

cd gtk-demo
gtk-demo

References:

Building gtkglext

gtkglext is an opengl extension for gtk+

gtkglext does not build without patching, the patch provided is from the arch linux gtkglext package.

Build and install gtkglext by executing the following commands:

cd ${LOCALSOURCEDIR} && \
wget -c http://downloads.sourceforge.net/gtkglext/gtkglext-1.2.0.tar.gz && \
wget -c http://ingar.satgnu.net/devenv/mingw32/files/gtkglext-1.2.0-gtk-2.20.patch && \
cd ${LOCALBUILDDIR} && \
tar xzf ${LOCALSOURCEDIR}/gtkglext-1.2.0.tar.gz && \
cd gtkglext-1.2.0 && \
patch -Np1 -i ${LOCALSOURCEDIR}/gtkglext-1.2.0-gtk-2.20.patch && \
cat configure | sed 's/pangox/pangowin32/' > configure.new && \
mv configure.new configure && \
./configure --prefix=${LOCALDESTDIR} --with-gdktarget=win32 --enable-debug=no && \
make && \
make install

Command explanation:

cat configure | sed 's/pangox/pangowin32/' > configure.new && mv configure.new configure
These commands correct the configure script so it links binaries with the pango win32 library instead of the pango X11 libraries.

Build and install the wglinfo program:

cd examples
make wglinfo.exe
install wglinfo.exe ${LOCALDESTDIR}/bin
MinGW/MSYS development environment
Part 4: Building Qt 4
Index ..  Base system ..  Local packages ..  GTK+ ..  Qt .. Tools ..  Projects ..  Home .

This section describes how to compile the Qt library.

Building Qt 4

Qt 4 is a framework for application development.

Downlaod and build the Qt library using the following commands:

cd $LOCALBUILDDIR && \
wget -c http://download.qt-project.org/official_releases/qt/4.8/4.8.5/qt-everywhere-opensource-src-4.8.5.zip && \
unzip qt-everywhere-opensource-src-4.8.5.zip && \
cd qt-everywhere-opensource-src-4.8.5 && \
./configure.exe -prefix $LOCALDESTDIR/qt4 -release -opensource && \
mingw32-make

Press y to accept the license.

Install it:

mingw32-make install

Qt builds can take a very long time.

MinGW/MSYS development environment
Part 5: Building extra tools
Index ..  Base system ..  Local packages ..  GTK+ ..  Qt .. Tools ..  Projects ..  Home .

This section describes how to compile some extra packages. You can skip this section if you don't need them.

Building readline

Readline is a set of libraries that offers command-line editing and history capabilities.

Build and install readline by executing the following commands:

cd $LOCALBUILDDIR && \
wget -c ftp://ftp.cwru.edu/pub/bash/readline-6.2.tar.gz && \
tar zxf readline-6.2.tar.gz && \
cd readline-6.2 && \
./configure --prefix=$LOCALDESTDIR && \
make SHLIB_LIBS=-lpdcurses && \
make install
Building gperf

gperf is a perfect hash function generator.

Build and install gperf by executing the following commands:

cd $LOCALBUILDDIR && \
wget -c http://ftp.gnu.org/pub/gnu/gperf/gperf-3.0.4.tar.gz && \
tar zxf gperf-3.0.4.tar.gz && \
cd gperf-3.0.4 && \
./configure --prefix=$LOCALDESTDIR && \
make && \
make install
Building wget

wget is a utility for downloading files from the internet

By building wget we replace

Build and install wget by executing the following commands:

# edit src/host.c
# comment out the line 
#	/extern int h_errno;
#
# after configure: edit src/config.h
#	#undef HAVE_SYMLINK
#	#undef HAVE_USLEEP
#
# make fails to link the exe:
#	append -lws2_32 to the command 
# (adding LDFLAGS to ./configure doesn't work)
#
cd $LOCALBUILDDIR && \
wget http://ftp.gnu.org/gnu/wget/wget-1.12.tar.bz2 && \
tar xjf wget-1.12.tar.bz2 && \
cd wget-1.12 && \
CPPFLAGS="$CPPFLAGS -DWINDOWS" ./configure --prefix=$LOCALDESTDIR --disable-iri && \
make && \
make install
MinGW/MSYS development environment
Part 5: Building projects
Index ..  Base system ..  Local packages ..  GTK+ ..  Qt .. Tools ..  Projects ..  Home .

This part descries how to build specific projects.

This part is out of date!

Building NetRadiant

NetRadiant is a Quake map editor

The NetRadiant build fails if it finds the system libjpeg headers. We move them to a temporary location:

Get the src... (not described)

Build and install netradiant by executing the following commands:

make DEPENDENCIES_CHECK=false DOWNLOAD_GAMEPACKS=no

Note: DEPENDENCIES_CHECK=false is necessary because we did not install git.

Notes: disabled install-dlls.sh by adding exit 0 to the start of the script.






  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值