Language
Memo
Home > Memo > Vis5D+安裝筆記

Home

Projects

Memo

Links

Contact







Vis5D+安裝筆記:

(以下筆記是於VMWare底下的Ubuntu 12.04 Precise的Vis5D+安裝過程,上面只有系統,啥都沒灌)

  原在Ubuntu 11 oneiric下安裝,可是因為它libdrm的版本只到2.4.24(要求要2.4.30,不知道為Ubuntu 10可以這個就不行= =)索性就把系統升級到12.04。在安裝上因為有套件管理員可以用,所以不難:
  1. 下載Vis5D+解壓縮後跑一下configure,他就會告訴你缺什麼。
  2. 安裝3D函式庫Mesa,而Mesa缺makedepend,makedepend又有缺xproto、xorg-macros:
    套件管理員 > x11proto-core-dev > xutils-dev
  3. makedepend$ ./configure; make ; sudo make install
  4. 套件管理員 > flex > bison > libx11-dev > x11proto-gl-dev > libdrm-dev > x11proto-dri2-dev
    套件管理員> libxcb-glx0-dev > libxfixes-dev >
    套件管理員> libxdamage-dev > libxext-dev > libx11-xcb-dev >
  5. 缺:expat、LLVM,make時需要g++:
    套件管理員 > libexpat1-dev > llvm > g++
  6. Mesa$ ./configure ; make ; sudo make install
  7. 安裝Vis5D+,缺NETCDF、Mixkit(可以都不安裝沒關係,mixkit那個我也沒裝起來過...)
    Vis5D+$ ./configure --prefix=欲安裝之路徑 --with-netcdf=NETCDF lib的位置 --enable-threads; make
    --with-netcdf要指向NETCDF的lib,或者是把libnetcdf.a複製到Vis5D資料夾也可以(非必要)
    --enable-threads啟用平行運算功能
    如果編譯時遇上Fortran的問題,也可以加上--disable-fortran來跳過對Fortran程式的編譯
    (其他Flag的詳細說明請參考Vis5D Documentation - Chap 2. System requirements and Installation
    make時可能會遇上錯誤:error: conflicting types for 'round'
    檢查發現因為程式裡有自訂一個round的函式,這會與編譯器裡面預設的函數衝突,
    只要把./src下的misc.c misc.h修改,將那個自訂函數名稱由round改為custom_round即可。




(以下筆記是在VMWare底下的Ubuntu 10的安裝過程,跟上面其實差不多)

  1. 抓Vis5D+ 1.3.0Beta下來,解壓縮跑configure之後他會跟你說你缺什麼,
  2. 安裝3D函式庫Mesa,會有缺套件,要先安裝以下軟體
    套件管理員 > libtevent0 > libtevent-dev > libx11-dev > libdrm
    套件管理員 > x11proto-dri2-dev > x11proto-gl-dev > x11proto-xext-dev
    套件管理員 > libxext-dev > libfixes-dev > libxdamage-dev > libexpat1-dev
    套件管理員 > libxt-dev > g++
  3. Mesa$ ./configure ; make ; sudo make install
  4. 安裝libnetcdf-dev
  5. 到v5d+資料夾下./configure --prefix=/usr/local/vis5d+1.2.1/,然後檢查有沒有錯誤,再make
    遇上錯誤:error: conflicting types for 'round'
    查了一下發現因為程式裡有自訂一個round的程式,這樣會與編譯器裡面預設的函數衝突
    所以修改./src下的misc.c misc.h,將那個自訂函數名稱由round改為custom_round即可

    另外遇上./util下的igmk3d.f的型別不符問題
    DATA MISS/'80808080'X/
    Error: Arithmetic overflow converting INTEGER(8) to INTEGER(4) at (1). This check can be disabled with the option -fno-range-check
    在那個檔案裡面將miss指定為*8即可
    INTEGER(kind=8) MISS

    以及./util/kludge.f
    CALL IDATE(MON,IDAY,IYEAR)
    Error: Too many arguments in call to 'idate' at (1)
    由於我在這是用gfortran,gfortran中idate的用法為
    program test_idate
    integer, dimension(3) :: tarray
    call idate(tarray)
    print *, tarray(1)
    print *, tarray(2)
    print *, tarray(3)
    end program test_idate
    他是回傳一個陣列,不是三個變數,因此程式要改成
    INTEGER(Kind=4), dimension(3) :: DateArray
    INTEGER(Kind=4) :: MON,IDAY,IYEAR

    CALL IDate(DateArray)
    MON=DateArray(1)
    IDAY=DateArray(2)
    IYEAR=DateArray(3)
    詳細說明請參考:http://gcc.gnu.org/onlinedocs/gfortran/IDATE.html
    題外話:這方法其實是不建議使用的(http://gcc.gnu.org/onlinedocs/gcc-3.4.1/g77/IDate-Intrinsic--VXT-.html

    ./util/igg3d.f
    變數ENDMRK、NULL又遇上了kind=8被轉成kind=4的狀況,因此將其修改
    INTEGER(Kind=8) :: ENDMRK

    INTEGER(KIND=8) :: NULL
    DATA NULL/'80808080'X/
到此安裝即完成囉。

參考資料:http://blog.livedoor.jp/rootan2007/archives/51286706.html
     http://park8.wakwak.com/~y-yuuki/linux/install.html
     Vis5D Documentation - Chap 2. System requirements and Installation



<-Memo
inserted by FC2 system