Vis5D+安裝筆記:
(以下筆記是於VMWare底下的Ubuntu 12.04 Precise的Vis5D+安裝過程,上面只有系統,啥都沒灌)
原在Ubuntu 11 oneiric下安裝,可是因為它libdrm的版本只到2.4.24(要求要2.4.30,不知道為Ubuntu 10可以這個就不行= =)索性就把系統升級到12.04。在安裝上因為有套件管理員可以用,所以不難:
- 下載Vis5D+解壓縮後跑一下configure,他就會告訴你缺什麼。
- 安裝3D函式庫Mesa,而Mesa缺makedepend,makedepend又有缺xproto、xorg-macros:
套件管理員 > x11proto-core-dev > xutils-dev
makedepend$ ./configure; make ; sudo make install |
- 套件管理員 > flex > bison > libx11-dev > x11proto-gl-dev > libdrm-dev > x11proto-dri2-dev
套件管理員> libxcb-glx0-dev > libxfixes-dev >
套件管理員> libxdamage-dev > libxext-dev > libx11-xcb-dev >
- 缺:expat、LLVM,make時需要g++:
套件管理員 > libexpat1-dev > llvm > g++
Mesa$ ./configure ; make ; sudo make install |
- 安裝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的安裝過程,跟上面其實差不多)
- 抓Vis5D+ 1.3.0Beta下來,解壓縮跑configure之後他會跟你說你缺什麼,
- 安裝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++
Mesa$ ./configure ; make ; sudo make install |
- 安裝libnetcdf-dev
- 到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即可
以及./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