建置
外部套件
完整的建置需要您從其他地方取得的外部函式庫。 大部分(如果不是全部)都是可選的,如果找不到外部函式庫,configure 會以功能減少的方式建置 graphviz。 這些函式庫的較新版本應該沒問題 - 如果不行,請告訴我們。
可以在 Graphviz 的原始碼下載頁面上找到這些外部函式庫的清單。
注意事項
- GD (用於 PNG、GIF、JPEG 的通用點陣圖形驅動程式)
- ZLIB (點陣圖影像壓縮) 注意:使用
./configure -s
來建置共享函式庫。(請參閱zlib-1.2.3/Makefile
中的注意事項)
這些函式庫 (靜態或動態) 及其介面標頭檔必須已在您的系統上。 如果您安裝自己的這些套件副本也沒關係,但您可能需要告訴 make 或 configure 在哪裡找到它們。 執行 configure --help
以取得詳細資訊。
在大多數 Linux 發行版上,這些套件已安裝或可從發行版中包含的套件安裝。 您可能需要安裝一些 -devel
套件才能取得包含的標頭檔。 此外,其中一些套件需要其他套件,因此為了穩定起見,您應該使用一些自動安裝機制,例如 rpms 或 macports,或尋找完整的套件。
簡略建置說明
從下載的原始碼套件建置 graphviz 的建議方法是通常的
./configure
make
make install
如果您是從 Git 原始碼建置,則必須有最新版本的 libtool
、libltdl-dev
、automake
、autoconf
和 pkg-config
/pkgconf
。 使用以下命令建置
./autogen.sh
make
make install
autogen.sh
接受與其為後續使用產生的 configure
指令碼相同的選項。
詳細建置說明
首選的影像渲染器是 cairo,並由 pango 提供字型支援。 這處理各種點陣圖格式,以及 svg、pdf 和 PostScript。
通用點陣驅動程式是 gd
,它可以設定為產生 GIF (無壓縮)、PNG (無損壓縮)、JPEG (有損壓縮) 和無線點陣圖 (WBMP) 檔案。 壓縮器都需要 zlib
。 在目前的建置中,我們使用頂層的 config.h
檔案來定義各種符號,例如
HAVE_JPEG
HAVE_PNG
此檔案通常由 configure 根據您如何調用它以及在您的系統上找到的內容產生。
如果您不啟用基於 gd
的驅動程式,graphviz 仍然會有 PostScript 和 SVG 的 printf
樣式驅動程式。(但是,即使這些驅動程式也能透過 Freetype 在可用時獲得更好的文字大小估算值。)
Unix 的建置工具
使用 GNU autoconf 產生的 configure
。 這隨附於原始碼套件。 這通常在 vanilla Linux 發行版上運作良好,Tcl/Tk、freetype-devel 和 libjpeg 已由 root 安裝在 /usr
下。 它在其他版本的 Unix 上運作良好,但可能需要調整 configure
的命令列引數。 對於 Linux,您也可以直接從這裡取得原始碼 tarball 或 RPM。
首先,如果您使用 Git 中的原始碼,請執行 ./autogen.sh
以產生 configure
指令碼。 如果您使用 graphviz-<version>.tar.gz
中的原始碼,則不需要此 autogen.sh
步驟。
接下來,執行 configure。 如需可能 configure 選項的說明,請執行
./configure --help
例如,我使用
./configure --prefix=$HOME/arch/sgi.mips3 \
--with-freetypeincludedir=$HOME/arch/$ARCH/include/freetype2 \
--with-freetypelibdir=$HOME/arch/$ARCH/lib \
--with-tcl=/usr/common/tcl8.3.3
顯然,您會變更路徑名稱以反映您的安裝。
請注意,會自動搜尋 ${prefix}/include
目錄以取得標頭,並搜尋 ${prefix}/lib
以取得函式庫。
如果您在一個或多個可選的指令碼語言繫結方面遇到問題,可以使用例如 --disable-perl
來停用它們。
當 configure 完成時,它會報告找到哪些可選套件以及啟用哪些 Graphviz 功能。 如果某些您預期的套件或功能未顯示為使用,您可能需要檢查 config.log 檔案或 configure.ac 或 configure 檔案,以了解出了什麼問題。 通常,可以使用環境變數或 configure 的命令列旗標來解決任何問題。
configure 完成後,請使用以下命令完成建置
gmake
gmake install
win32 的建置工具
請參閱 Microsoft Windows 的獨立建置注意事項。
只要稍具耐心,您很可能可以在 Microsoft Windows 上安裝的 UWIN 或 Cygwin 上建置 Graphviz。 您仍然需要各種第三方套件才能啟用所有 Graphviz 驅動程式。
Unix 平台特定的建置注意事項
Apple Mac OS/X
目前,Glen Low 提供了功能完整的 Graphviz 移植版本。 此外,Ryan Schmidt 維護適用於 macports 的 Graphviz 版本。
我們建議使用 macports 安裝所需的第三方函式庫。 安裝這些函式庫後,使用 configure 和 make 的標準建置會運作良好。 唯一的警告是,有時會選取不相容的非 GNU 工具,而不是所需的 GNU 版本。
為 OS X、Snow Leopard 編譯 Smyrna (Amanda Stent)
Xcode:
首先,如果您是從 Leopard 升級上來的,您必須重新安裝開發者工具。這是無法避免的,我試過了,您就是得重裝。
Macports:
接著您必須卸載並清理 Macports 的 ports,全部都要。趁這個機會重新安裝 Macports 本身。網路上有遷移說明,但實際操作起來比他們說的要複雜一點,因為有些連結(例如 hs-ports)會不存在,您必須手動解決這些障礙。
簡而言之,要乾淨安裝 Macports,請執行以下操作:
sudo port -f uninstall installed
sudo port clean --work --archive all
and then new macports
and then sudo port install the things you need now
and possibly sudo port selfupdate and sudo port upgrade outdated at the end
然後您必須安裝 Smyrna 所需的所有工具,例如 glut、glade 等,以及它們的所有相依性。這需要花費數天。
現在,macports 不會單獨處理 glut。這很狡猾,因為如果您說要安裝 glut,似乎會發生一些事,但實際上 glut 現在是與 mesa 一起提供的。這會讓您感到困惑。(glut 的真正核心是 mesa 套件的一部分 - 編者註。)
Graphviz:
接著您取得 graphviz 並使用 --with-smyrna
進行配置。我使用了以下指令:
configure --with-smyrna --with-glutincludedir=/opt/local/var/macports/software/mesa/7.6.1_1+hw_render/opt/local/include --with-glutlibdir=/opt/local/var/macports/software/mesa/7.6.1_1+hw_render/opt/local/lib --prefix=/usr/local/share/graphviz
我使用
configure --with-smyrna --with-glutincludedir=/opt/local/include --with-glutlibdir=/opt/local/lib
網路上說要使用 gcc 的 -framework 命令列選項;然而,我無法弄清楚如何讓它在 graphviz 的 makefile 和 configure 檔案中運作。
現在,我到了某個階段,它開始抱怨權限問題,並拒絕繼續下去。所以您可能需要在原始碼目錄中執行 chmod。
然後我到了它正在建置 gv_perl.cpp 的階段,它也拒絕繼續下去。我最終透過將對 XS 的呼叫改為 XSPROTO 來解決這個問題,從而避免了對 XSUB.h
的需求(它對您有什麼作用?沒有!)。
接著它說完成了,但當我去執行它時,它因為缺少一些 template.dot 而無法啟動,所以您再次執行 make clean,然後再執行 make install,因為到現在您也已經困惑了。
然後它應該就能運作了!
順帶一提,偷偷地 cd 到 macosx 資料夾並使用標示您作業系統的 makefile 進行建置是行不通的。
AIX
Matt Fago 告訴我們,需要 --enable-shared=no
,否則可執行檔在看似正確的編譯後會發生 segfault。(錯誤 #421)
Solaris
將 /usr/ccs/bin
放入 $PATH
HP-UX
X11 套件必須包含 /usr/contrib/X11R6
以及基礎的東西。由於某些原因,GNU autoconf 似乎無法在此位置找到 X11,因此您可能需要將以下內容新增至 ./configure
行中:
--with-Xawincludedir=/usr/contrib/X11R6/include --with-Xawlibdir=/usr/contrib/X11R6/lib