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

2010-11-17 Thread Yudong Sun

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

2010-11-15 Thread Yudong Sun

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

2010-11-12 Thread Yudong Sun

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