Mac系統(tǒng)下源碼編譯安裝GMT

本貼一步一步說(shuō)明如何在Mac系統(tǒng)下從源碼編譯安裝gmt!對(duì)gmt最新功能無(wú)感或者沒(méi)有二次開(kāi)發(fā)意向的同學(xué)請(qǐng)飄過(guò)淮椰!還有其他各種安裝方法可供選擇忱反,自行Google纠修!

編譯工具

編譯工具包括gcc, g++, gfortran, make, cmake巾乳。首先在終端查看諸工具是否已經(jīng)安裝:比如gcc --version您没,如果沒(méi)有安裝或者不夠新,下面是自動(dòng)安裝命令

  1. gcc/g++: brew install gcc, brew install g++
  2. gfortran: brew install gfortran
  3. make: brew install make
  4. cmake: brew install cmake或者在cmake官網(wǎng)下載二進(jìn)制安裝文件(帶GUI界面)胆绊,雙擊安裝即可氨鹏!

接下來(lái)就需要根據(jù)gmt官方說(shuō)明首先安裝所需的依賴(lài)庫(kù),包括 netcdf, GDAL, PCRE, BLAS, LAPACK, FFTW压状。當(dāng)然了如果目標(biāo)機(jī)器是白紙一張仆抵,有可能某些庫(kù)自身也需要依賴(lài)其他庫(kù),比如netCDF需要m4, HDF5等,且看下文镣丑!

GMT依賴(lài)庫(kù)

netcdf

源碼下載地址:netcdf官網(wǎng)舔糖;github倉(cāng)庫(kù)

netCDF依賴(lài)庫(kù)

netCDF的依賴(lài)庫(kù)包括m4,HDF5莺匠,curl

m4

m4可以利用brew自動(dòng)安裝: brew install m4

安裝完成之后有可能需要添加m4的安裝路徑(xxxx/brew/opt/m4/bin)到PATH環(huán)境變量金吗,根據(jù)安裝最后的消息提示!

HDF5

  1. 下載
  2. 解壓:tar xvf hdf5-1.8.20.tar
  3. configure:mkdir build cd build ../configure --prefix=/usr/local
  4. make
    ... 等待 ....
  5. make install or sudo make install

curl

因?yàn)榫幾gnetcdf需要用到curl的源碼,我喜歡從源碼安裝慨蛙。如果后面make netcdf的時(shí)候出現(xiàn)錯(cuò)誤,可以嘗試將從apt-get安裝的curl卸載掉:sudo apt-get autoremove curl

  1. 下載
  2. 解壓:tar -zxvf curl-7.61.1.tar.gz
  3. config: mkdir build cd build ../configure --prefix=/usr/local
  4. make: make
  5. install: make install

此時(shí)如果再不提示缺什么庫(kù)的話纪挎,應(yīng)該會(huì)順利通過(guò)期贫。如果缺什么庫(kù),編譯過(guò)程中會(huì)提示缺什么异袄,繼續(xù)安裝所缺庫(kù)即可

安裝netCDF

  1. 解壓: tar -zxvf netcdf-4.6.1.tar.gz
  2. mkdir build mkdir bin
  3. cd build
  4. ../configure --prefix=/usr/local 或者其他的什么你想安裝到的目錄
  5. make
    ... 等待 ...
  6. make install

GDAL

  1. 下載
  2. 解壓:tar -zxvf gdal-2.3.2.tar.gz
  3. config: cd gdal-2.3.2 ../configure --prefix=/usr/local 注意:直接在主目錄下面配置和make通砍,不要?jiǎng)?chuàng)建build目錄,不然會(huì)出現(xiàn)沒(méi)有make目標(biāo)的錯(cuò)誤烤蜕。
  4. make: make
    此過(guò)程等待時(shí)間非常長(zhǎng)....
  5. install: make install

PCRE

  1. 下載
  2. 解壓:tar -zxvf pcre-8.42.tar.gz
  3. config: mkdir build cd build ../configure --prefix=/usr/local
  4. make: make
  5. install: make install

出現(xiàn)了幾個(gè)警告:libtool: warning: relinking 'libpcreposix.la', libtool: warning: relinking 'libpcrecpp.la'先不管

BLAS

  1. 下載
  2. 解壓:tar -zxvf blas-3.8.0.tgz
  3. 編譯生成libblas.so:gfortran -shared -O2 *.f -o libblas.so -fPIC
  4. 添加環(huán)境變量到~/.zshrc: export LIBPATH=/mnt/d/Research/gmt/library/BLAS-3.8.0/libblas.so:$LIBPATH

LAPACK

  1. 下載
  2. 解壓:tar -zxvf lapack-3.8.0.tar.gz
  3. 拷貝make.inc:cp make.inc.example make.inc
  4. 添加-fPICOPTSNOOPT
OPTS    = -O2 -frecursive fPIC
DRVOPTS = $(OPTS)
NOOPT   = -O0 -frecursive fPIC
  1. 修改lib名稱(chēng)
BLASLIB = ../../librefblas.so
LAPACKLIB = liblapack.so
  1. 修改SRC/makefile
../$(LAPACKLIB): $(ALLOBJ)
    $(ARCH) $(ARCHFLAGS) $@ $(ALLOBJ)
    $(RANLIB) $@

改為

../$(LAPACKLIB): $(ALLOBJ)
    $(LOADER) $(LOADOPTS) -shared -Wl,-soname,liblapack.so -o $@ $(ALLOBJ) ../librefblas.so
  1. 修改BLAS/SRC/Makefile
