| 7 | 1/1 | 返回列表 |
| 查看: 3271 | 回復(fù): 6 | |||
zhangguangping木蟲 (著名寫手)
|
[交流]
Molpro2012.1p13在openSUSE 10.2上安裝的曲折歷程 已有3人參與
|
|
————記錄此文,以備忘。 WARNING:升級(jí)glic-2.7的慘痛教訓(xùn):集群有很多臺(tái)計(jì)算節(jié)點(diǎn),節(jié)點(diǎn)的系統(tǒng)安裝的都是一樣的。因此,升級(jí)glibc2.7時(shí)在其中一臺(tái)上編譯一直到make install,升級(jí)成功。ssh到別的計(jì)算節(jié)點(diǎn)之后,到glibc2.7的目錄下,直接執(zhí)行make install安裝。大部分節(jié)點(diǎn)都成功升級(jí)了。但是有2臺(tái)節(jié)點(diǎn)失敗了。出現(xiàn)segment fault,并且ssh立馬斷開了。再次ssh,顯示ssh_exchange_identification: Connection closed by remote host。從此,再也沒有登陸上這兩臺(tái)節(jié)點(diǎn)。到機(jī)器房登陸也登陸不進(jìn)去。最后沒辦法重啟節(jié)點(diǎn),結(jié)果可想而知,重啟失敗。后來想到這兩臺(tái)節(jié)點(diǎn)的時(shí)間設(shè)置的是8年前的時(shí)間(由于某些軟件的原因),這種節(jié)點(diǎn)我們還有一臺(tái)。因此,去第三臺(tái)這樣的節(jié)點(diǎn),先把系統(tǒng)時(shí)間修改成當(dāng)下時(shí)間,然后make install,陳功升級(jí)glibc.因此,猜測(cè)上面兩臺(tái)機(jī)器升級(jí)glibc失敗的原因是系統(tǒng)時(shí)間遠(yuǎn)遠(yuǎn)落后于glibc編譯目錄的時(shí)間。 前幾天,需要將Molpro 2012.1.p13安裝到小組的計(jì)算集群上。首先介紹一下集群的基本情況。管理節(jié)點(diǎn)node00安裝是openSUSE 11.2 (SUSE Linux Enterprise Server 11.2),而所有的計(jì)算節(jié)點(diǎn)是openSUSE 10.2或者10.4 (SUSE Linux Enterprise Server 10.2 or 10.4)。不要噴我們的這種構(gòu)架,因?yàn)榧嘿徺I先后順序不一樣,最后整合到一起使用,所以導(dǎo)致了這樣的局面。 在這樣的構(gòu)架下,選擇到計(jì)算節(jié)點(diǎn)編譯molpro代碼。不管用intel Compiler 11.1-072帶的ifort icc以及icpc編譯還是用gfortran和gcc編譯,在計(jì)算節(jié)點(diǎn)上總是不能順利congfigure完成。最后只能到node00節(jié)點(diǎn)上嘗試編譯。發(fā)現(xiàn)在node00節(jié)點(diǎn)上編譯非常順利。編譯步驟如下(root用戶): ===================== 1.配置環(huán)境變量 source /home/software/intel/Compiler/11.1/072/bin/ifortvars.sh intel64 source /home/software/intel/Compiler/11.1/072/bin/iccvars.sh intel64 2.解壓壓縮包 tar -zxvf molpro.2012.1.13.tar.gz 3.配置編譯參數(shù) cd Molpro ./configure -j 6 -icc -ifort -x86_64 -mpp -noblas -nolapack -auto-ga-openmpi 上述的參數(shù)含義,可以從Installation Guide Version 2012.1得到詳細(xì)解釋。 在運(yùn)行上述命令之前,需要在$HOME下面建立.molpro目錄存放token文件。 mkdir ~/.molpro 然后將token文件拷貝到該目錄下。同時(shí),安裝過程需要下載openmpi-1.8和boost_1_55_0.tar.gz,如果機(jī)器不能聯(lián)網(wǎng),那么自己從網(wǎng)上下載openmpi-1.8.tar.gz和boost_1_55_0.tar.gz放到~/.molpro/cache目錄下面。 4.編譯代碼 make -j 6 2>&1 | tee make.log 5. 安裝編譯文件 make install =========================== 到此為止,編譯順利完成。 測(cè)試:/home/software/molpro2012.1p13/molprop_2012_1_Linux_x86_64_i8/bin/molpro -n 2 -d ./ -W ./ form_freq.com 上述測(cè)試在node00上能夠順利完成。但是到計(jì)算節(jié)點(diǎn)進(jìn)行上述測(cè)試,出現(xiàn): /home/software/molpro2012.1.13/molprop_2012_1_Linux_x86_64_i8/src/openmpi-install/bin/mpirun: /lib64/libc.so.6: version `GLIBC_2.7' not found (required by /home/software/molpro2012.1.13/molprop_2012_1_Linux_x86_64_i8/src/openmpi-install/bin/mpirun) 然后ldd --version發(fā)現(xiàn)計(jì)算節(jié)點(diǎn)的glibc的版本是2.4. 沒有辦法,只能在計(jì)算節(jié)點(diǎn)安裝glibc 2.7 安裝glibc 2.7參考http://www.cnblogs.com/ivanfu/archive/2012/02/12/2348043.html 1.下載glibc 2.7 http://ftp.gnu.org/pub/gnu/glibc/glibc-2.7.tar.gz 2. tar zxvf glibc-2.7.tar.gz 3. mkdir glibc-build cd glibc-build 4. ../glibc-2.7/configure --prefix=/usr 5.make 6. make check 7. make install 其中第6步的make check很重要,最好確保所有的測(cè)試都通過。否則安裝網(wǎng)上說的,glibc的升級(jí)很容易導(dǎo)致系統(tǒng)崩潰,那么升級(jí)就沒有意義了,只能重裝系統(tǒng)了。 到此為止,glibc 2.7安裝好了,然后再測(cè)試molpro出現(xiàn): /home/software/molpro2012.1p13/molprop_2012_1_Linux_x86_64_i8/bin/molpro.exe: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by /home/software/molpro2012.1p13/molprop_2012_1_Linux_x86_64_i8/bin/molpro.exe) 執(zhí)行strings /usr/lib/libstdc++.so.6 | grep GLIBC如下,就是沒有GLIBCXX_3.4.9: GLIBCXX_3.4 GLIBCXX_3.4.1 GLIBCXX_3.4.2 GLIBCXX_3.4.3 GLIBCXX_3.4.4 GLIBCXX_3.4.5 GLIBCXX_3.4.6 GLIBCXX_3.4.7 GLIBCXX_3.4.8 GLIBC_2.0 GLIBC_2.3 GLIBC_2.4 GLIBC_2.3.4 GLIBC_2.1 GLIBC_2.1.3 GLIBC_2.2 GLIBCXX_FORCE_NEW GLIBCXX_DEBUG_MESSAGE_LENGTH 到網(wǎng)上一陣狂搜,幾乎沒有找到解決這個(gè)的辦法。 按照http://jamesbond0479.blog.163.co ... 582010712104140781/提出的辦法,從網(wǎng)上下載相應(yīng)版本的libstdc++.so.6.10, rm /usr/lib64/libstdc++.so.6 ln -s /usr/lib64/libstdc++.so.6.0.10 /usr/lib64/libstdc++.so.6 rm /usr/lib/libstdc++.so.6 ln -s /usr/lib/libstdc++.so.6.0.10 /usr/lib/libstdc++.so.6 雖然可以解決 /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.9' not found的問題,可以使molpro能在計(jì)算節(jié)點(diǎn)上正常運(yùn)行,但是后來你會(huì)發(fā)現(xiàn),在計(jì)算節(jié)點(diǎn)上云去編譯軟件的時(shí)候,總是提示會(huì)提示: configure error c and c++ compilers are not link compatible. cannot continue 并且看具體原因是:/usr/lib64/gcc/x86_64-suse-linux/4.1.2/libstdc++.so: file not recognized: File format not recognized 因此,猜測(cè)是上面手動(dòng)添加libstdc++.so.6.0.10導(dǎo)致,重新還原回去: rm /usr/lib64/libstdc++.so.6 ln -s /usr/lib64/libstdc++.so.6.0.8 /usr/lib64/libstdc++.so.6 rm /usr/lib/libstdc++.so.6 ln -s /usr/lib/libstdc++.so.6.0.8 /usr/lib/libstdc++.so.6 發(fā)現(xiàn)configure error c and c++ compilers are not link compatible. cannot continue的問題不再出現(xiàn)。因此,斷定上述手動(dòng)添加libstdc++.so.6.0.10的辦法是不可靠的。這也正如http://liuzhigong.blog.163.com/blog/static/178272375201333155126/文中所提到的。 但是,由于當(dāng)時(shí)沒看到這個(gè)文檔,所以沒有按照該文檔去升級(jí)glibc 2.7. 到目前為止,node00編譯的molpro還是不能在計(jì)算節(jié)點(diǎn)運(yùn)行。后來想到,原來計(jì)算節(jié)點(diǎn)不能編譯molpro 2012是不是就是因?yàn)間libc版本過低的問題呢? 重新到升級(jí)好glibc 2.7的計(jì)算節(jié)點(diǎn)按照上述在node00的編譯步驟,順利編譯通過。并且編譯出來的可執(zhí)行文件可以在node00成功計(jì)算,并且在升級(jí)好glibc 2.7的計(jì)算節(jié)點(diǎn)也能正常計(jì)算,不再出現(xiàn)version `GLIBCXX_3.4.9' not found的問題。 總結(jié):molpro 2012.1.13的編譯需要用到glibc 2.7,至少glibc 2.4是不能行的(glibc 2.5 glibc 2.6不清楚是否可以)。 最后奉上另外一個(gè)帖子:http://www.cppblog.com/sunicdavy/archive/2012/04/20/172108.html 帖子中提到解決此類問題的另外一個(gè)方法: 還有一種方法,使用靜態(tài)鏈接. 將所有可執(zhí)行文件文件依賴的靜態(tài)庫, 系統(tǒng)庫,全部靜態(tài)鏈接到可執(zhí)行文件中,可以一次性解決這個(gè)問題 步驟: 1. 在gcc鏈接命令行中添加-static -static-libgcc -static-libstdc++ 2. 將第三方依賴庫打開靜態(tài)鏈接開關(guān), 將原來鏈接.so的庫,全改為鏈接.a 3. gcc對(duì)鏈接庫順序很敏感, 鏈接庫順序需要按照從前至后為: 項(xiàng)目產(chǎn)生的靜態(tài)庫 > 第三方庫靜態(tài)庫 > 系統(tǒng)靜態(tài)庫 4. 鏈接時(shí), 若有未解決的symbol, 可以嘗試在最后添加-lpthread及-lrt解決 上述方法,沒有去實(shí)踐。因?yàn)閷?duì)于一個(gè)較大的程序,步驟2較難實(shí)現(xiàn)。 [ Last edited by zhangguangping on 2014-6-27 at 16:41 ] |

