The following error did *not* occur on the same system with the previous RC.
I have configured 1.10.3rc3 on a normal x86-64/Linux system with: --prefix=[...] --enable-debug --enable-static --disable-shared When I try to use the resulting build to compile the examples: $ make -k mpicc -g hello_c.c -o hello_c mpicc -g ring_c.c -o ring_c mpicc -g connectivity_c.c -o connectivity_c make[1]: Entering directory `/scratch/phargrov/OMPI/openmpi-1.10.3rc3-linux-x86_64-static/BLD/examples' make[2]: Entering directory `/scratch/phargrov/OMPI/openmpi-1.10.3rc3-linux-x86_64-static/BLD/examples' mpic++ -g hello_cxx.cc -o hello_cxx mpic++ -g ring_cxx.cc -o ring_cxx make[2]: Leaving directory `/scratch/phargrov/OMPI/openmpi-1.10.3rc3-linux-x86_64-static/BLD/examples' make[2]: Entering directory `/scratch/phargrov/OMPI/openmpi-1.10.3rc3-linux-x86_64-static/BLD/examples' mpifort -g hello_mpifh.f -o hello_mpifh /scratch/phargrov/OMPI/openmpi-1.10.3rc3-linux-x86_64-static/INST/lib/libmpi.a(ompi_mpi_init.o): In function `ompi_warn_fork': ompi_mpi_init.c:(.text+0x282): undefined reference to `pthread_atfork' /scratch/phargrov/OMPI/openmpi-1.10.3rc3-linux-x86_64-static/INST/lib/libopen-pal.a(lt1-malloc.o): In function `ptmalloc_init': malloc.c:(.text+0x5f3): undefined reference to `pthread_atfork' collect2: error: ld returned 1 exit status make[2]: *** [hello_mpifh] Error 1 mpifort -g ring_mpifh.f -o ring_mpifh /scratch/phargrov/OMPI/openmpi-1.10.3rc3-linux-x86_64-static/INST/lib/libmpi.a(ompi_mpi_init.o): In function `ompi_warn_fork': ompi_mpi_init.c:(.text+0x282): undefined reference to `pthread_atfork' /scratch/phargrov/OMPI/openmpi-1.10.3rc3-linux-x86_64-static/INST/lib/libopen-pal.a(lt1-malloc.o): In function `ptmalloc_init': malloc.c:(.text+0x5f3): undefined reference to `pthread_atfork' collect2: error: ld returned 1 exit status make[2]: *** [ring_mpifh] Error 1 make[2]: Leaving directory `/scratch/phargrov/OMPI/openmpi-1.10.3rc3-linux-x86_64-static/BLD/examples' make[1]: *** [mpi] Error 2 make[1]: Leaving directory `/scratch/phargrov/OMPI/openmpi-1.10.3rc3-linux-x86_64-static/BLD/examples' make: *** [all] Error 2 Comparing the configure output from RC2 and RC3 is informative: checking if word-sized integers must be word-size aligned... no checking if C compiler and POSIX threads work as is... no checking if C++ compiler and POSIX threads work as is... no -checking if Fortran compiler and POSIX threads work as is... no +checking if Fortran compiler and POSIX threads work as is... yes checking if C compiler and POSIX threads work with -Kthread... no checking if C compiler and POSIX threads work with -kthread... no checking if C compiler and POSIX threads work with -pthread... yes checking if C++ compiler and POSIX threads work with -Kthread... no checking if C++ compiler and POSIX threads work with -kthread... no checking if C++ compiler and POSIX threads work with -pthread... yes -checking if Fortran compiler and POSIX threads work with -Kthread... no -checking if Fortran compiler and POSIX threads work with -kthread... no -checking if Fortran compiler and POSIX threads work with -pthread... yes checking for pthread_mutexattr_setpshared... yes checking for pthread_condattr_setpshared... yes checking for PTHREAD_MUTEX_ERRORCHECK_NP... yes So, while RC2's configure determined that Fortran+pthreads needed -pthread, it appears that RC3 has instead determined that Fortran+pthreads "work as is". Here is the related portion of config.log from RC2: configure:63400: checking if Fortran compiler and POSIX threads work as is configure:63481: gcc -std=gnu99 -g -finline-functions -fno-strict-aliasing -I. -c conftest.c conftest.c: In function 'pthreadtest_f': conftest.c:27:5: warning: passing argument 1 of 'pthread_join' makes integer from pointer without a cast pthread_join(&newthread, 0); ^ In file included from conftest.c:3:0: /usr/include/pthread.h:242:12: note: expected 'pthread_t' but argument is of type 'pthread_t *' extern int pthread_join (pthread_t __th, void **__thread_return); ^ configure:63488: $? = 0 configure:63498: gfortran -g conftestf.f conftest.o -o conftest -lm -lutil conftest.o: In function `pthreadtest_f': conftest.c:(.text+0xa8): undefined reference to `__pthread_register_cancel' conftest.c:(.text+0xc3): undefined reference to `pthread_create' conftest.c:(.text+0xd5): undefined reference to `pthread_join' conftest.c:(.text+0xe4): undefined reference to `__pthread_unregister_cancel' collect2: error: ld returned 1 exit status configure:63505: $? = 1 And here it is for RC3: configure:63623: checking if Fortran compiler and POSIX threads work as is configure:63704: gcc -std=gnu99 -g -finline-functions -fno-strict-aliasing -I. -c conftest.c conftest.c: In function 'pthreadtest_f': conftest.c:27:5: warning: passing argument 1 of 'pthread_join' makes integer from pointer without a cast pthread_join(&newthread, 0); ^ In file included from conftest.c:3:0: /usr/include/pthread.h:242:12: note: expected 'pthread_t' but argument is of type 'pthread_t *' extern int pthread_join (pthread_t __th, void **__thread_return); ^ configure:63711: $? = 0 configure:63721: gfortran -g conftestf.f conftest.o -o conftest -lrt -lm -lutil configure:63728: $? = 0 configure:63802: result: yes It appears that the only important difference here is that "-lrt" has now appeared on the gfortran link line (which I assume pulls in libpthread). This "-lrt" appears to be the result of the new probe for clock_gettime(). I am not sure exactly what breaks down after that. -Paul -- Paul H. Hargrove phhargr...@lbl.gov Computer Languages & Systems Software (CLaSS) Group Computer Science Department Tel: +1-510-495-2352 Lawrence Berkeley National Laboratory Fax: +1-510-486-6900