$(BLASLIB): $(ALLOBJ)
    $(ARCH) $(ARCHFLAGS) $@ $(ALLOBJ)
    $(RANLIB) $@

改為

$(BLASLIB): $(ALLOBJ)
    $(LOADER) $(LOADOPTS) -z muldefs -shared -Wl,-soname,librefblas.so -o $@ $(ALLOBJ)

如果你沒(méi)有g(shù)77編譯器封孙,請(qǐng)將第2步拷貝的make.inc文件中的兩個(gè)g77更換為你的fortran編譯器比如gfortran

  1. make
make blaslib
make lapacklib
  1. 添加環(huán)境變量: export LIBPATH=/mnt/d/Research/gmt/library/BLAS-3.8.0/libblas.so:/mnt/d/Research/gmt/library/lapack-3.8.0/liblapack.so:$LIBPATH

安裝OpenMP庫(kù)

sudo apt-get install libomp-dev

FFTW

  1. 下載
  2. 解壓:tar -zxvf fftw-3.3.8.tar.gz
  3. 配置:make build, cd build, ../configure --prefix=/usr/local
  4. make
  5. make install

Ghostscript

sudo apt-get update
sudo apt-get install ghostscript

配置數(shù)據(jù)

下載

  1. GSHHG
  2. DCW-GMT

設(shè)置路徑: 環(huán)境變量

  1. GSHHG_PATH
  2. DCW_PATH

編譯gmt

mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=/usr/local -DCMAKE_BUILD_TYPE=RelWithDebInfo ..
make -j

保持與官方倉(cāng)庫(kù)同步更新(針對(duì)二次開(kāi)發(fā)者)

  1. 查看目前的遠(yuǎn)程倉(cāng)庫(kù)地址:git remote -v
  2. 添加官方倉(cāng)庫(kù):git remote add upstream https://github.com/GenericMappingTools/gmt.git
    其中upstream是官方倉(cāng)庫(kù),orgin是你fock之后存在你自己的github賬戶(hù)里的倉(cāng)庫(kù)
  3. 拉取官方倉(cāng)庫(kù)更新:git fetch upstream
  4. 切換到自己的分支讽营,比如master:git checkout master
  5. 與官方更新合并:git merge upstream/master
  6. 修改遠(yuǎn)程push倉(cāng)庫(kù)地址:git remote set-url origin xxxx.git
  7. 刪除遠(yuǎn)程倉(cāng)庫(kù)地址:git remote rm origin

如果發(fā)現(xiàn)在終端不能直接用gmt命令虎忌,每次在終端輸入gmt會(huì)出現(xiàn)這個(gè)錯(cuò)誤:fatal: Not a git repository (or any of the parent directories): .git,那是因?yàn)榘惭b了git的插件的原因橱鹏。一般這個(gè)是由于on my zsh引起的膜蠢,gmt這個(gè)詞被定義為了 alias g./home/zguo/.oh-my-zsh/plugins/git/git,定義的文件為:/home/zguo/.oh-my-zsh/plugins/git/git.plugin.zsh莉兰,找到這個(gè)文件打開(kāi)之后把這一行注釋掉挑围,然后重新source一下或者重新打開(kāi)一下終端就好了。
Mac系統(tǒng)下也是一樣的操作糖荒!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末杉辙,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子捶朵,更是在濱河造成了極大的恐慌蜘矢,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,126評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件综看,死亡現(xiàn)場(chǎng)離奇詭異硼端,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)寓搬,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)珍昨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事镣典⊥帽校” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,445評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵兄春,是天一觀的道長(zhǎng)澎剥。 經(jīng)常有香客問(wèn)我,道長(zhǎng)赶舆,這世上最難降的妖魔是什么哑姚? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,185評(píng)論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮芜茵,結(jié)果婚禮上叙量,老公的妹妹穿的比我還像新娘。我一直安慰自己九串,他們只是感情好绞佩,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著猪钮,像睡著了一般品山。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上烤低,一...
    開(kāi)封第一講書(shū)人閱讀 48,970評(píng)論 1 284
  • 那天肘交,我揣著相機(jī)與錄音,去河邊找鬼扑馁。 笑死酸些,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的檐蚜。 我是一名探鬼主播魄懂,決...
    沈念sama閱讀 38,276評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼闯第!你這毒婦竟也來(lái)了市栗?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 36,927評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤咳短,失蹤者是張志新(化名)和其女友劉穎填帽,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體咙好,經(jīng)...
    沈念sama閱讀 43,400評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡篡腌,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了勾效。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片嘹悼。...
    茶點(diǎn)故事閱讀 37,997評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡叛甫,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出杨伙,到底是詐尸還是另有隱情其监,我是刑警寧澤,帶...
    沈念sama閱讀 33,646評(píng)論 4 322
  • 正文 年R本政府宣布限匣,位于F島的核電站抖苦,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏米死。R本人自食惡果不足惜锌历,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望峦筒。 院中可真熱鬧究西,春花似錦、人聲如沸勘天。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,204評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)脯丝。三九已至,卻和暖如春伏伐,著一層夾襖步出監(jiān)牢的瞬間宠进,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,423評(píng)論 1 260
  • 我被黑心中介騙來(lái)泰國(guó)打工藐翎, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留材蹬,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,423評(píng)論 2 352
  • 正文 我出身青樓吝镣,卻偏偏與公主長(zhǎng)得像堤器,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子末贾,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容