在msys/MinGW环境下编译gstreamer

来源:互联网 发布:单片机晶振电路的作用 编辑:程序博客网 时间:2024/05/17 09:15

在编译gstreamer时,做了个笔记,整理如下:

参考:http://gstreamer.freedesktop.org/wiki/GStreamer_Cross_Compile_With_MinGW_In_Chroot_Environment

mkdir -p /d/gm/tmp
cd /d/gm/tmp


1. Glib
wget http://ftp.gnome.org/pub/gnome/binaries/win32/glib/2.18/glib_2.18.2-1_win32.zip
wget http://ftp.gnome.org/pub/gnome/binaries/win32/glib/2.18/glib-dev_2.18.2-1_win32.zip
mkdir -p /d/gm/glib_2.18.2-1
cd /d/gm/glib_2.18.2-1
unzip /d/gm/tmp/glib_2.18.2-1_win32.zip
unzip /d/gm/tmp/glib-dev_2.18.2-1_win32.zip
find -name "*/.pc" | xargs sed -e 's,^prefix=.*$,prefix=/d/gm,'

wget http://ftp.gnome.org/pub/gnome/binaries/win32/gtk+/2.14/gtk+-bundle_2.14.4-20081108_win32.zip
mkdir -p /d/gm/gtk+-bundle_2.14.4
cd /d/gm/gtk+-bundle_2.14.4
unzip /d/gm/tmp/gtk+-bundle_2.14.4-20081108_win32.zip
cp -rf /d/gm/gtk+-bundle_2.14.4/* /mingw

2. Iconv
cd /d/gm/tmp
wget http://www.gimp.org/~tml/gimp/win32/libiconv-1.9.1.bin.woe32.zip
mkdir -p /d/gm/libiconv-1.9.1
cd /d/gm/libiconv-1.9.1
unzip /d/gm/tmp/libiconv-1.9.1.bin.woe32.zip

3. Gettext
cd /d/gm/tmp
wget http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/gettext-runtime-0.17-1.zip
wget http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/gettext-runtime-dev-0.17-1.zip
wget http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/gettext-tools-0.17.zip
mkdir /d/gm/gettext-runtime-0.17-1
cd /d/gm/gettext-runtime-0.17-1
unzip /d/gm/tmp/gettext-runtime-0.17-1.zip
unzip /d/gm/tmp/gettext-runtime-dev-0.17-1.zip
unzip /d/gm/tmp/gettext-tools-0.17.zip
cp -rf /d/gm/gettext-runtime-0.17-1/* /mingw

wget http://downloads.sourceforge.net/mingw/gettext-0.16.1-1-bin.tar.bz2?modtime=1190250508&big_mirror=1
wget http://downloads.sourceforge.net/mingw/gettext-0.16.1-1-dll.tar.bz2?modtime=1190250566&big_mirror=1
wget http://downloads.sourceforge.net/mingw/gettext-0.16.1-1-src.tar.bz2?modtime=1190250595&big_mirror=1
wget http://downloads.sourceforge.net/mingw/gettext-0.16.1-MSYS-1.0.11-1-src.tar.bz2?modtime=1206474223&big_mirror=1
wget http://downloads.sourceforge.net/mingw/gettext-0.16.1-MSYS-1.0.11-1.tar.bz2?modtime=1206474271&big_mirror=1
wget http://downloads.sourceforge.net/mingw/gettext-devel-0.16.1-MSYS-1.0.11-1.tar.bz2?modtime=1206474318&big_mirror=1
mkdir -p /d/gm/gettext-runtime-0.16.1-1
cd /d/gm/gettext-runtime-0.16.1-1
tar jxvf /d/gm/tmp/gettext-0.16.1-1-bin.tar.bz2
tar jxvf /d/gm/tmp/gettext-0.16.1-1-dll.tar.bz2
tar jxvf /d/gm/tmp/gettext-0.16.1-MSYS-1.0.11-1.tar.bz2
tar jxvf /d/gm/tmp/gettext-devel-0.16.1-MSYS-1.0.11-1.tar.bz2

4. Liboil
cd /d/gm/tmp
wget http://liboil.freedesktop.org/download/liboil-0.3.15.tar.gz
tar zxvf liboil-0.3.15.tar.gz
cd liboil-0.3.15
./configure --prefix=/x
make -k
rm -rf /d/gm/tmp/liboil-0.3.15-dist
make -k install DESTDIR=/d/gm/tmp/liboil-0.3.15-dist
mv /d/gm/tmp/liboil-0.3.15-dist/x /d/gm/liboil-0.3.15

5. Libxml2
cd /d/gm/tmp
#wget ftp://xmlsoft.org/libxml2/libxml2-2.6.31.tar.gz
#tar zxvf libxml2-2.6.31.tar.gz
#cd libxml-2.6.31
#make install DESTDIR=/d/gm/tmp/libxml2-2.6.31-dist
#mv /d/gm/tmp/libxml2-2.6.31-dist/x /d/gm/libxml2-2.6.31
wget ftp://xmlsoft.org/libxml2/libxml2-2.7.2.tar.gz
tar zxvf libxml2-2.7.2.tar.gz
cd libxml2-2.7.2
./configure --prefix=/x --with-threads
make
make install DESTDIR=/d/gm/tmp/libxml2-2.7.2-dist
mv /d/gm/tmp/libxml2-2.7.2-dist/x /d/gm/libxml2-2.7.2

如果是因为thread.c编译不过,修改config.h文件

/* #undef HAVE_LIBHISTORY */
/* #undef HAVE_LIBREADLINE */
/* #define HAVE_LIBPTHREAD  */
/* #define HAVE_PTHREAD_H  */
#ifndef HAVE_WIN32_THREADS
#define HAVE_WIN32_THREADS
#endif
#if defined(HAVE_LIBREADLINE)
#undef HAVE_LIBREADLINE
#endif
#if defined(HAVE_PTHREAD_H)
#undef HAVE_PTHREAD_H
#endif

