Linux 暑期課程-軟體編譯
軟體編譯很重要,因為很多時刻你需要的軟體並不在官網上面,那你就得要自行編譯安裝才行。
而編譯一般使用 gcc 來處理,這時你就得要處理好編譯所需要的前驅軟體 (編譯器與函式庫等),才有辦法繼續做軟體編譯的行為啊!
- 你應該要知道原始碼、編譯器、函式庫、Tarball 軟體下載、make 功能與 Makefile 檔案的功能等!請參考:
- 鳥哥基礎學習:原始碼與 Tarball
- 上面的網頁當中,有幾張圖示,請仔細看清楚~尤其是 make 的功能,以及 configure 的功能!
- 因為是自我安裝,所以可能會安裝在非正規目錄,故如何設定讓操作者可以執行,環境變數的設定也相當重要!
- 來個比較大的計劃案,我們打算編譯一個『可以執行平行化處理的模式運作系統』。而平行化處理使用的是 MPICI 這個函式庫,
至於未來要跑的數值模式為 Models3 的空品模式,這時該如何處理?
- 你的系統一定要編譯器,同時需要有一堆編譯函式庫,因此,最好安裝上『 Development Tools 』的軟體群組功能較佳! 安裝完畢後,務必使用 which gcc, which gfortran 等確認一下有沒有這些編譯器! 因為程式系統可能需要用到 fortran 95 ,因此額外找一下 g95 或者是 g77 等軟體在不在!
- 我們需要安裝平行化處理函式庫,所以需要下載 MPICH 這套軟體:
- 軟體官網在:https://www.mpich.org/
- 上去查詢,下載最新版 (已經放置到 /home/student/Downloads/ 底下了)
- 去查詢你所需要的安裝流程!(Documentation --> Guides --> MPICH Installers' Guide
- 注意看上個步驟的 2.3 ,再回到 2.2 一步一步處理即可取得最終可運作的 mpich 喔!
- 有個算 pi 的程式碼,可以操作一下,理解 mpich 的功效!
- 將 MPICH 的相關路徑與相關變數寫入一個設定檔,例如 /usr/local/bashrc ,然後修改要使用的用戶們的 ~/.bashrc 喔!
- 通常你不需要用到這個 mpich ,除非要往學術界做高深的研究...
- 我們即將安裝的軟體平台是需要用到 NetCDF 的檔案格式,這個格式可以快速存放資料,比資料庫還要方便!
- 軟體官網在:https://www.unidata.ucar.edu/software/netcdf/
- 下載最新版的 C 與 Fortran 軟體才行!(我放在 /home/student/Downloads 底下了)
- 查詢安裝流程: Documentation --> Getting and Building netCDF ,先安裝 C (相關的前驅函式庫需要事先安裝妥當喔!一樣一步一步來!)
- 承上,再安裝 fortran 版本即可! (一樣要查看 manual 喔!)
- 接下來還要使用模式會用到的 I/O API 這套軟體才行!
- 軟體官網在:https://www.cmascenter.org/download/software/ioapi/ioapi_3-2.cfm?DB=TRUE
- 注意到,我們要用到的是 MPICH 函式庫,而不是 PVM 函式庫,因此使用 nocpl 的模組即可! (自己找到該模組的安裝方式喔!)
- 同樣的,安裝的函式庫要放置某個正確的位置,提供大家來使用才好!
- 開始安裝 CMAQ 軟體
- 軟體官網在:
下載說明:https://www.cmascenter.org/download/software/cmaq/cmaq_5-2.cfm?DB=TRUE
實際下載:https://github.com/USEPA/CMAQ/tree/5.2 - 請依舊參考設定,開始來安裝這套系統 (很可能會安裝失敗!因為系統製作流程太簡易了!)
- 解壓縮後,修改 config_cmaq.csh ,執行他!確認沒問題才行!
- 修改 bldit_project.csh ,執行他,確認沒問題才行!
- 軟體官網在:
- SRPM 的使用
- 關於 SRPM,你應該要知道的基本功能:
- 先看一下鳥哥的介紹: http://linux.vbird.org/linux_basic/0520rpm_and_srpm.php#srpmmanager
- 重新打包用的是 rpmbuild 而不是 rpm 喔!
- 你也要知道,最重要的是一個稱為 *.spec 這個檔案的內容!
- 根據上述網站的介紹,自己編譯最新的 ntp 軟體!
- 所以你會知道,其實 CentOS 可以透過類似的方法,將取得的 SRPM 解開,修改原始碼,然後再釋出! 這過程你就應該可以了解了!
- 另外,當官網提供的軟體所加上的參數並無法符合你的需求時,就可以透過這個機制來動手修改 *.spec 的 %pre 部份, 或 make 部份,這樣就能夠處理好專屬於你自己的軟體功能了!
- 關於 SRPM,你應該要知道的基本功能: