Make error with g95: Could not determine flag to name executables

433 Views Asked by At

I am trying to build EXCiT!NG with the g95 compiler. It seams to work until this errors appear:

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

There are 1 best solutions below

2
On BEST ANSWER

I was able to reproduce the problem you have been seeing and was able to successfully compile EXCiT!NG. The big hint was in your comment which mentioned the xsltproc error. Note that the error message says: xsltproc: not found, which means that the command itself is missing and the relevant package needs to be installed; also, one has to be careful to ensure the project is completely "clean" before trying to recompile again.

The following procedure was carried out on a Debian (stretch) system, hence you will need to replace the package installation commands with the appropriate ones for your system.

Prerequisite installation

First, ensure that the required packages exist:

sudo apt install build-essential make gfortran xsltproc git

The build-essential package is required so that the standard C-compilers and libraries are available. make is necessary in order to build the package (as mentioned in the EXCiT!NG README), and it seems that only gfortran is available on Debian systems and hence I haven't tested the setup with g95. The xsltproc package provides the xsltproc command so that the XML libraries (FoX XML) can be compiled; note that this might have been the problem in the error you mention initially, because you got error output such as:

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

The git package is required so that the source code could be checked out from GitHub.

Cloning and building the project

After cloning the source code and entering the project directory

git clone [email protected]:exciting/exciting.git
cd exciting/

It was merely a matter of running

make

and selecting the gfortran option at the menu and then to answer "no" to the questions about MPI and SMP, which seemed to be the recommended default answer. Also, I noticed that your error output mentioned the "serial" make target

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

hence I assume that these are also the settings that you are using.

After that, make completed successfully. Running the test suite via

make test

unfortunately didn't pass, however the errors seem to be due to truncated lines, e.g.

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)

which might be a gfortran problem, however it's difficult to say. It could be the case that the software does work as expected; this is something you will have to test by comparing the program's output with a known DFT system.

Reduce potential errors with a clean project directory

Note that cleaning the project after a failed build with

make clean

and rebuilding didn't seem to want to build the project successfully. I had to revert to deleting the project completely and re-cloning from GitHub.