修改thread.c文件

#if defined(HAVE_LIBREADLINE)
#undef HAVE_LIBREADLINE
#endif
#if defined(HAVE_PTHREAD_H)
#undef HAVE_PTHREAD_H
#endif

/* #define DEBUG_THREADS */

 #ifdef HAVE_PTHREAD_H

 
6.  Zlib
cd /d/gm/tmp
wget http://www.gzip.org/zlib/zlib-1.2.3.tar.gz
tar zxvf zlib-1.2.3.tar.gz
cd zlib-1.2.3

cp /mingw/bin/gcc.exe /mingw/bin/cc.exe
make
mkdir -p /d/gm/zlib-1.2.3/{bin,lib,include}
/usr/bin/install -c  libz.a /d/gm/zlib-1.2.3/lib/libz.a
cp zlib.h zconf.h /d/gm/zlib-1.2.3/include


7. Libpng
mkdir -p /d/gm/dependences
for i in zlib-1.2.3 libxml2-2.7.2 liboil-0.3.15 gettext-runtime-0.17-1 libiconv-1.9.1 glib_2.18.2-1 ; do /
  cp -rf /d/gm/$i/* /d/gm/dependences/ ; /
done


cd /d/gm/tmp
wget http://prdownloads.sourceforge.net/libpng/libpng-1.2.29.tar.bz2
tar jxvf libpng-1.2.29.tar.bz2
cd libpng-1.2.29
LDFLAGS=-L/d/gm/dependences/lib CFLAGS=-I/d/gm/dependences/include PKG_CONFIG_PATH=/d/gm/dependences/lib/pkgconfig ./configure --prefix=/x
make
make -k install DESTDIR=/d/gm/tmp/libpng-1.2.29-dist
mv /d/gm/tmp/libpng-1.2.29-dist/x/ /d/gm/libpng-1.2.29


8. Libogg
cd /d/gm/tmp
wget http://downloads.xiph.org/releases/ogg/libogg-1.1.3.tar.gz
tar zxvf libogg-1.1.3.tar.gz
cd libogg-1.1.3
./configure --prefix=/x
make
make  install DESTDIR=/d/gm/tmp/libogg-1.1.3-dist
mv /d/gm/tmp/libogg-1.1.3-dist/x /d/gm/libogg-1.1.3


9. Libvorbis
mkdir -p /d/gm/dependences
for i in zlib-1.2.3 libxml2-2.7.2 liboil-0.3.15 gettext-runtime-0.17-1 libiconv-1.9.1 glib_2.18.2-1 libpng-1.2.29 libogg-1.1.3; do /
  cp -rf /d/gm/$i/* /d/gm/dependences/ ; /
done

cd /d/gm/tmp
wget http://downloads.xiph.org/releases/vorbis/libvorbis-1.2.0.tar.gz
tar zxvf libvorbis-1.2.0.tar.gz
cd libvorbis-1.2.0
LDFLAGS=-L/d/gm/dependences/lib CFLAGS=-I/d/gm/dependences/include PKG_CONFIG_PATH=/d/gm/dependences/lib/pkgconfig ./configure --prefix=/x
make LDFLAGS='-L/d/gm/dependences/lib -logg' -k
make LDFLAGS='-L/d/gm/dependences/lib -logg' -k install DESTDIR=/d/gm/tmp/libvorbis-1.2.0-dist
mv /d/gm/tmp/libvorbis-1.2.0-dist/x /d/gm/libvorbis-1.2.0

10. a52dec
cd /d/gm/tmp
wget http://liba52.sourceforge.net/files/a52dec-0.7.4.tar.gz
tar zxvf a52dec-0.7.4.tar.gz
cd a52dec-0.7.4

PKG_CONFIG_PATH=/d/gm/dependences/lib/pkgconfig ./configure --prefix=/x
make
make install DESTDIR=/d/gm/tmp/a52dec-0.7.4-dist
mv /d/gm/tmp/a52dec-0.7.4-dist/x /d/gm/a52dec-0.7.4


11. mpeg2dec
cd /d/gm/tmp/
wget http://libmpeg2.sourceforge.net/files/libmpeg2-0.5.1.tar.gz
tar zxvf libmpeg2-0.5.1.tar.gz
cd libmpeg2-0.5.1
PKG_CONFIG_PATH=/d/gm/dependences/lib/pkgconfig ./configure --prefix=/x --enable-shared
make
make install DESTDIR=/d/gm/tmp/libmpeg2-0.5.1-dist
mv /d/gm/tmp/libmpeg2-0.5.1-dist/x /d/gm/libmpeg2-0.5.1


12 更新libtool至mingw-libtool-2.2-1.zip
http://sourceforge.net/project/showfiles.php?group_id=204414
来自: http://sourceforge.net/projects/mingw-cross/

cd /d/gm/tmp
wget http://downloads.sourceforge.net/mingw-cross/mingw-libtool-2.2-1.zip?modtime=1205284866&big_mirror=0
unzip /d/gm/tmp/mingw-libtool-2.2-1.zip
cp -rf /d/gm/tmp/mingw-libtool-2.2-1/* /mingw/
cp -rf /d/gm/tmp/mingw-libtool-2.2-1/* /usr/local/
13. make v3.79
http://sourceforge.net/project/showfiles.php?group_id=2435&package_id=23918

cd /d/gm/tmp
wget http://downloads.sourceforge.net/mingw/make-3.79.1-20010722.tar.gz?modtime=995634671&big_mirror=1
cd /bin
mv /bin/make.exe /bin/make-v3.81.exe
tar zxvf /d/gm/tmp/make-3.79.1-20010722.tar.gz
cp /bin/make.exe /bin/make-v3.79.1.exee

14 bison 2.1 & flx
bison 2.1来自gnuwin32
flex 来自 sourceforge.net/projects/mingw "Tools for MSYS-1.0.11" flex-2.5.33-MSYS-1.0.11-1.tar.bz2
将GTK+_Download的内容(除源码外的所有的包)全部解压至c:/msys
flex-2.5.33-MSYS-1.0.11-1.tar.bz2 需要regex-0.12-MSYS-1.0.11-1.tar.bz2

cd /d/gm/tmp
wget http://downloads.sourceforge.net/mingw/flex-2.5.33-MSYS-1.0.11-1.tar.bz2?modtime=1206482068&big_mirror=1
wget http://downloads.sourceforge.net/mingw/bison-2.3-MSYS-1.0.11-1.tar.bz2?modtime=1206481666&big_mirror=1
wget http://downloads.sourceforge.net/mingw/regex-0.12-MSYS-1.0.11-1.tar.bz2?modtime=1206482314&big_mirror=1
wget http://downloads.sourceforge.net/mingw/mingw-libgnurx-2.5.1-bin.tar.gz?modtime=1178542247&big_mirror=1
wget http://downloads.sourceforge.net/mingw/mingw-libgnurx-2.5.1-dev.tar.gz?modtime=1178542272&big_mirror=1

wget http://downloads.sourceforge.net/mingw/autoconf2.1-2.13-3-bin.tar.bz2?modtime=1190249412&big_mirror=1
wget http://downloads.sourceforge.net/mingw/autoconf2.5-2.61-1-bin.tar.bz2?modtime=1190249465&big_mirror=1
wget http://downloads.sourceforge.net/mingw/autoconf-4-1-bin.tar.bz2?modtime=1190249543&big_mirror=1

wget http://downloads.sourceforge.net/mingw/autogen-5.9.2-MSYS-1.0.11-1-bin.tar.gz?modtime=1206735979&big_mirror=1
wget http://downloads.sourceforge.net/mingw/autogen-5.9.2-MSYS-1.0.11-1-dev.tar.gz?modtime=1206736015&big_mirror=1
wget http://downloads.sourceforge.net/mingw/autogen-5.9.2-MSYS-1.0.11-1-dll25.tar.gz?modtime=1206736046&big_mirror=1

wget http://downloads.sourceforge.net/mingw/automake1.10-1.10-1-bin.tar.bz2?modtime=1190249778&big_mirror=1
wget http://downloads.sourceforge.net/mingw/automake1.9-1.9.6-2-bin.tar.bz2?modtime=1190249841&big_mirror=1
wget http://downloads.sourceforge.net/mingw/automake-3-1-bin.tar.bz2?modtime=1190249888&big_mirror=1

wget http://downloads.sourceforge.net/mingw/perl-5.6.1-MSYS-1.0.11-1.tar.bz2?modtime=1206455338&big_mirror=1
wget http://downloads.sourceforge.net/mingw/perl-man-5.6.1-MSYS-1.0.11-1.tar.bz2?modtime=1206455383&big_mirror=1

wget http://downloads.sourceforge.net/mingw/crypt-1.1-1-MSYS-1.0.11-1.tar.bz2?modtime=1206481779&big_mirror=1

tar jxvf /d/gm/tmp/autoconf2.1-2.13-3-bin.tar.bz2
tar jxvf /d/gm/tmp/autoconf2.5-2.61-1-bin.tar.bz2
tar jxvf /d/gm/tmp/autoconf-4-1-bin.tar.bz2
tar jxvf /d/gm/tmp/automake1.9-1.9.6-2-bin.tar.bz2
tar jxvf /d/gm/tmp/automake1.10-1.10-1-bin.tar.bz2
tar jxvf /d/gm/tmp/automake-3-1-bin.tar.bz2

cp -rf /d/gm/tmp/usr/local/* /

cd /
tar jxvf /d/gm/tmp/flex-2.5.33-MSYS-1.0.11-1.tar.bz2
tar jxvf /d/gm/tmp/bison-2.3-MSYS-1.0.11-1.tar.bz2
tar jxvf /d/gm/tmp/regex-0.12-MSYS-1.0.11-1.tar.bz2
tar zxvf /d/gm/tmp/mingw-libgnurx-2.5.1-bin.tar.gz
tar zxvf /d/gm/tmp/mingw-libgnurx-2.5.1-dev.tar.gz
tar zxvf /d/gm/tmp/autogen-5.9.2-MSYS-1.0.11-1-bin.tar.gz
tar zxvf /d/gm/tmp/autogen-5.9.2-MSYS-1.0.11-1-dev.tar.gz
tar zxvf /d/gm/tmp/autogen-5.9.2-MSYS-1.0.11-1-dll25.tar.gz
tar jxvf /d/gm/tmp/perl-5.6.1-MSYS-1.0.11-1.tar.bz2
tar jxvf /d/gm/tmp/perl-man-5.6.1-MSYS-1.0.11-1.tar.bz2
tar jxvf /d/gm/tmp/crypt-1.1-1-MSYS-1.0.11-1.tar.bz2
cd /d/gm/tmp


14. 更新m4
cd /d/gm/tmp
wget http://prdownloads.sourceforge.net/mingw/m4-1.4.7-MSYS.tar.bz2?download
cd /
tar jxvf /d/gm/tmp/m4-1.4.7-MSYS.tar.bz2

或者是(编译不成功):
wget http://prdownloads.sourceforge.net/mingw/m4-1.4.7-MSYS-src.tar.bz2?download
tar jxvf m4-1.4.7-MSYS-src.tar.bz2
cd m4-1.4.7-MSYS-src
cp /bin/make-v3.81.exe /bin/make.exe

cp /bin/make.exe /bin/make-v3.81.exe

./configure --prefix=/usr
make
make install


13. 更新到:autoconf-2.63 (编译不成功)
cd /d/gm/tmp
wget ftp://ftp.gnu.org/gnu/autoconf/autoconf-2.63.tar.gz
tar zxvf autoconf-2.63.tar.gz
cd autoconf-2.63
./configure --prefix=/usr
make
make install
(使用v3.79.1版本的make,避免无限递归)
(!!!注:先更新autoconf-2.63,再更新m4,否则在更新m4时无法编译)


12. Libdvdread/Libdvdnav (编译不成功)
cd /d/gm/tmp
wget http://www7.mplayerhq.hu/MPlayer/releases/dvdnav/libdvdnav-4.1.2.tar.gz
tar zxvf libdvdnav-4.1.2.tar.gz
cd libdvdnav-4.1.2
./autogen.sh noconfig
PKG_CONFIG_PATH=/d/gm/dependences/lib/pkgconfig ./configure --prefix=/x
make LDFLAGS=-L/d/gm/dependences/lib CFLAGS=-I/d/gm/dependences/include PKG_CONFIG_PATH=/d/gm/dependences/lib/pkgconfig -k
make -k install DESTDIR=/d/gm/tmp/libdvdnav-4.1.2-dist
mv /d/gm/tmp/libdvdnav-4.1.2-dist/x /d/gm/libdvdnav-4.1.2

msys-crypt-0.dll



cd /d/gm/tmp
mkdir -p /d/gm/dependences
for i in zlib-1.2.3 libxml2-2.7.2 liboil-0.3.15 gettext-runtime-0.17-1 libiconv-1.9.1 glib_2.18.2-1 libpng-1.2.29 libogg-1.1.3; do /
  cp -rf /d/gm/$i/* /d/gm/dependences/ ; /
done


Building gstreamer
 
cp -rf /d/gm/dependences/* /mingw/

export CFLAGS='-mthreads -D_WIN32_WINNT=0x0501 -DWINVER=0x0501'


mkdir -p ~/src/gstreamer-dev
cd ~/src/gstreamer-dev

wget http://gstreamer.freedesktop.org/src/gstreamer/gstreamer-0.10.21.tar.gz
tar zxvf gstreamer-0.10.21.tar.gz
cd gstreamer-0.10.21
NOCONFIGURE=1 ./autogen.sh
cd ~/src/gstreamer-dev/gstreamer
PKG_CONFIG_PATH=/x/lib/pkgconfig ./configure --prefix=/x --host=i586-mingw32msvc


待续

 

 

原创粉丝点击