追蹤
。有你真好。
關於部落格
‧∴ ° 手心的太陽‧∴ °∴ ‧°‧∴ ☆╮
  • 319668

    累積人氣

  • 13

    今日人氣

    2

    追蹤人氣

NETCDF安裝筆記

解壓縮後給以下指令 [root@HPC ~] CFLAGS=-fPIC ./configure --prefix=/opt/app/szip --disable-shared -fPIC是要讓它產生Position-Independent Code,一定要加,不然裝NETCDF時會出問題 --prefix指定要安裝的位置,如果不加通常會安裝到/local/usr下 --disable-shared讓他成為靜態函式庫 最後依序執行以下指令來安裝即可,記得檢查安裝過程有沒有出錯。 [root@HPC ~] make >& make.output-szip21 [root@HPC ~] make check [root@HPC ~] make install 接著是HDF4 - 4.2.6: 下載HDF4並解壓縮,如果你只要用NCAR Graphics但不需要使用HDF格式檔案的話就不用裝,而如果要用NCL的話就要。 解壓縮後執行 [root@HPC ~] ./configure --prefix=/opt/app/hdf4 --with-zlib=/usr/lib64 --with-jpeg=/usr/lib64         --with-szlib=/opt/app/szip --disable-netcdf --includedir=/opt/app/hdf4/include/hdf --with-zlib、--with-jpeg、--with-szlib分別是指定你的zlib、jpeg、szip lib位置 --disable-netcdf是要求不使用HDF內建的NETCDF函式庫(因為稍後會安裝NETCDF啊!) --includedir是指定HDF的include file的位置,如果你沒有指定prefix的話那這個一定要加,不然這些檔案可能會被放到/usr/local/include下,這樣會跟NETCDF的include file重疊 註:若先前安裝szip時沒有指定--disable-shared,在這可能會遇上找不到libsz.so.2這個共享函式庫的問題,這是因為雖然安裝了szip,但是沒有更新動態函式庫的搜尋路徑,使得ld指令在呼叫函式庫找不到它,只要在/etc/ld.so.conf中加入/opt/app/szip/lib來指定你的szip函式庫位置,並執行/sbin/ldconfig -v更新即可。 最後依序執行以下指令: [root@HPC ~] make >& make.output-HDF426 [root@HPC ~] make check >& make.check-HDF426 [root@HPC ~] make install 安裝完畢後即可做環境設定,請將以下幾行加入你的.bashrc或是/etc/profile之類的環境設定檔中: export HDFROOT=/opt/app/hdf4 export HDFINC=$HDFROOT/include export HDFLIB=$HDFROOT/lib export PATH=$HDFROOT/bin:$PATH 參考資料:HDF Group官方安裝說明      NCAR NCL安裝說明-HDF 4 NETCDF - 4.1.3 安裝NETCDF前有幾點要注意: 根據官方網站的說明,configure前最好先依據編輯器設定不同的FLAG,若是跟我一樣使用PGI 的編譯器,要把CPPFLAGS設定為-DpgiFortran(若為gfortran則是-DgFortran,詳見註1),這是為了要讓NETCDF的函數能夠正確的被呼叫,會依照編譯器的不同在函數名稱前加上所需的底線,不過在這裡我加不加這個FLAG都可以成功編譯,保險起見還是不要略過囉。 若是為了WRF或是NCAR Graphics(NCL)而裝的,那麼於configure時一定要加上--disable-netcdf-4,因為WRF / NCL不支援NETCDF 4裡的一些太新穎的功能(註2)。 configure時不要加上--enable-benchmark這個flag,我在一開始有加這個flag,但在make check時會遇上無解的錯誤,送ticket到官方網站詢問所得到的回答是這個問題在這個版本應該算個bug。(有興趣的人可以去翻翻他們的Known Porblems頁面) 註1:Building and Installing NetCDF on Unix Systems - Platform Specific Note 註2:"The WRF modeling system currently only uses its classic data model, supported in netCDF-4."    WRF User Guide Chapter 2: Software Installation    Building NetCDF with Classic Library Only 註3:[netCDF #KMW-354832]: "make check" error report for NETCDF-4.1.3 下載NETCDF並解壓縮 設定你的編譯器,編譯指令 [root@HPC ~]# export CPPFLAGS=-DpgiFortran # 如果是csh的使用者,請用setenv 執行以下指令(由於版本不同,所加的編譯指令也會不同,詳細用法請見官方網站之說明) [root@HPC ~] ./configure --prefix=/opt/app/NETCDF --with-zlib=/usr/lib64        --with-szlib=/opt/app/szip/lib --with-temp-large=/scra3/ --enable-hdf4-file-tests        --disable-netcdf-4 --with-udunits --enable-large-file-tests --enable-dap --with-zilb與--withszlib分別是用來指定zlib以及szip函式庫的位置。 因為加了–enable-large-file-tests啟動對超過2GB的大檔案的測試,所以要用--with-temp-large指定存放位置,大概會需要13GB的空間,在make check時也會多花一點時間。 --with-udunits一併編譯udunits這個拿來作單位轉換的套件 --disable-netcdf-4,重要,若為安裝給WRF用的這一定要加 --enable-dap啟用對DAP檔案的支援 設定結束後,即可開始安裝 [root@HPC ~] make >& make.output-NETCDF413 [root@HPC ~] make check >& check.output-NETCDF413 [root@HPC ~] make install [root@HPC ~] nc-config --version netCDF 4.1.3 make check最好是跑一下,確定它沒有問題。 如果在make時出現跟szip有關的問題,那可能是當初安裝szip時沒有加上-fPIC,重新安裝szip即可。 而若出現: PGF90-S-0038-Symbol, nf90_set_var_chunk_cache, has not been explicitly declared (f90tst_vars2.f90) 0 inform, 2 warnings, 2 severes, 0 fatal for f90tst_vars2 make[2]: *** [f90tst_vars2.o] Error 2 這樣的話得單獨安裝fortran的函式庫,請回到configure,加上--disable-fortran讓NETCDF略過它,這樣一來lib資料夾中將不會出現libnetcdff.*的檔案,完成安裝後再另外安裝fortran的函式庫。 如果在安裝RIP4(或其他程式)的時候遇上大量以nf_開頭的函數出現"undefined reference"的錯誤訊息,例如: [root@RIP4 ~]# ./compile refmos2calc.o(.text+0xbd): In function `refmos2calc_':: undefined reference to `nf_open_' refmos2calc.o(.text+0xe0): In function `refmos2calc_':: undefined reference to `nf_inq_dimid_' 那是因為較新的NETCDF已經將C/Fortran的函式庫(libnetcdf.a / libnetcdff.a,後者多個f)分開了,在網路上搜尋你可能會找到用CPPFLAGS=-DpgiFortran就能解決的說法,可惜在這裡是行不通的,因為那些nf_open_函數都是寫在libnetcdff.a裡面,解決辦法就是在Makefile裡面 搜尋library的地方多指定一個-lnetcdff。 參考資料:Compile error when make check      NCAR NCL安裝說明-NETCDF      [netCDF #VEM-652223]: nf_open      PGI User Forum - NETCDF Undefined Reference --- http://cypresslin.web.fc2.com/Memo/M-NETCDFInst.html
相簿設定
標籤設定
相簿狀態