无法静态生成mpich

无法静态生成mpich,mpi,cross-compiling,static-linking,Mpi,Cross Compiling,Static Linking,我尝试使用以下命令交叉编译MPICH和静态链接库: export CC="/buildroot-2015.02/output/host/usr/bin/arm-linux-gcc" export CFLAGS="-march=armv5te -I/buildroot-2015.02/output/host/usr/include/" export LDFLAGS="--static -L//buildroot-2015.02/output/host/usr/lib/" ./configure -

我尝试使用以下命令交叉编译MPICH和静态链接库:

export CC="/buildroot-2015.02/output/host/usr/bin/arm-linux-gcc"
export CFLAGS="-march=armv5te -I/buildroot-2015.02/output/host/usr/include/"
export LDFLAGS="--static -L//buildroot-2015.02/output/host/usr/lib/"
./configure --prefix=/mpich-3.1.3/build/ --host=arm-linux  --disable-shared --with-pm=hydra --with-device=ch3:nemesis --disable-fortran
构建之后,我尝试了
文件mpiexec
,得到了以下结果:

mpiexec:指向“mpiexec.hydra”的符号链接
$file mpiexec.hydra
mpiexec.hydra:ELF 32位LSB可执行文件,ARM,版本1(SYSV),动态链接(使用共享库),未剥离


我想知道如何静态链接MPICH。

关于“`ldd mpiexec.hydra`@severinpapadeux”呢?是的,我在lib文件夹中有libmpi.a。ldd mpiexec.hydra的结果:不是一个动态可执行文件。如果
ldd
告诉您
不是一个动态可执行文件,那么您已经达到了目标,祝贺您不,我会收回它。如果它是交叉编译的,并且您的本地
ldd
与目标不同,那么您将不会得到依赖项。好的,接下来要尝试的是
readelf
。基本上,你应该检查你的应用程序是否需要任何共享库
readelf
应该可以在非本机存储箱上使用。类似的东西我已经尝试了
readelf-a-mpiexec.hydra | grep-NEEDED
readelf-a-mpiexec.hydra | grep-NEEDED
0x00000001(NEEDED)共享库:[libnsl.so.0]0x00000001(NEEDED)共享库:[libpthread.so.0]0x00000001(NEEDED)共享库:[libm.so.0]0x00000001(NEEDED)共享库:[libc.so.0]我认为问题出在buildroot生成的文件中,`ldd mpiexec.hydra`@severinpapadeux是的,lib文件夹中有libmpi.a。ldd mpiexec.hydra的结果:不是一个动态可执行文件。如果
ldd
告诉您
不是一个动态可执行文件,那么您已经达到了目标,祝贺您不,我会收回它。如果它是交叉编译的,并且您的本地
ldd
与目标不同,那么您将不会得到依赖项。好的,接下来要尝试的是
readelf
。基本上,你应该检查你的应用程序是否需要任何共享库
readelf
应该可以在非本机存储箱上使用。类似的东西我已经尝试了
readelf-a-mpiexec.hydra | grep-NEEDED
readelf-a-mpiexec.hydra | grep-NEEDED
0x00000001(NEEDED)共享库:[libnsl.so.0]0x00000001(NEEDED)共享库:[libpthread.so.0]0x00000001(NEEDED)共享库:[libm.so.0]0x00000001(NEEDED)共享库:[libc.so.0]我认为问题出在buildroot生成的文件中