我有一個帶有編譯器和系統B(又名Target)的系統A(aka主機),我想運行一個MPI應用程序。在系統B上沒有編譯器或mpirun。我想這樣做:在系統A上編譯mpirun(來自openmpi),然後在系統B上使用它(在系統A上編譯可執行文件)。我從來沒有編譯過一個不同的平臺。這件事能工作嗎?我如何處理共享庫?我看到mpirun鏈接到:爲不同的平臺編譯mpirun和mpif90(交叉編譯?)
linux-vdso.so.1 => (0x00002aaaaaaab000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003a89e00000)
libm.so.6 => /lib64/libm.so.6 (0x0000003a89600000)
libdl.so.2 => /lib64/libdl.so.2 (0x0000003a89a00000)
libc.so.6 => /lib64/libc.so.6 (0x0000003a89200000)
/lib64/ld-linux-x86-64.so.2 (0x0000003a88e00000)
我必須將mpirun靜態鏈接到系統A上的庫嗎?我怎麼做?
另外,我想知道我是否可以編譯系統A mpif90,這樣我就可以直接用它來編譯的系統B.程序記住,沒有對系統B沒有編譯器,和我不甘心的目標
安裝它們的uname -a
對主機的uname -a
輸出
Linux host 2.6.32-220.el6.x86_64 #1 SMP Tue Dec 6 19:48:22 GMT 2011 x86_64 x86_64 x86_64 GNU/Linux
輸出
Linux target 2.6.35-32-server #67-Ubuntu SMP Mon Mar 5 21:13:25 UTC 2012 x86_64 GNU/Linux
到目前爲止,我已經嘗試使用下面的配置
CC=icc
FC=ifort
CXX=icpc
LDFLAGS=-static-intel
./configure --prefix=/gpfs/data/garzilli/data/local/openmpi-1.8.4-cc/ --host=x86_64-pc-linux-gnu --build=x86_64-pc-linux-gnu --enable-static --disable-shared
我知道,在這種情況下,我不是技術上交叉編譯編譯,因爲主機和建設相吻合,原則上他們可能會有所不同。也許,我是否也應該設置--target
,因爲我在編譯一個編譯器?
這兩臺電腦有多大的區別?他們有什麼操作系統(和內核版本)? – 2015-02-07 19:05:23
我在主機和目標上添加了'uname -a'的輸出,你還想知道什麼? – simona 2015-02-07 19:11:30