由source到執行檔 開放原始碼自由軟體 標準編譯流程 以 Pidgin 為例 依瑪貓 / 楊士青 <imacat@mail.imacat.idv.tw> 2011-01-19 , 2011-6-15 修
「由 source 到執行檔」簡報由 依瑪貓╱楊士青 製作, 以 創用CC Attribution-ShareAlike 3.0 Unported 授權條款 釋出。
標準流程步驟 sudo apt-get install build-essential intltool  libavahi-client-dev libavahi-glib-dev libdbus- glib-1-dev libgstfarsight0.10-dev libgstreamer- plugins-base0.10-dev libgtkspell-dev libidn11- dev libmeanwhile-dev libnss3-dev libperl-dev  libsasl2-dev libstartup-notification0-dev  libxss-dev network-manager-dev tk-dev
./configure --enable-cyrus-sasl --with-system- ssl-certs=/etc/ssl/certs
make
sudo make install
編譯: 將source轉成執行檔,方便系統執行。
標準流程步驟 tar xjf pidgin-2.8.0.tar.bz2
cd pidgin-2.8.0
./configure
make
make check
sudo make install
但是,在編譯之前…
安裝開發用的套件
安裝開發用的套件 sudo apt-get install build-essential  intltool libavahi-client-dev  libavahi-glib-dev libdbus-glib-1-dev  libgstfarsight0.10-dev libgstreamer- plugins-base0.10-dev libgtkspell-dev  libidn11-dev libmeanwhile-dev  libnss3-dev libperl-dev libsasl2-dev  libstartup-notification0-dev libxss- dev network-manager-dev tk-dev
build-essential 基本需要的編譯程式 gcc, g++, make
*-dev 開發用的套件
舉例: libxss XScreenSaver營幕保護程式的函式庫 Pidgin引用,來偵測使用者idle的時間
libxss1 執行用的函式庫 /usr/lib/libXss.so.1.0.0
執行時期連結, 引用到的程式,執行時需要, 所以要執行程式,要一起拉進來。
sudo apt-get install pidgin 會一起拉進 libxss1
libxss-dev 編譯用的定義檔 /usr/include/X11/extensions/scrnsaver.h static函式庫 /usr/lib/libXss.a
編譯時引用、連結,執行時不會用, 所以只有在編譯時才需要拉進來。 執行時不需要。
apt-get install pidgin 時, 因為安裝的是已編譯好的執行檔, 所以只需要 libxss1 , 不需要 libxss-dev ,
剩下的就很簡單了
標準流程 tar xjf pidgin-2.8.0.tar.bz2
cd pidgin-2.8.0
./configure
make
make check
sudo make install
./configure 檢查系統設定,作出因應處理。
configure 是 GNU 規定的標準工具, 是 autoconf 製作出來的 shell script 。 GNU的專案,規定要用autoconf。
因為方便好用,所以非GNU的專案, 也常見使用GNU autoconf。
使用GNU autoconf  configure 的非GNU專案: Apache BIND MySQL PostgreSQL Samba …
./configure --enable-cyrus-sasl \ --with-system-ssl-certs=/etc/ssl/certs --enable-cyrus-sasl :  使用 cyrus-sasl 功能 --with-system-ssl-certs :  指定 SSL 憑證目錄( /etc/ssl/certs )
./configure –-help 查看有哪些可用的選項
即使不是使用 GNU autoconf 的專案, 也常常使用類似名稱、類似功能的程式, 檢查系統設定,作出因應處理。
Perl 使用 Configure : ./Configure
OpenSSL使用 config : ./config
一點點深入瞭解GNU autoconf
GNU autoconf由簡易的範本, 來建立強大的 configure 程式。
configure 的範本檔為 configure.ac 。
除了 configure 以外, autoconf也用範本,製作其他檔案。
autoconf的一般範本檔為 .in 檔尾。 例如: config.h.in  =>  config.h Makefile.in  =>  Makefile
make 編譯,將原始碼轉成執行檔程式。
make 根據 Makefile 的編譯規則編譯。
前面提到, Makefile 由GNU autoconf, 從 Makefile.in 範本製作而成。
Makefile 中有很多特殊編譯功能。
GNU標準的 Makefile 功能

GNU Build System