使用g95时出错:无法确定标志以命名可执行文件

时间:2019-01-09 16:47:29

标签: fortran g95

我正在尝试使用g95编译器构建EXCiT!NG。它可以工作直到出现此错误:

checking for linker flag to name executables... configure: error: Could not determine flag to name executables
See `config.log' for more details.
../Make.common:107: die Regel für Ziel „lib/libFoX_common.a“ scheiterte
make[2]: *** [lib/libFoX_common.a] Fehler 1
make[2]: Verzeichnis „/home/robin/Dokumente/exciting/build/serial“ wird verlassen
Makefile:3: die Regel für Ziel „all“ scheiterte
make[1]: *** [all] Fehler 2
make[1]: Verzeichnis „/home/robin/Dokumente/exciting/build/serial“ wird verlassen
Makefile:14: die Regel für Ziel „serial“ scheiterte
make: *** [serial] Fehler 2

1 个答案:

答案 0 :(得分:1)

我能够重现您遇到的问题,并能够成功编译EXCiT!NG。最重要的提示是您的评论中提到了xsltproc错误。请注意,错误消息显示为:xsltproc: not found,这意味着命令本身丢失,需要安装相关的软件包。同样,在尝试重新编译之前,必须要确保项目完全“干净”。

以下过程是在Debian(拉伸)系统上执行的,因此您需要将软件包安装命令替换为适合您系统的命令。

先决条件安装

首先,确保所需的软件包存在:

sudo apt install build-essential make gfortran xsltproc git

需要build-essential软件包,以便使用标准的C编译器和库。 make是构建软件包所必需的(如EXCiT!NG README中所述),而且似乎只有gfortran在Debian系统上可用,因此我没有使用g95xsltproc程序包提供了xsltproc命令,以便可以编译XML库(FoX XML)。请注意,这可能是您最初提到的错误中的问题,因为您收到了以下错误输出:

../Make.common:107: die Regel für Ziel „lib/libFoX_common.a“ scheiterte

需要git软件包,以便可以从GitHub检出源代码。

克隆并构建项目

克隆源代码并进入项目目录后

git clone git@github.com:exciting/exciting.git
cd exciting/

这仅仅是运行的问题

make

,然后在菜单上选择gfortran选项,然后回答“否”有关MPI和SMP的问题,这似乎是建议的默认答案。另外,我注意到您的错误输出中提到了“串行” make目标

Makefile:14: die Regel für Ziel „serial“ scheiterte

因此,我认为这些也是您正在使用的设置。

此后,make成功完成。通过

运行测试套件
make test

不幸的是没有通过,但是错误似乎是由于行被截断所致,例如

Error: Line truncated at (1) [-Werror=line-truncation]
../../src/src_eigensystem/hmlint.f90:296:132: haaij(if1,if3,ias)=zsum+t1*apwfr(nrmt(is),1,io1,l1,ias)*apwdfr(io2,l1,ias)*1d0/(1d0-veffmt(1,nrmt(is),ias)*y00*a)

这可能是一个gfortran问题,但是很难说。该软件可能会按预期运行;您必须通过将程序的输出与已知的DFT系统进行比较来进行测试。

使用干净的项目目录减少潜在的错误

请注意,构建失败后,使用

清除项目
make clean

重建似乎并不想成功地构建项目。我不得不恢复到完全删除项目并从GitHub重新克隆。