[gmx-users] PGI link error: unknown switch --rpath & attempted static link of dynamic object fftw/lib/libfftw3.so

Roland Schulz roland at utk.edu
Mon Nov 15 21:26:43 CET 2010


Hi,

this is a bug in the autoconf version GROMACS is using. Since we are moving
to cmake we are not updating it thus this is an issue which won't be fixed.

There are two options:
- Create a folder. Copy (or symlink) the static library into that folder.
Point the linker (-L) to that folder. Because your folder only has the
static libraries it will work.
- Use cmake. For cmake this issue is solved.

Roland

On Mon, Nov 15, 2010 at 7:18 AM, Yudong Sun <yudong at nag.co.uk> wrote:

> Hi,
>
> I want to build an all static library because a job running on background
> nodes may not be able to find the dynamic libraries installed on the front
> node in my system.
>
> My configure line for GCC is:
>
> ./configure --prefix=/path-to/gromacs_4.5.3 --enable-mpi --enable-double
> CC=cc CFLAGS=-O3 MPICC=cc
>
> Here I use cc for both C compiler and MPI compiler because it is the name
> of the C compiler wrapper used on my system which is also functioning for
> the MPI C compiler.
>
> The fftw library is pre-installed on my system which is managed by the
> Modules package. When loaded, the fftw module sets the environment variables
> as:
>
> prepend-path     LD_LIBRARY_PATH /opt/fftw/3.2.2.1/lib
> setenv           FFTW_POST_LINK_OPTS  -L/opt/fftw/3.2.2.1/lib-Wl,-rpath=/opt/fftw/
> 3.2.2.1/lib -lfftw3 -lfftw3f
> setenv           FFTW_INCLUDE_OPTS  -I/opt/fftw/3.2.2.1/include
> setenv           FFTW_DIR /opt/fftw/3.2.2.1/lib
> setenv           FFTW_INC /opt/fftw/3.2.2.1/include
>
> In make, the link line causing the libfftw3 error is:
>
> cc -DHAVE_CONFIG_H -I. -I../../src -I/usr/include/libxml2 -I../../include
> -DGMXLIBDIR=\"/usr/local/packages/nag/GROMACS/phase2b_4.5.3/share/top\"
> -O3 -MT grompp.o -MD -MP -MF .deps/grompp.Tpo -c -o grompp.o grompp.c
> mv -f .deps/grompp.Tpo .deps/grompp.Po
> /bin/sh ../../libtool --tag=CC   --mode=link cc  -O3   -o grompp grompp.o
> libgmxpreprocess_mpi_d.la  ../mdlib/libmd_mpi_d.la ../gmxlib/
> libgmx_mpi_d.la  -lnsl -lm
> cc -O3 -o grompp grompp.o  ./.libs/libgmxpreprocess_mpi_d.a
> /usr/local/packages/nag/GROMACS/gromacs-4.5.3/src/mdlib/.libs/libmd_mpi_d.a
> ../mdlib/.libs/libmd_mpi_d.a /opt/fftw/3.2.2.1/lib/libfftw3.so/usr/lib64/libxml2.so -lz
> /usr/local/packages/nag/GROMACS/gromacs-4.5.3/src/gmxlib/.libs/libgmx_mpi_d.a
> ../gmxlib/.libs/libgmx_mpi_d.a -ldl -lnsl -lm   -Wl,--rpath -Wl,/opt/fftw/
> 3.2.2.1/lib -Wl,--rpath -Wl,/opt/fftw/3.2.2.1/lib
> /opt/cray/xt-asyncpe/3.7.24/bin/cc: INFO: linux target is being used
>
> /usr/bin/ld: attempted static link of dynamic object `/opt/fftw/
> 3.2.2.1/lib/libfftw3.so'
> collect2: ld returned 1 exit status
>
> GCC doesn't support the -rpath flag but it seems not a problem here.
>
> The fftw library has the static and dynamic libraries provided. The linker
> picks the libfftw3.so. This may be relevant to the specification in the
> libfftw3.la:
>
> # libfftw3.la - a libtool library file
> # Generated by ltmain.sh (GNU libtool) 2.2.6 Debian-2.2.6a-4
> #
> # Please DO NOT delete this file!
> # It is necessary for linking the library.
>
> # The name that we can dlopen(3).
> dlname='libfftw3.so.3'
>
> # Names of this library.
> library_names='libfftw3.so.3.2.4 libfftw3.so.3 libfftw3.so'
>
> # The name of the static archive.
> old_library='libfftw3.a'
> # Linker flags that can not go in dependency_libs.
> inherited_linker_flags=' -pthread'
>
> # Libraries that this one depends upon.
> dependency_libs=' -lm'
>
> # Names of additional weak libraries provided by this library
> weak_library_names=''
>
> # Version information for libfftw3.
> current=5
> age=2
> revision=4
>
> # Is this an already installed library?
> installed=yes
>
> # Should we warn about portability when linking against -modules?
> shouldnotlink=no
>
> # Files to dlopen/dlpreopen
> dlopen=''
> dlpreopen=''
>
> # Directory that this library needs to be installed in:
> libdir='/opt/fftw/3.2.2.1/lib'
>
>
> Is there any workaround to instruct the linker to use the static
> libfftw3.a?
>
> Thanks,
>
> Yudong
>
> Roland Schulz wrote, On 12/11/2010 18:53:
>
>> Little bit more background/context would help.
>>
>> Do you try to compile an all static library? If so you of course need a
>> static library of fftw. If it is not all static it normally should
>> accept the dynamic fftw. Then please give us the full configure line,
>> the gcc command line of the link step and the full error message.
>>
>> Roland
>>
>> On Fri, Nov 12, 2010 at 12:17 PM, Yudong Sun <yudong at nag.co.uk
>> <mailto:yudong at nag.co.uk>> wrote:
>>
>>    Mark Abraham wrote, On 12/11/2010 17:02:
>>
>>        On 13/11/2010 3:15 AM, Yudong Sun wrote:
>>
>>            Hi,
>>
>>            I have some troubles when compiling GROMACS 4.5.3 using PGI
>>            compiler
>>            on the -rpath flag and also a static link to dynamic
>>            libfftw3.so.
>>
>>            I use the pre-installed FFTW 3.2.2.1 library on my Linux
>>            system. The
>>            FFTW library is managed by the Modules package. The fftw module
>>            automatically sets the environ variable as:
>>
>>            FFTW_POST_LINK_OPTS = -L/opt/fftw/3.2.2.1/lib
>>            <http://3.2.2.1/lib>
>>            -Wl,-rpath=/opt/fftw/3.2.2.1/lib <http://3.2.2.1/lib>
>>
>>            -lfftw3 -lfftw3f
>>
>>
>>        So how does configure use this information? (hint: providing the
>>        configure command line is essential for us to understand any
>>        context!)
>>
>>
>>            When compiling, an error occurs on the -rpath:
>>
>>            pgcc -fast -o grompp grompp.o ./.libs/libgmxpreprocess_mpi_d.a
>>
>>  /usr/local/packages/nag/GROMACS/gromacs-4.5.3/src/mdlib/.libs/libmd_mpi_d.a
>>            ../mdlib/.libs/libmd_mpi_d.a
>>            /opt/fftw/3.2.2.1/lib/libfftw3.so
>>            <http://3.2.2.1/lib/libfftw3.so>
>>
>>
>>  /usr/local/packages/nag/GROMACS/gromacs-4.5.3/src/gmxlib/.libs/libgmx_mpi_d.a
>>            ../gmxlib/.libs/libgmx_mpi_d.a -ldl -lnsl -lm --rpath
>>            /opt/fftw/3.2.2.1/lib <http://3.2.2.1/lib> --rpath
>>            /opt/fftw/3.2.2.1/lib <http://3.2.2.1/lib>
>>
>>            pgcc-Error-Unknown switch: --rpath
>>            pgcc-Error-Unknown switch: --rpath
>>
>>            Pgcc doesn't recognize --rpath. The correct format is a
>>            single dash
>>            only -rpath.
>>
>>
>>        Sounds like configure isn't handling pgcc properly. However,
>>        GROMACS is
>>        using very vanilla autoconf stuff, so I'm strongly of the
>>        opinion that
>>        the problem isn't on the GROMACS side.
>>
>>
>>            If I manually remove the extra '-' (-rpath
>>            /opt/fftw/3.2.2.1/lib <http://3.2.2.1/lib>) and
>>
>>            rerun the command line, a link error appears:
>>
>>            /usr/bin/ld: attempted static link of dynamic object
>>            `/opt/fftw/3.2.2.1/lib/libfftw3.so
>>            <http://3.2.2.1/lib/libfftw3.so>'
>>
>>
>>            The command line links the dynamic fftw library. As the
>>            'configure
>>            --help' shows the default is a static build. Why doesn't the
>>            configure
>>            pick the libfftw3.a but the libfftw3.so? The fftw library on
>>            my system
>>            contains both static and dynamic libraries.
>>
>>
>>        Don't know. Ask the autoconf list.
>>
>>
>>            I have also tried to make the old GROMACS 4.0.7 which has
>>            shown the
>>            same problems as above.
>>
>>            Any workarounds to the problems or what options should I
>>            pass to the
>>            configure?
>>
>>
>>        Don't bother with PGI compilers. GROMACS performance is 99%
>>        compiler-independent, thanks to hand-coded assembly for the
>>        inner loops.
>>        Use gcc.
>>
>>
>>    I have tried GCC. It has the same static link problem:
>>
>>
>>    attempted static link of dynamic object
>>    `/opt/fftw/3.2.2.1/lib/libfftw3.so <http://3.2.2.1/lib/libfftw3.so>'
>>
>>    Yudong
>>
>>        Mark
>>
>>
> ________________________________________________________________________
> 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.
> ________________________________________________________________________
> --
> gmx-users mailing list    gmx-users at gromacs.org
> http://lists.gromacs.org/mailman/listinfo/gmx-users
> Please search the archive at
> http://www.gromacs.org/Support/Mailing_Lists/Search before posting!
> Please don't post (un)subscribe requests to the list. Use the www interface
> or send it to gmx-users-request at gromacs.org.
> Can't post? Read http://www.gromacs.org/Support/Mailing_Lists
>
>
>


-- 
ORNL/UT Center for Molecular Biophysics cmb.ornl.gov
865-241-1537, ORNL PO BOX 2008 MS6309
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://maillist.sys.kth.se/pipermail/gromacs.org_gmx-users/attachments/20101115/b2e24da8/attachment.html>


More information about the gromacs.org_gmx-users mailing list