fortrang95

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


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

Solution

  • 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 git@github.com: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.