[gmx-users] PGI link error: unknown switch --rpath attempted static link of dynamic object fftw/lib/libfftw3.so
Hi Roland, CMake works fine for the installation. There may be minor typos in the online installation instructions using CMake here http://www.gromacs.org/Developer_Zone/Cmake To use single precision FFTW, the two FFTW3 flags should be: cmake -D FFTW3F_INCLUDE_DIR=... -D FFTW3F_LIBRARIES=... instead of FFTW3_INCLUDE_DIR and FFTW3_LIBRARIES. Otherwise cmake will complain fftw library not found when building single precision libraries. Thanks, Yudong 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. 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 listgmx-users@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-requ...@gromacs.org. Can't post? Read http://www.gromacs.org/Support/Mailing_Lists
Re: [gmx-users] PGI link error: unknown switch --rpath attempted static link of dynamic object fftw/lib/libfftw3.so
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 yud...@nag.co.uk mailto:yud...@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
Re: [gmx-users] PGI link error: unknown switch --rpath attempted static link of dynamic object fftw/lib/libfftw3.so
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 -Wl,-rpath=/opt/fftw/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 /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 --rpath /opt/fftw/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) 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' 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' 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 listgmx-users@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-requ...@gromacs.org. Can't post? Read http://www.gromacs.org/Support/Mailing_Lists