【发布时间】:2022-08-19 18:53:03
【问题描述】:
系统:
Ubuntu 22.04.1 LTS (Jammy Jellyfish) 64-bit
Kernel Linux 5.15.0-46-generic x86_64
MATE 1.26.0
已安装的软件包:
gfortran --> gfortran-11
libgfortran-11-dev
libcaf-mpich-3
libcaf-openmpi-3
libcoarrays-dev
libcoarrays-mpich-dev
libcoarrays-openmpi-dev
尝试通过caf caf01.f90 编译 CoArrayFortran 程序会导致错误
f951: Warning: Nonexistent include directory ‘/usr/lib/x86_64-linux-gnu/openmpi/lib/../../fortran/gfortran-mod-15/openmpi’ [-Wmissing-include-dirs]
/usr/bin/ld: -lmpi_usempif08 kann nicht gefunden werden: Datei oder Verzeichnis nicht gefunden
/usr/bin/ld: -lmpi_usempi_ignore_tkr kann nicht gefunden werden: Datei oder Verzeichnis nicht gefunden
/usr/bin/ld: -lmpi_mpifh kann nicht gefunden werden: Datei oder Verzeichnis nicht gefunden
/usr/bin/ld: -lopen-rte kann nicht gefunden werden: Datei oder Verzeichnis nicht gefunden
/usr/bin/ld: -lopen-pal kann nicht gefunden werden: Datei oder Verzeichnis nicht gefunden
/usr/bin/ld: -lhwloc kann nicht gefunden werden: Datei oder Verzeichnis nicht gefunden
/usr/bin/ld: -levent_core kann nicht gefunden werden: Datei oder Verzeichnis nicht gefunden
/usr/bin/ld: -levent_pthreads kann nicht gefunden werden: Datei oder Verzeichnis nicht gefunden
collect2: error: ld returned 1 exit status
Error: comand:
`/usr/bin/mpif90.openmpi -I/usr/lib/x86_64-linux-gnu/fortran/ -fcoarray=lib caf01.f90 /usr/lib/x86_64-linux-gnu/open-coarrays/openmpi/lib/libcaf_openmpi.a`
failed to compile.
有一个目录/usr/lib/x86_64-linux-gnu/openmpi/lib/../../fortran/gfortran-mod-15/mpich/,也许可以用这个来代替,但是如何告诉编译器呢?
编辑1:
$ LANG=\"C\" caf caf01.f90
f951: Warning: Nonexistent include directory \'/usr/lib/x86_64-linux-gnu/openmpi/lib/../../fortran/gfortran-mod-15/openmpi\' [-Wmissing-include-dirs]
/usr/bin/ld: cannot find -lmpi_usempif08: No such file or directory
/usr/bin/ld: cannot find -lmpi_usempi_ignore_tkr: No such file or directory
/usr/bin/ld: cannot find -lmpi_mpifh: No such file or directory
/usr/bin/ld: cannot find -lopen-rte: No such file or directory
/usr/bin/ld: cannot find -lopen-pal: No such file or directory
/usr/bin/ld: cannot find -lhwloc: No such file or directory
/usr/bin/ld: cannot find -levent_core: No such file or directory
/usr/bin/ld: cannot find -levent_pthreads: No such file or directory
collect2: error: ld returned 1 exit status
Error: comand:
`/usr/bin/mpif90.openmpi -I/usr/lib/x86_64-linux-gnu/fortran/ -fcoarray=lib caf01.f90 /usr/lib/x86_64-linux-gnu/open-coarrays/openmpi/lib/libcaf_openmpi.a`
failed to compile.
编译命令是caf: /usr/bin/caf -> /etc/alternatives/caf -> /usr/bin/caf.openmpi -> /etc/alternatives/caf-openmpi -> /usr/lib/ x86_64-linux-gnu/open-coarrays/openmpi/bin/caf.在最后一个文件中有这些行
# Always make extensions module available, user can choose whether to `use` it or not
caf_pre_flags=(\"${mod_dir_flag}/usr/lib/x86_64-linux-gnu/fortran/\")
但没有包含gfortran-mod-15 的行。
编辑2:
我做了一个(符号)链接
/usr/lib/x86_64-linux-gnu/openmpi/lib/../../fortran/gfortran-mod-15/openmpi/
->
/usr/lib/x86_64-linux-gnu/openmpi/lib/../../fortran/gfortran-mod-15/mpich/。
关于不存在的包含目录的警告消失了,但其他错误仍然存在:
LANG=\"C\" caf caf01.f90
/usr/bin/ld: cannot find -lmpi_usempif08: No such file or directory
/usr/bin/ld: cannot find -lmpi_usempi_ignore_tkr: No such file or directory
/usr/bin/ld: cannot find -lmpi_mpifh: No such file or directory
/usr/bin/ld: cannot find -lopen-rte: No such file or directory
/usr/bin/ld: cannot find -lopen-pal: No such file or directory
/usr/bin/ld: cannot find -lhwloc: No such file or directory
/usr/bin/ld: cannot find -levent_core: No such file or directory
/usr/bin/ld: cannot find -levent_pthreads: No such file or directory
collect2: error: ld returned 1 exit status
Error: comand:
`/usr/bin/mpif90.openmpi -I/usr/lib/x86_64-linux-gnu/fortran/ -fcoarray=lib caf01.f90 /usr/lib/x86_64-linux-gnu/open-coarrays/openmpi/lib/libcaf_openmpi.a`
failed to compile.
-
你现在怎么告诉编译器?你执行什么确切的命令?你使用 Makefile 或类似的东西吗?
-
如果你把
LC_ALL=\"C\"(或LANG=\"C\")放在你的命令前面,你会得到英文的错误信息unix.stackexchange.com/questions/87745/what-does-lc-all-c-do
标签: fortran mpi gfortran openmpi fortran-coarrays