How to build giflib in the MSYS?
Where to download the source codes?
How to extract it?
$ tar xvjf ./giflib-4.1.4.tar.bz2 |
How to build and install it?
Step1: Edit /etc/profile and add three entries.
export perllibdir=.:/usr/share/aclocal:/usr/share/aclocal-1.9:/usr/share/automake-1.9:$perllibdir alias aclocal='aclocal --acdir=/usr/share/aclocal -I /usr/share/aclocal-1.9 -I /usr/share/automake-1.9' alias automake='automake --libdir=/usr/share/automake-1.9' |
My system use automake-1.9. If readers are different, please revise this version.
Step2: Edit giflib-4.1.4/autogen.sh
#!/bin/sh
# This script runs commands necessary to generate a Makefile for libgif.
echo "Warning: This script will run configure for you -- if you need to pass" echo " arguments to configure, please give them as arguments to this script."
srcdir=`dirname $0` test -z "$srcdir" && srcdir=.
THEDIR="`pwd`"
source /etc/profile cd $THEDIR
cd $srcdir
aclocal autoheader libtoolize --automake automake --add-missing autoconf automake
cd $THEDIR
$srcdir/configure $*
exit 0 |
Step3: Build and Install it
$ ./autogen.sh --prefix=/mingw --disable-shared --enable-static $ MY_CURR_PATH=`pwd` $ make CFLAGS="-Du_int32_t=uint32_t -I$MY_CURR_PATH/lib $CFLAGS" $ cd ./util $ gcc -Du_int32_t=uint32_t -I$MY_CURR_PATH/lib -Du_int32_t=uint32_t -I/lib gifclrmp.c -o gifclrmp –L$MY_CURR_PATH/lib -L$MY_CURR_PATH/lib/.libs –lgif –lgetarg $ gcc -Du_int32_t=uint32_t -I$MY_CURR_PATH/lib -Du_int32_t=uint32_t -I/lib gifrotat.c -o gifrotat -L$MY_CURR_PATH/lib -L$MY_CURR_PATH/lib/.libs -lgif –lgetarg $ cd .. $ make install |
[Summarization]
1. u_int32_t has not been defined in the source codes, so I use MACRO to replace it with ease.
2. The configure file utilizes relative path to indicates where the header files locate, and it will lead to compiler error. As a result, the absolute path is adopted.
3. Both gifclrmp and gifrotat don’t have a proper compiling rules, it will fail to compile lack of the relative libraries. It should be a bug of configure.ac in the MSYS! As a result, I do with it manually:- (.