2012年9月5日 星期三

在MinGW下編譯FFmpeg

Step 1. 下載FFmpeg(download)
  注意若要在MinGW下編譯,ffmpeg.org版本會有問題
  這裡使用zeranoe FFmpeg builds版本,可正常編譯
Step 2. 編譯FFmpeg
  在編譯FFmpeg前有幾個相依性套件需先安裝(pkg-config、glib、zlib、SDL、yasm)
  相關安裝請參考前幾篇網誌。
  (1) ./configure --enable-static --enable-shared
      --enable-memalign-hack --enable-ffplay
  (2) make
  (3) make install

注意在這裡編譯後並不會產生ffserver.exe,是因為在MinGW平台並無對應網路API,若要編譯出ffserver.exe可在cygwin平台或Linux平台即可

在MinGW中安裝SDL

./configure --prefix=/mingw
make
make install
隱藏文章

在MinGW安裝pkg-config

Step1. 到GTK下載套件(download)
Step2. 安裝套件

  1. 將GLib Package中的libglib-2.0-0.dll複製到C:\MinGW\bin
  2. 將Zlib Package中的zlib1.dll複製到C:\MinGW\bin
  3. 將pkg-config Package中的pkg-config.exe複製到C:\MinGW\bin
  4. 將gettext-runtime Package中的intl.dll複製到C:\MinGW\bin
Step3. 設定環境變數
     cat >> /usr/local/etc/profile.local << "EOF"
     if [ -z "$PKG_CONFIG" ]; then
           export PKG_CONFIG=/mingw/bin/pkg-config.exe
     fi
     if [ -z "$PKG_CONFIG_PATH" ]; then
           export PKG_CONFIG_PATH=/mingw/lib/pkgconfig:/usr/local/lib/pkgconfig
     fi

隱藏文章

編譯zlib

./configure --prefix=/mingw
make -f win32/Makefile.gcc
cp zlib1.dll /mingw/bin/zlib1.dll
cp zconf.h /mingw/include/zconf.h
cp zlib.h /mingw/include/zlib.h
cp libz.a /mingw/lib/libz.a
cp libz.dll.a /mingw/lib/libz.dll.a

隱藏文章

解壓縮.tar.xz檔案

解壓縮 xxx.tar.xz檔案
$xz -d xxx.tar.xz
$tar -xvf xxx.tar
隱藏文章

在MinGW下編譯yasm

Yasm是一個NASM Assembler因編譯ffmpeg需要,我們將嘗試在MinGW環境下編譯Yasm函式庫
Step1. 下載YASM函式庫(download)
Step2. 編譯YASM函式庫
           ./configure -prefix=/mingw
           make
           make install
    隱藏文章

2012年9月4日 星期二

安裝MinGW

Step 1. 下載MinGW(download)
Step 2. 安裝MinGW(勾選以下組合)
            C Compiler
            C++ Compiler
            MSYS Basic System
            MSYS Developer Toolkit
Step 3. 安裝其他套件
            mingw-get install msys-wget
            mingw-get install msys-zip
            mingw-get install msys-unzip
Step4. 環境設定
           MSYS是一個相當精簡的系統這個系統內含與
           POSIX相容的Shell和一些必備的基本工具,在
           預設狀況下MSYS安裝的路徑會被Mount為root
           目錄或/usr目錄,MinGW安裝路徑會被Mount為
            /mingw,而其它磁碟D:\會被Mount為/d。
         
           除此之我們還要Mount幾個額外目錄
           /opt : 安裝額外套件的地方
           /build : 存放編譯原始碼以及編譯的地方
           /usr/local : 存放編譯完套件安裝的地方

           Mount這些目錄如下所示,值得一提的是MSYS
           與正規Linux不同的是下了Mount指令後會直接更
           新/etc/fstab設定。
           mount 'C:\MinGW\local\' /usr/local
           mount 'C:\MinGW\opt\' /opt
           mount 'C:\MinGW\build\' /build
           mkdir /opt/bin /usr/local/{bin,etc,include,lib,share}
           mkdir /usr/local/lib/pkgconfig
Step 5. 建構profile.local
            cat > /usr/local/etc/profile.local << "EOF"
            #
            # /usr/local/etc/profile.local
            #

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

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

            PATH="${PATH}:/opt/bin"
            PS1='\[\033[32m\]\u@\h \[\033[33m\w\033[0m\]$ '
            export PATH PS1

            EOF
Step6. 確認在登錄時可以執行:
           cat >> /etc/profile << "EOF"
           if [ -f /usr/local/etc/profile.local ]; then
                 source /usr/local/etc/profile.local
           fi
         
           EOF
Step7. 新增兩個額外的環境變數來指示套件建構目錄
           以及安裝的前置字串,這份指南的後面會依賴
           這些變數來指到正確的目錄。
 
           cat >> /usr/local/etc/profile.local << "EOF"
           # package build directory
           LOCALBUILDDIR=/build
           # package installation prefix
           LOCALDESTDIR=/usr/local
           export LOCALBUILDDIR LOCALDESTDIR

         
           EOF

Step8. 套用新設定
           source /usr/local/etc/profile.local

  隱藏文章