Fortran g95出错:无法确定命名可执行文件的标志

Fortran g95出错:无法确定命名可执行文件的标志,fortran,g95,Fortran,G95,我正在尝试使用g95编译器进行编译。在出现以下错误之前,它将继续工作: 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“ scheite

我正在尝试使用g95编译器进行编译。在出现以下错误之前,它将继续工作:

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

我能够重现您看到的问题,并且能够成功编译EXCiT!NG。重要的提示是在您的评论中提到了
xsltproc
错误。请注意,错误消息显示:
xsltproc:notfound
,这意味着缺少命令本身,需要安装相关的包;此外,在再次尝试重新编译之前,必须小心确保项目完全“干净”

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

先决条件安装 首先,确保存在所需的包:

sudo apt install build-essential make gfortran xsltproc git
需要
build-essential
包,以便提供标准C编译器和库
make
是构建软件包所必需的(如中所述),而且Debian系统上似乎只有
gfortran
可用,因此我没有使用
g95
测试设置。
xsltproc
包提供了
xsltproc
命令,以便可以编译XML库(foxxml);请注意,这可能是您最初提到的错误中的问题,因为您得到了错误输出,例如:

../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重新克隆。

请检查我链接了正确的项目。还请注意,g95已经很长一段时间没有维护,一般来说,Fortran项目的构建脚本制作者和程序员都不太支持g95。我们需要帮助您的信息可能是,在文件
config.log
中,我对gfortran:xsltproc.././xml/schema/schemaexpand.xsl.././xml/schema/input.xsd>./../xml/excitinginput.xsd/bin/sh:1:xsltproc:notfound../Make.common:148:die Regel für Ziel.././xml/excitinginput.xsd“scheiterte Make[2]:***[../xml/excitinginput.xsd]Fehler 127制作[2]:Verzeichnis/home/robin/Dokumente/Excelling/build/serial“wird verlassen制作文件:3:die Regel für Ziel“all”Scheiter制作[1]:***[all]Fehler 2制作[1]:Verzeichnis/home/robin/Dokumente/Excelling/build/serial“wird verlassen制作文件:23:die Regel für Ziel”serial“serial”Scheiter制作:***[serial]Fehler 2I使用两种不同的编译器(g95和gfortran)进行了尝试还有两个令人兴奋的版本。它没有正确编译。截断错误意味着代码使用比Fortran标准permts更长的行来编写,并且需要一个特殊的标志来允许更长的行。是的,这是我看到它时猜到的;但是,我不想为了解决这个问题而对应用程序代码进行太多的更改这个问题。