我将 Ubuntu 从 10.04 更新到 12.04,并使用 g95 编译器从网站 www.open-mpi.org 安装了 open-mpi1.6.1(因为必须这样做才能运行 chimere 空气污染模型)。两年前,我使用 Ubuntu 10.04 和 open-mpi1.4.1 做了同样的事情,没有任何问题。现在程序总是停止并显示:
/opt/openmpi-1.6.1-g95/bin/mpif90 -o chimere.e -I/usr/local/include -I/include -cpp -O3 -DG95 -fno-second-underscore -i4 -DMPI -ffree-form -ffree-line-length-huge \
chimere.o integrun.o master_message_subs.o master_locvalues.o \
chimere_common.o message_defs.o chimere_consts.o chimere_params.o \
-L. -linitio -ltools -lmodel -ltools -liso -L/usr/local/lib -lnetcdf -L/lib -L/opt/openmpi-1.6.1-g95/lib/
ld: chimere.o: undefined reference to symbol 'mpi_null_delete_fn_'
ld: note: 'mpi_null_delete_fn_' is defined in DSO /opt/openmpi-1.6.1-g95/lib/libmpi.so.1 so try adding it to the linker command line
/opt/openmpi-1.6.1-g95/lib/libmpi.so.1: could not read symbols: Invalid operation
make: *** [chimere] Error 1
我将 open-mpi 库的链接(ln -s)设置/usr/lib
为
objdump -T /usr/lib/libmpi.so.1
indicates mpi_null_delete_fn and mpi_null_delete_fn_
http://pastebin.com/K08EnJAF描述了类似的问题。
有人知道如何解决这个问题吗?
答案1
添加-lmpi
到您的通话中。
您指定了正确的库所在的位置,但没有告诉链接器链接它。