mpich libraries linking problem

I´m trying to compile a meteorological model with PGI on LInux(SLES 10). Last part of the compilation shows me the following error messages:

ar: creando libutils-2.2-opt.a
ar: creando rams-6.0-opt.a

/usr/bin/ld /usr/lib64/crt1.o /usr/lib64/crti.o /opt/pgi/linux86-64/6.2/lib/trace_init.o /usr/lib64/gcc/x86_64-suse-linux/4.1.0//crtbegin.o /opt/pgi/linux86-64/6.2/lib/f90main.o -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 /opt/pgi/linux86-64/6.2/lib/pgi.ld rammain.o -lgcc_eh -lpthread rams-6.0-opt.a ./utils/libutils-2.2-opt.a -L/export/rams/build/60 -lncargd -L/opt/mpich2.pgi/lib -lmpich -lpthread -L/opt/pgi/linux86-64/6.2/lib -L/opt/pgi/linux86-64/6.2/libso -L/export/hdf5/lib -lhdf5 -lz -lm -lmpich -o rams-6.0-opt -L/opt/pgi/linux86-64/6.2/lib -L/usr/lib64 -L/usr/lib64/gcc/x86_64-suse-linux/4.1.0/ -rpath /opt/pgi/linux86-64/6.2/lib -lpgf90 -lpgf90_rpm1 -lpgf902 -lpgf90rtl -lpgftnrtl -lnspgc -lpgc -lm -lgcc -lc -lgcc /usr/lib64/gcc/x86_64-suse-linux/4.1.0//crtend.o /usr/lib64/crtn.o
/opt/mpich2.pgi/lib/libmpich.a(ad_iwrite.o): En la función ADIOI_GEN_aio': ad_iwrite.c:(.text+0x1ce): referencia a aio_write64’ sin definir
ad_iwrite.c:(.text+0x1dc): referencia a aio_read64' sin definir ad_iwrite.c:(.text+0x243): referencia a aio_write64’ sin definir
ad_iwrite.c:(.text+0x254): referencia a aio_read64' sin definir /opt/mpich2.pgi/lib/libmpich.a(ad_done.o): En la función ADIOI_GEN_IODone’:
ad_done.c:(.text+0x60): referencia a aio_error64' sin definir ad_done.c:(.text+0x98): referencia a aio_return64’ sin definir
ad_done.c:(.text+0xaa): referencia a aio_error64' sin definir /opt/mpich2.pgi/lib/libmpich.a(ad_wait.o): En la función ADIOI_GEN_IOComplete’:
ad_wait.c:(.text+0x67): referencia a aio_suspend64' sin definir ad_wait.c:(.text+0x8b): referencia a aio_return64’ sin definir
ad_wait.c:(.text+0x9d): referencia a aio_error64' sin definir /opt/mpich2.pgi/lib/libmpich.a(ad_nfs_done.o): En la función ADIOI_NFS_ReadDone’:
ad_nfs_done.c:(.text+0x60): referencia a aio_error64' sin definir ad_nfs_done.c:(.text+0x98): referencia a aio_return64’ sin definir
ad_nfs_done.c:(.text+0xaa): referencia a aio_error64' sin definir /opt/mpich2.pgi/lib/libmpich.a(ad_nfs_iwrite.o): En la función ADIOI_NFS_aio’:
ad_nfs_iwrite.c:(.text+0x215): referencia a aio_write64' sin definir ad_nfs_iwrite.c:(.text+0x225): referencia a aio_read64’ sin definir
ad_nfs_iwrite.c:(.text+0x2ed): referencia a aio_write64' sin definir ad_nfs_iwrite.c:(.text+0x2fd): referencia a aio_read64’ sin definir
/opt/mpich2.pgi/lib/libmpich.a(ad_nfs_wait.o): En la función ADIOI_NFS_ReadComplete': ad_nfs_wait.c:(.text+0x67): referencia a aio_suspend64’ sin definir
ad_nfs_wait.c:(.text+0x8b): referencia a aio_return64' sin definir ad_nfs_wait.c:(.text+0x9d): referencia a aio_error64’ sin definir
pgf90-Fatal-linker completed with exit code 1

Does anyone know what would be the problem?

Thanking in advance for your help or suggestions.

Hi eee,

Please add “-lrt -lpthread” to your link line. These sysmbols are found in the librt.a library and are used to support asynchronous IO. This support is only available on newer Linux OS such as SLES10. Note, as of the PGI 7.0 release, “-lrt” is added by default.

Thanks,
Mat