Problems configuring


Up: Problems Next: General Previous: Submitting bug reports



Up: Problems Next: General Previous: Submitting bug reports


General


Up: Problems configuring Next: LINUX Previous: Problems configuring

    1. Q: When trying to run configure, I get error messages like
    ./configure: syntax error at line 20: `(' unexpected 
    
    

    A: You have an obsolete version of the Bourne shell (sh). MPICH requires that the sh shell support shell procedures; this has been standard in most Bourne shells for years. To fix this, you might consider (a) getting an update from your vendor or (b) installing one of the many publically available sh-shell replacements.


    2. Q: The configure reports the compiler as being broken, but there is no problem with the compiler (it runs the test that supposedly failed without trouble).


    A: You may be using the Bash shell (/bin/bash) as a replacement for the Bourne shell (/bin/sh). We have reports that, at least under LINUX, Bash does not properly handle return codes in expressions. One fix is to use a different shell, such as /bin/ash, on those systems.

    This won't work on some LINUX systems ( every shell is broken). We have reports that the following will work:

      1. In configure, change trap 'rm -f confdefs*' 0 to trap 'rm -f confdefs*' 1
      2. After configure finishes, remove the file confdefs.h manually.

    3. Q: configure reports errors of the form
    checking gnumake... 1: Bad file number 
    
    

    A: Some versions of the bash shell do not handle output redirection correctly. Either upgrade your version of bash or run configure under another shell (such as /bin/sh). Make sure that the version of sh that you use is not an alias for bash. configure trys to detect this situation and will normally issue an error message.


    4. Q: Configure reports that floating point is not commutative! How do I fix it?


    A: Check your compiler's documentation. On RS/6000's, the -qnomaf (no multiply-add floating point) option. On some other systems, intermediate results may be stored in 80-bit registers (Intel CPUs do this); this can also lead to inconsistent rounding. You may be able to force the compiler to round to 64 bits.



Up: Problems configuring Next: LINUX Previous: Problems configuring


LINUX


Up: Problems configuring Next: Problems building mpich Previous: General

    1. Q: The configure step issues the message:


    checking that the compiler f77 runs... no 
    
    Fortran compiler returned non-zero return code 
    
    Output from test was 
    
    f2ctmp_conftest.f: 
    
       MAIN main: 
    
    

    A: This is probably caused by a problem in the Fortran compiler in LINUX. The f77 command in LINUX is often a shell script that uses the f2c program to convert the Fortran program to C, and then compile it with the C compiler. In many versions of LINUX, this script has an error that causes a non-zero return code even when the compilation is successful.

    To fix this problem, you need a corrected f77 script. If you can edit the script yourself, change the last 3 lines from

    case $cOPT in 2) $CC $G -o $OUTF $OFILES -lf2c -lm;; esac 
    
    rc=$? 
    
    exit $rc 
    
    
    to
    case $cOPT in 2) $CC $G -o $OUTF $OFILES -lf2c -lm;; esac 
    
    rc=$? 
    
    trap 0 
    
    exit $rc 
    
    

    2. Q: The link test fails on LINUX with messages like


    overtake.o(.text+0x59): undefined reference to `MPI_COMM_WORLD' 
    
    overtake.o(.text+0x81): undefined reference to `MPI_COMM_WORLD' 
    
    ... 
    
    

    A: This is probably caused by a problem in the Fortran compiler in LINUX. In some early versions of LINUX, the f77 command in LINUX is often a shell script that uses the f2c program to convert the Fortran program to C, and then compile it with the C compiler. In many versions of LINUX, this script has an error that causes a non-zero return code even when the compilation is successful.

    To fix this problem, you need a corrected f77 script. If you can edit the script yourself, change the last 3 lines from

    case $cOPT in 2) $CC $G -o $OUTF $OFILES -lf2c -lm;; esac 
    
    rc=$? 
    
    exit $rc 
    
    
    to
    case $cOPT in 2) $CC $G -o $OUTF $OFILES -lf2c -lm;; esac 
    
    rc=$? 
    
    trap 0 
    
    exit $rc 
    
    



Up: Problems configuring Next: Problems building mpich Previous: General