在MinGW上下載siesta操作方法
成都創新互聯堅持“要么做到,要么別承諾”的工作理念,服務領域包括:做網站、網站建設、企業官網、英文網站、手機端網站、網站推廣等服務,滿足客戶于互聯網時代的友誼網站設計、移動媒體設計的需求,幫助企業找到有效的互聯網解決方案。努力成為您成熟可靠的網絡建設合作伙伴!
下載地址
鏈接:
提取碼:kii0
第一步獲取源碼
從Siesta官網下載最新版本的Siesta源碼: 。或者使用命令行下載工具curl或者wget來下載:
wget -c -O ${HOME}/softwares/siesta-4.1-b4.tar.gz
第二步配置翻譯并安裝
進入代碼根目錄,下的Obj文件夾:
cd siesta-4.1-b4/Obj
然后執行以下命令:
bash ../Src/obj_setup.sh
這將在執行Siesta的一個腳本來在當前路徑下產生構建配置文件,此時需要修改arch.make文件中的一些參數。
需要修改指定的變量如下:
.SUFFIXES:.SUFFIXES: .f .F .o .c .a .f90 .F90SIESTA_ARCH =x86_64-unknown-linux-gnu--unknownCC = gccFPP = $(FC) -E -P -x cFC = mpif90 #gfortran# FC_SERIAL = gfortranFFLAGS = -O2 -fPIC -ftree-vectorize# FFLAGS=-gAR = arRANLIB = ranlibSYS = nagSP_KIND = 4DP_KIND = 8KINDS = $(SP_KIND) $(DP_KIND)LDFLAGS =COMP_LIBS = libsiestaLAPACK.a libsiestaBLAS.aFPPFLAGS = $(DEFS_PREFIX)-DFC_HAVE_ABORT# Dependency rules ---------FFLAGS_DEBUG = -g -O # your appropriate flags here...# added by EmuLab# For GNU compiler# the siesta guide tell me to add the FFLAGS and LIBS parameter below, but it get thing wrong,# after comment them i succeeded in the compilation!# FFLAGS += -fopenmp# LIBS += -fopenmp# OpenBLAS + LAPACK:# OpenBLAS (OpenBLAS will default to build in LAPACK 3.6)# LIBS += -L/opt/openblas/0.2.18/lib -lopenblas# use the LAPACK and BLAS provided by SIESTA# ScaLAPACK# ScaLAPACK Only required for MPI compilation.# LIBS += -L/opt/scalapack/2.0.2/lib -lscalapack# NETCDF added by deqitangINCFLAGS += -I${HOME}/softwares/netcdf_install/includeLDFLAGS += -L${HOME}/softwares/zlib_install/lib -Wl,-rpath=${HOME}/softwares/zlib_install/libLDFLAGS += -L${HOME}/softwares/hdf5_install/lib -Wl,-rpath=${HOME}/softwares/hdf5_install/libLDFLAGS += -L${HOME}/softwares/netcdf_install/lib -Wl,-rpath=${HOME}/softwares/netcdf_install/libLIBS += -lnetcdff -lnetcdf -lhdf5_hl -lhdf5 -lzCOMP_LIBS += libncdf.a libfdict.aFPPFLAGS += -DCDF -DNCDF -DNCDF_4#DUMMY_FOX = --enable-dummy# For netCDF support. Make sure you get a version compatible# with the other options (for example, 32/64 bit). Don't forget# to set -DCDF below.NETCDF_ROOT= ${HOME}/softwares/netcdf_installNETCDF_LIBS= -L$(NETCDF_ROOT)/lib -lnetcdffNETCDF_INCFLAGS= -I$(NETCDF_ROOT)/include# HDF-5.HDF5_ROOT= ${HOME}/softwares/hdf5_installHDF5_LIBS = -I$(HDF5_ROOT)/include# endCOMP_LIBS += libfdict.aLIBS = $(COMP_LIBS) $(NETCDF_LIBS)#SIESTA needs an F90 interface to MPI#This will give you SIESTA's own implementation#If your compiler vendor offers an alternative, you may change#to it here.# MPI_INTERFACE=libmpi_f90.a#MPI_INCLUDE=${HOME}/softwares/openmpi_install/include# end by deqitang@# The atom.f code is very vulnerable. Particularly the Intel compiler# will make an erroneous compilation of atom.f with high optimization# levels.atom.o: atom.F $(FC) -c $(FFLAGS_DEBUG) $(INCFLAGS) $(FPPFLAGS) $(FPPFLAGS_fixed_F) $.c.o: $(CC) -c $(CFLAGS) $(INCFLAGS) $(CPPFLAGS) $.F.o: $(FC) -c $(FFLAGS) $(INCFLAGS) $(FPPFLAGS) $(FPPFLAGS_fixed_F) $.F90.o: $(FC) -c $(FFLAGS) $(INCFLAGS) $(FPPFLAGS) $(FPPFLAGS_free_F90) $.f.o: $(FC) -c $(FFLAGS) $(INCFLAGS) $(FCFLAGS_fixed_f) $.f90.o: $(FC) -c $(FFLAGS) $(INCFLAGS) $(FCFLAGS_free_f90) $
然后執行make構建siesta:
make siesta
構建完siesta后,如果你需要構建transiesta,需執行:
make cleanmake transiesta
還有一個常用的工具是tbtrans,其位于SIesta項目的./Util/TS/TBtrans目錄下,通過下面命令來構建:
cd ../Util/TS/TBtransmake
注意Siesta的構建系統 沒有提供make install。因此我們可以將編譯的到的可執行程序移動到一個目錄,然后將該路徑添加到環境變量中,方便在終端中調用程序。
就此,常用的工具構建完畢。
第三步設置環境變量
在~/.bashrc文件中添加如下內容:
export PATH=\$PATH:/home/xxx/softwares/siesta_bin
這里假設,我們將之前編譯得到的siesta、transiesta、tbtrans程序都拷貝到了/home/xxx/softwares/siesta_bin中。
優質文章,第一時間送達!
1.ag:比 grep、ack 更快的遞歸搜索文件內容。
2.tig:字符模式下交互查看 git 項目,可以替代 git 命令。
3.mycli:mysql 客戶端,支持語法高亮和命令補全,效果類似 ipython,可以替代 mysql 命令。
4.jq: json 文件處理以及格式化顯示,支持高亮,可以替換 python -m json.tool。
5.shellcheck:shell 腳本靜態檢查工具,能夠識別語法錯誤以及不規范的寫法。
6.yapf:Google 開發的 python 代碼格式規范化工具,支持 pep8 以及 Google 代碼風格。
7.mosh:基于 UDP 的終端連接,可以替代 ssh,連接更穩定,即使 IP 變了,也能自動重連。
8.fzf:命令行下模糊搜索工具,能夠交互式智能搜索并選取文件或者內容,配合終端 ctrl-r 歷史 命令搜索簡直完美。
9.PathPicker(fpp):在命令行輸出中自動識別目錄和文件,支持交互式,配合 git 非常有用。
運行以下命令:
10.htop: 提供更美觀、更方便的進程監控工具,替代 top 命令。
11.axel:多線程下載工具,下載文件時可以替代 curl、wget。
12.sz/rz:交互式文件傳輸,在多重跳板機下傳輸文件非常好用,不用一級一級傳輸。
13.cloc:代碼統計工具,能夠統計代碼的空行數、注釋行、編程語言。
14.ccache:高速 C/C++編譯緩存工具,反復編譯內核非常有用。使用起來也非常方便:
改成:
15.tmux:終端復用工具,替代 screen、nohup。
16.neovim: 替代 vim。
17.script/scriptreplay: 終端會話錄制。
回放:
18.you-get: 非常強大的媒體下載工具,支持 youtube、google+、優酷、芒果 TV、騰訊視頻、秒拍等視頻下載。
還有 mac 專有的 pbcopy/pbpaste:
把命令行輸出拷貝到系統粘貼板:
把系統粘貼板內容拷到終端:
mac 下的 say 命令支持多種語言(英語、普通話、粵語)文本朗讀,支持各種銷魂恐怖的語氣。跑這個命令感受下,小心被嚇著了:
19.thefuck:用途是每次命令行打錯了以后,打一句 fuck 就會自動更正命令。比如 apt-get 打成了 aptget。fuck 以后自動變成 apt-get。但還是沒加 sudo。再 fuck,成功!
又比如 git branch 打成了 git brnch。fuck!更正成 git branch。
又比如 python 打成了 puthon。fuck!一秒變 python。
而且關鍵是每次打命令和內心 os 完全一致,有種人機合一的快感。fuck!
20.tldr: 如果你經常不想詳讀 man 文檔,那么你應該試試這個小工具。
使用 $ man tar 時
使用 $ tldr tar 時
既然是windows服務器的share目錄 ,你去裝WINDOWS的電腦中看一下,有沒有admin用戶的,share目錄有沒有添加admin用戶的完全控制的,因為這個目錄是你mount過來的,并不是真正的LINUX上的,你chmod后,用ls -l看一下,權限是否修改了的,雖然我沒做過你這樣的mount的,但我估計,你chmod后,權限應該沒有改變的。
Linux上文本處理工具雖不少,像cut,tr,join,split,paste,sort,uniq,sed,awk這些經典工具讓人眼花繚亂,而且都太老了,使用方法都不太人性化,尤其awk,語法簡直反人類;所以perl,python,ruby等腳本語言相當熱火,我傾向用python,但處理一些簡單任務python寫的還是比較麻煩,無法一行命令解決,直到我發現了它- Pyp !
Pyp(Pyed piper)–一個python寫的類似sed,awk的文本處理工具,簡單優雅而強大~
** 安裝:**
ubuntu官方源就有:
aptitude install pyp
基本使用:
echo ‘string’ | pyp “命令”
變量p:
將每行作為一個字符串,p就是這這個字符串,python的字符串方法都可以用,譬如字符替換:
cat test.txt |pyp "p.replace('123','abc')"
變量pp:
將整個文本當做一個列表,每行是個列表元素,列表方法都可以使用,譬如行排序:
cat test.txt |pyp "pp.sort()"
管道:
pyp的命令可以內嵌管道,此時管道后p或pp代表前一個命令的輸出,類似unix下的標準管道:
echo 'FOO IS AN ' | pyp p.replace('FOO','THIS')|p+'EXAMPLE'"
這個例子通過管道將replace后的字符串再當做p,增加了額外字符串’EXAMPLE’
分割:
echo /this/is/a/splitting/example | pyp "p.split('/')"
將產生一個有序號的輸出
算數運算:
echo 'qwe665' | pyp "(int(p[3:]) + 1)"
同時處理兩個文本:
使用“–text_file”標識可以操處理第二個文本,類似于”p”"pp”,第二個文本行和整體用變量”fp”"fpp”替代: cat a.txt | pyp "p + fp" --text_file b.txt
正則表達式:
pyp也支持正則,p.re(正則表達式)就行
cat a.txt | pyp "p.replace(p.re('^#.*'),'')"
這句就刪掉所有注釋行
PYP參考手冊:
特殊變量:
p
pp
original //original line by line input to pyp
o //same as original
sp //second steam line input, just like p, but from all non-flag arguments AFTER pyp
quote //a literal ” (double quotes can’t be used in a pyp expression)
paran //a literal ‘
dollar //a literal $
n //line counter (1st line is 0, 2nd line is 1,…use the form “(n+3)” to modify this value.
nk //n + 1000
date //date and time. Returns the current datetime.datetime.now() object.
pwd //present working directory
history //history array of all previous results: so pyp “a|u|s|i|h[-3]” shows eval of s
h //same as history
letters //abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
digits //0123456789
punctuation //!”#$%’()*+,-./:;=?@[]^_{|}~`
與split和join有關的變量:
s OR slash //p split/joined on “/”
d OR dot //p split/joined on “.”
w OR whitespace //p split on whitespace (on spaces,tabs,etc), joined on spaces
u OR underscore //p split/joined on ‘’
c OR colon //p split/joined on ‘:’
mm OR comma //p split/joined on ‘,’
m OR minus //p split/joined on ‘-’
a OR all //p split on [' '-=$...] (on “All” metacharacters)
與p有關變量:
p.dir path DIRECTORY
p.file path FILE
p.ext path EXTENSION
行級操作:
pyp “p” //直接打印各行
pyp “p +’FOO’” //每行append字符串
pyp “p +’FOO’| p + o” //append的新字符串再與老字符串做操作
pyp “p.replace(‘FOO’,'GOO’)” //字符串替換
pyp “p.kill(‘GOO’)” //刪除特定字符串
string substitution pyp “‘%s FOO %s %s GOO’%(p,p,5)”
pyp “p.split(‘FOO’)” ` //分割成列表
pyp “slash“ //用’/'分割成列表的簡寫
pyp “slash[0]” //用’/'分割成列表并選取第一列
pyp “s[2:6]” //用’/'分割成列表并選取多列
pyp “s[2:6] | s” //用’/'分割成列表并選取多列再用’/'拼接
echo ‘qwe665′ | pyp “(int(p[3:]) + 1)” //算數操作(要用()包圍)
pyp “p.replace(p.re(REGEX),STR)” //正則表達式
pyp “p.letters()” //只輸出字符
pyp “p.digits()” //只輸出數字
pyp “p.punctuation()” //只輸出標點
pyp “p.clean(DELIM)” //處理亂碼字符,將其替換為DELIM
文本當做列表操作:
pyp “pp” //輸出整個文本
pyp “pp.sort()” //排序
pyp “pp.uniq” //去重
pyp “pp.oneline” //合并所有列表元素到一行字符串,元素間以空格分開
pyp “pp.unlist()” //不知道什么意思
pp.divide(N) //每N個元素合并一個新列表
pyp “pp.before(‘FOO’[,n])” ////輸出指定字符串的上面n行,默認為一行
pyp “pp.after(‘FOO’[,n])” //輸出指定字符串的下面n行,默認為一行
pyp “pp.matrix(‘FOO’[,n])” //輸出指定字符串的上下面各n行,默認為一行
pyp ”[x for x in pp]” //遍歷列表
pyp “pp.sort() | p” //文本當做列表處理完再轉換成文本
pyp “pp.delimit(DELIM)” //自定義分隔符而不是默認的換行符