我有一个带有编译器和系统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