Problems Linking C Programs


Up: In Case of Trouble Next: General Previous: General



Up: In Case of Trouble Next: General Previous: General


General


Up: Problems Linking C Programs Next: HPUX Previous: Problems Linking C Programs

    1. Q: When linking programs, I get messages about __builtin_saveregs being undefined.


    A: You may have a system on which C and Fortran compilers are incompatible (for example, using gcc and the vendor's Fortran compiler). If you do not plan to use Fortran, the easiest fix is to rebuild with the -nof77 option to configure.

    You should also look into making your C compiler compatible with your Fortran compiler. Because this is very dependent on the specific system and compilers that you are using, you may need to find a local expert who can help you.

    The easiest but ugliest possibility is use f2c to convert Fortran to C, then use the C compiler to compile everything. If you take this route, remember that every Fortran routine has to be compiled using f2c and the C compiler.

    Alternatively, you can use various options (check the man pages for your compilers) to see what libraries that add when they link. Add those libraries to the link line for the other compiler. If you find a workable set of libraries, edit the appropriate scripts (e.g., mpicc) to include the necessary libraries. Mpich attempts to find all the libaries that you need but is not always successful.



Up: Problems Linking C Programs Next: HPUX Previous: Problems Linking C Programs


HPUX


Up: Problems Linking C Programs Next: LINUX Previous: General

    1. Q: When linking on HPUX, I get an error like this:
        cc -o pgm pgm.o -L/usr/local/mpich/lib/hpux/ch_p4 -lmpich  -lm 
        /bin/ld: Unsatisfied symbols: 
        sigrelse (code) 
        sigset (code) 
        sighold (code) 
        *** Error code 1 
    

    A: You need to add the link option -lV3. The ch_p4 device uses the System V signals on the HP; these are provided in the V3 library.



Up: Problems Linking C Programs Next: LINUX Previous: General


LINUX


Up: Problems Linking C Programs Next: Problems starting programs Previous: HPUX

    1. Q: When linking a Fortran program, I get
    Linking: 
    foo.o(.data+0x0): undefined reference to `pmpi_wtime_' 
    

    A: This is a bug in the pgf77 compiler (which is itself a workaround for a bug in the LINUX ld command). You can fix it by either adding -lpmpich to the link line or modifying the mpif.h to remove the external pmpi_wtime, pmpi_wtick statement.

    The mpich configure attempts to determine if pmpi_wtime and pmpi_wtick can be declared in mpif.h and removes them if there is a problem. If this happens and you use pmpi_wtime or pmpi_wtick in your program, you will need to declare them as functions returning double precision values.



Up: Problems Linking C Programs Next: Problems starting programs Previous: HPUX