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 older 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 older versions of Linux. The f77 command in Linux was 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 
    


    3. Q: During the configure step, messages like

    /homes/me/mpich/configure: 134956160: Permission denied 
    
    sometimes appear. What is wrong?


    A: This is a bug in the Linux sh shell. The shell is attempting to create a file with the name /tmp/t<processid>-sh (e.g., /tmp/t11203-sh), but was unable to. This may happen if /tmp is full; however, it can also happen when the shell created the same file for another user days before. (You can see this happen by running configure under strace -f). The only fix is to have your systems administrator clean old files out of /tmp.



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