Open MPI logo

Open MPI User's Mailing List Archives

  |   Home   |   Support   |   FAQ   |  

This web mail archive is frozen.

This page is part of a frozen web archive of this mailing list.

You can still navigate around this archive, but know that no new mails have been added to it since July of 2016.

Click here to be taken to the new web archives of this list; it includes all the mails that are in this frozen archive plus all new mails that have been sent to the list since it was migrated to the new archives.

Subject: [OMPI users] OpenMPI with NAG compiler and gcc 4.6
From: Ning Li (ning.li_at_[hidden])
Date: 2011-06-27 05:24:16


Hello,

I built OpenMPI 1.5.3 using NAG compiler v 5.2 on a new system running
Fedora 15 (with gcc 4.6). OpenMPI can be built successfully, but when I
compile a Fortran MPI application I got an error at link stage:

gcc: error: unrecognized option '--export-dynamic'

Note that NAG Fortran compiler generates intermediate C code and
actually calls gcc to build the application.

GCC 4.6 release note contains the following: "GCC now has stricter
checks for invalid command-line options. In particular, when |gcc| was
called to link object files rather than compile source code, it would
previously accept and ignore all options starting with |--|, including
linker options such as |--as-needed| and |--export-dynamic|, although
such options would result in errors if any source code was compiled.
Such options, if unknown to the compiler, are now rejected in all cases;
if the intent was to pass them to the linker, options such as
|-Wl,--as-needed| should be used."

My next step was to track down where the illegal syntax was generated,
using the '-showme' option provided by the OpenMPI compiler wrapper and
'-dryrun' option provided by NAG compiler.

[lining_at_combe pi]$ /home/lining/software/openmpi/1.5.3/nag/bin/mpif90
--showme pi.f90 -o pi.exe_nag
nagfor pi.f90 -o pi.exe_nag
-I/home/lining/software/openmpi/1.5.3/nag/include -pthread
-I/home/lining/software/openmpi/1.5.3/nag/lib
-L/home/lining/software/openmpi/1.5.3/nag/lib -lmpi_f90 -lmpi_f77 -lmpi
-lnsl -lutil -lm -ldl -Wl,--export-dynamic -lnsl -lutil -lm -ldl

[lining_at_combe pi]$ /home/lining/software/openmpi/1.5.3/nag/bin/mpif90
-dryrun pi.f90 -o tpi.exe_nag
NAG Fortran Compiler Release 5.2(721)
Option warning: Unrecognised option -pthread passed to loader
/home/lining/software/NAG_Fortran/lib/forcomp -checkversion 5.2 721
-I/home/lining/software/openmpi/1.5.3/nag/include
-I/home/lining/software/openmpi/1.5.3/nag/lib -library
/home/lining/software/NAG_Fortran/lib -o /tmp/pi.024444.c pi.f90
/usr/bin/gcc -I/home/lining/software/NAG_Fortran/lib -c -DANSI_C
-DINT64=long long -funsigned-char -march=i686 -Wno-pointer-sign -o pi.o
/tmp/pi.024444.c
/usr/bin/gcc -o pi.exe_nag
/home/lining/software/NAG_Fortran/lib/quickfit.o pi.o -pthread
-L/home/lining/software/openmpi/1.5.3/nag/lib -lmpi_f90 -lmpi_f77 -lmpi
-lnsl -lutil -lm -ldl -lnsl -lutil -lm -ldl
-Wl,-rpath,/home/lining/software/NAG_Fortran/lib
/home/lining/software/NAG_Fortran/lib/libf52.so
/home/lining/software/NAG_Fortran/lib/libf52.a -lm --export-dynamic

So OpenMPI generates the '-Wl,--export-dynamic' flag. When this is
passed to NAG compiler, NAG compiler interprets this as "passing the
'--export-dynamic' flag to the linker (gcc)" (which I believe is the
correct behaviour). But gcc 4.6 expects to see '-Wl,--export-dynamic'.

My temporary solution as supplied by NAG compiler developers is to edit
share/openmpi/*-wrapper-data.txt and put flag
'-Wl,-Wl,,--export-dynamic' there.

Ning

--
Ning Li
Technical Consultant
Numerical Algorithms Group
________________________________________________________________________
The Numerical Algorithms Group Ltd is a company registered in England
and Wales with company number 1249803. The registered office is:
Wilkinson House, Jordan Hill Road, Oxford OX2 8DR, United Kingdom.
This e-mail has been scanned for all viruses by Star. The service is
powered by MessageLabs. 
________________________________________________________________________