这是安装指南:
https://github.com/atchekho/harmpi/blob/master/tutorial.md
我得到这个结果make clean
:
/bin/rm -f *.o *.il
/bin/rm -f harm image_interp
但是,当我尝试时make
:
//lib/x86_64-linux-gnu/libm.so.6: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
makefile:109: recipe for target 'harm' failed
make: *** [harm] Error 1
我已经使用本指南安装了 Open-MPIhttp://lsi.ugr.es/jmantas/pdp/ayuda/datos/instalaciones/Install_OpenMPI_en.pdf
我无法安装,所以libopenmpi-dbg
我安装了libopenmpi2
libopenmpi1.3
不知道这是否重要
我在 GCC 版本上得到了以下结果:
gcc (Ubuntu 7.4.0-1ubuntu1~18.04) 7.4.0
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
答案1
错误消息
//lib/x86_64-linux-gnu/libm.so.6: error adding symbols: DSO missing from command line
意味着链接器无法从标准数学库中找到符号:它知道它们应该在哪里,并且-lm
在命令行上期望一个链接器指令,但没有找到。
如果您查看所提供的makefile
,您会发现在使用 MPI 构建时,关于适当的链接器标志有一些来回:
ifeq ($(USEMPI),1)
EXTRALIBS= #-lm #-lmpi
EXTRACCFLAGS=-DMPI
CC=mpicc #/usr/local/bin/mpicc
else
EXTRALIBS = -lm
EXTRACCFLAGS =
endif
在某个时候,软件作者肯定认为libm
在这种情况下不需要链接。你可以在命令行上推翻该决定,如下所示
make EXTRALIBS=-lm
可能会出现许多您可以忽略的编译器警告。