Friday, September 17, 2010

gnuplot installation

下載
gnuplot-4.4.1.tar.gz
安裝檔案: http://sourceforge.net/projects/gnuplot/files/gnuplot/4.4.1/gnuplot-4.4.1.tar.gz/download
使用手冊(User Manual): http://ncu.dl.sourceforge.net/project/gnuplot/gnuplot/4.4.1/gnuplot-4.4.1.pdf

安裝
解壓縮所下載的檔案,執行以下步驟:
1. 編譯(build) 執行:
$ cd gnuplot-4.4.0
$ ./configure
$ make

執行 configure 的記錄檔儲存於 config.log 檔案,可以查看內容得知是否有任何問題。

2. 測試(test) 執行
$ make check

3. 安裝(insatll) 執行
$ make install

將於系統安裝 /usr/local/bin/gnuplot 主程式。

安裝套件
查詢可用套件
$ yum search gnuplot
gnuplot.i386 : A program for plotting mathematical expressions and data.
gnuplot.x86_64 : A program for plotting mathematical expressions and data.

32-bit 機器 (i686) 選擇安裝 gnuplot.i386 套件,而 64-bit 機器 (x86_64) 選擇安裝 gnuplot.x86_64 套件。以安裝於 32-bit 機器為例:

$ sudo yum install gnuplot.i386


Troubleshooting
在 CentOS 5.5,執行 configure 完畢後,執行 make 時,遇到與 "libreadline.so: undefined reference" 有關的錯誤,如下
gcc -g -O2 -o bf_test bf_test.o binary.o alloc.o -lreadline -lreadline -lreadline -lreadline -lm -L/lib64 -lz -lpangocairo-1.0 -lpango-1.0 -lcairo -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libreadline.so: undefined reference to `PC'/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libreadline.so: undefined reference to `tgetflag'/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libreadline.so: undefined reference to `tgetent'/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libreadline.so: undefined reference to `UP'/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libreadline.so: undefined reference to `tputs'/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libreadline.so: undefined reference to `tgoto'/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libreadline.so: undefined reference to `tgetnum'/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libreadline.so: undefined reference to `BC'/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libreadline.so: undefined reference to `tgetstr'collect2: ld returned 1 exit statusmake[3]: *** [bf_test] Error 1

解決方式是在進行 configure 時,加上參數 "--with-readline=gnu",使用 GNU readline library 而非 gnuplot's builtin readline,命令如下:
./configure --with-readline=gnu

額外補充...
1. 有些人提到和 ncurses (new curses) library 有關,請參閱 http://old.nabble.com/I-could-not-find-libreadline-td13809746.html
不過經過嘗試,依舊無法成功 make。

2. 也有人提到安裝 ncurses-devel (使用 yum install ncurses-devel) 可以解決,請參閱 https://www.centos.org/modules/newbb/viewtopic.php?topic_id=23628
不過系統本來就有安裝 ncurses-devel (ncurses-devel.i386 and ncurses-devel.x86_64)

1 comment:

  1. Try:
    ./configure LDFLAGS="-lncurses"

    It's discussed here:
    http://sourceforge.net/tracker/?func=detail&aid=3093208&group_id=2055&atid=102055

    (Whoops - posted in the wrong place the first time!)
    Cheers,
    Peter

    ReplyDelete