專家顧問 (職業(yè)作家)
地溝油冶煉專家
![]() |
專家經(jīng)驗(yàn): +458 |

木蟲 (著名寫手)
|
大牛光顧,蓬蓽生輝啊。 普通用戶也可以自己安裝。 http://hi.baidu.com/bjfk1900/item/3e9c4db9e49967422bebe324 這個(gè)安裝完畢后的配置,我沒有看懂。最后沒辦法,直接用root冒著風(fēng)險(xiǎn)升級(jí)了。幸好,安裝完畢后,系統(tǒng)沒有崩潰。 |

木蟲 (著名寫手)

鐵桿木蟲 (正式寫手)
木蟲 (著名寫手)

| 7 | 1/1 | 返回列表 |
| 最具人氣熱帖推薦 [查看全部] | 作者 | 回/看 | 最后發(fā)表 | |
|---|---|---|---|---|
|
[考研] 081200-11408-276學(xué)碩求調(diào)劑 +6 | 崔wj 2026-03-26 | 6/300 |
|
|---|---|---|---|---|
|
[考研] 356求調(diào)劑 +3 | gysy?s?a 2026-03-28 | 3/150 |
|
|
[考研]
|
nnnnnnn5 2026-03-25 | 7/350 |
|
|
[考研] 298求調(diào)劑 +3 | 種圣賜 2026-03-28 | 3/150 |
|
|
[考研] 材料學(xué)碩333求調(diào)劑 +10 | 北道巷 2026-03-24 | 10/500 |
|
|
[考研] 312,生物學(xué)求調(diào)劑 +3 | 小譯同學(xué)abc 2026-03-28 | 3/150 |
|
|
[考研] 320分,材料與化工專業(yè),求調(diào)劑 +9 | 一定上岸aaa 2026-03-27 | 13/650 |
|
|
[考研] 347求調(diào)劑 +3 | 山頂見α 2026-03-25 | 3/150 |
|
|
[考研] 286求調(diào)劑 +12 | PolarBear11 2026-03-26 | 12/600 |
|
|
[考研]
|
孅華 2026-03-22 | 17/850 |
|
|
[考研] 287求調(diào)劑 +10 | land xuxu 2026-03-26 | 10/500 |
|
|
[考研] 0856調(diào)劑 +5 | 求求讓我有書讀?/a> 2026-03-26 | 6/300 |
|
|
[考研] 348求調(diào)劑 +4 | 小懶蟲不懶了 2026-03-27 | 5/250 |
|
|
[考研] 一志愿華東理工大學(xué)081700,初試分?jǐn)?shù)271 +6 | kotoko_ik 2026-03-23 | 7/350 |
|
|
[考研] 考研調(diào)劑 +10 | 呼呼?~+123456 2026-03-24 | 10/500 |
|
|
[考研] 求調(diào)劑 +3 | 劉柯@ 2026-03-24 | 4/200 |
|
|
[考研] 321求調(diào)劑 +6 | Ymlll 2026-03-24 | 6/300 |
|
|
[考研] 334分 一志愿武理 材料求調(diào)劑 +4 | 李李不服輸 2026-03-26 | 4/200 |
|
|
[考研] 生物技術(shù)與工程 +3 | 1294608413 2026-03-25 | 4/200 |
|
|
[考研] 302求調(diào)劑 +4 | 錦衣衛(wèi)藤椒 2026-03-25 | 4/200 |
|