I ran ./bootstrap and used the autotools built there.
So - I have a "fix": you have to pass -all-static to libtool... but you
have to do it _after_ the --mode option for libtool. This is tricky to do.
LDFLAGS is in the right spot - but if you set LDFLAGS=-all-static
configure will fail saying that your C++ compiler can't create executables
(it obviously isn't using libtool so -all-static gets passed directly to
the compiler/linker... causing it to fail).
So - what worked for me was configuring without this set in LDFLAGS and
then doing:
LDFLAGS=-all-static make
That _works_ but you have to remember to do this all the time.
I think it would be handy if we had a way to set this at configure time -
but I don't know what that is...
Derek
On Wed, Aug 7, 2013 at 11:16 AM, Roy Stogner <royst...@ices.utexas.edu>wrote:
>
> What version of libtool is getting run? Just the other day I
> encountered a situation with a libMesh app where the system default
> libtool (version 2.4 IIRC) was utterly failing while the only slightly
> newer version in our contrib (2.4.2) did fine.
> ---
> Roy
>
>
> On Wed, 7 Aug 2013, Gaston, Derek R wrote:
>
> Ben et. al.....
>> I'm having some crazy issue with getting libMesh executables to link on a
>> BlueGene/Q (Mira at Argonne). The issue
>> is that libtool is choosing to try to link dynamic libraries even though
>> I explicitly set --enable-static
>> --disable-shared. It's weird because libtool is picking up .so's and
>> putting them right on the link line instead of
>> letting the linker find the static libraries that are sitting right next
>> to those .so's.
>>
>> I can manually create link lines that work - and generate working
>> binaries... but I can't get libtool to do it
>> automatically...
>>
>> Below is a full description of what is happening... any help I could get
>> would be awesome...
>>
>> Derek
>>
>> ---------- Forwarded message ----------
>> From: Gaston, Derek R <derek.gas...@inl.gov>
>> Date: Thu, Aug 1, 2013 at 12:45 PM
>> Subject: libtool Trouble on Mira
>> To: Jeff Hammond <jhamm...@alcf.anl.gov>, "John Peterson (INL)" <
>> jw.peter...@inl.gov>
>>
>>
>> Jeff,
>> (Note: If there is someone else I should send this to instead let me know)
>>
>> I've been able to log into Mira and have been working on getting
>> everything compiled. So far, everything is going
>> well. I've been able to compile Hypre and PETSc without issue and I can
>> _compile_ libMesh... but something is going
>> wrong in the linking stage when trying to link an executable with libMesh.
>>
>> What's happening is that libtool is picking up shared libraries for
>> system libraries such as libmpichf90. I cannot
>> see why this is happening. If I manually edit the link line to just link
>> -lmpichf90 (and others) everything works
>> fine and my executables are fine.
>>
>> I am using the +mpiwrappers-gcc softenv.
>>
>> Here's a typical libtool line that the libMesh build system is trying to
>> run:
>>
>> libtool --tag=CXX --mode=link mpicxx -O0 -felide-constructors -g -ansi
>> -pedantic -W -Wall -Wextra -Wno-long-long
>> -Wunused -Wpointer-arith -Wformat -Wparentheses -std=c++0x
>> -Woverloaded-virtual -fopenmp -o meshtool-dbg
>> src/apps/meshtool_dbg-**meshtool.o libmesh_dbg.la -L/home/gastdr/moose-**
>> compilers/petsc/petsc-3.3-p4/**gcc-opt/lib
>> -lpetsc -Wl,-rpath,/home/gastdr/moose-**compilers/hypre/hypre-2.8.0b/**
>> gcc-opt/lib
>> -L/home/gastdr/moose-**compilers/hypre/hypre-2.8.0b/**gcc-opt/lib
>> -lHYPRE -L/bgsys/drivers/V1R2M0/ppc64/**spi/lib
>> -L/bgsys/drivers/V1R2M0/ppc64/**comm/sys/lib
>> -L/bgsys/drivers/V1R2M0/ppc64/**comm/gcc/lib
>> -L/bgsys/drivers/toolchain/**V1R2M0-efix23/gnu-linux/lib/**
>> gcc/powerpc64-bgq-linux/4.4.6
>> -L/bgsys/drivers/toolchain/**V1R2M0-efix23/gnu-linux/lib/**gcc
>> -L/bgsys/drivers/toolchain/**V1R2M0-efix23/gnu-linux/**
>> powerpc64-bgq-linux/lib
>> -Wl,-rpath,/bgsys/drivers/**V1R2M0/ppc64/comm/gcc/lib
>> -Wl,-rpath,/home/gastdr/moose-**compilers/petsc/petsc-3.3-p4/**gcc-opt/lib
>> -lflapack -lfblas -lmpichf90 -lgfortran -lm
>> -lcxxmpich -lmpich -lopa -lmpl -lpami -lSPI -lSPI_cnk -lrt -lpthread
>> -lstdc++ -lgomp -lgcc_eh -lnss_files -lnss_dns
>> -lresolv -ldl
>>
>>
>> And here is the actual link line that libtool is creating:
>>
>> mpicxx -O0 -felide-constructors -g -ansi -pedantic -W -Wall -Wextra
>> -Wno-long-long -Wunused -Wpointer-arith -Wformat
>> -Wparentheses -std=c++0x -Woverloaded-virtual -fopenmp -o meshtool-dbg
>> src/apps/meshtool_dbg-**meshtool.o -Wl,-rpath
>> -Wl,/home/gastdr/moose-**compilers/hypre/hypre-2.8.0b/**gcc-opt/lib
>> -Wl,-rpath
>> -Wl,/bgsys/drivers/V1R2M0/**ppc64/comm/gcc/lib -Wl,-rpath
>> -Wl,/home/gastdr/moose-**compilers/petsc/petsc-3.3-p4/**gcc-opt/lib
>> ./.libs/libmesh_dbg.a -L./src/mpl
>> -L./src/openpa/src -L/home/gastdr/moose-**compilers/petsc/petsc-3.3-p4/**
>> gcc-opt/lib
>> -L/home/gastdr/moose-**compilers/hypre/hypre-2.8.0b/**gcc-opt/lib
>> -L/bgsys/drivers/toolchain/**V1R2M0-efix23/gnu-linux/**
>> powerpc64-bgq-linux/lib
>> /gpfs/mira-home/gastdr/**projects/libmesh/build/**
>> contrib/netcdf/v4/liblib/.**libs/libnetcdf.a -lpetsc -lHYPRE
>> -L/bgsys/drivers/V1R2M0/ppc64/**spi/lib -L/bgsys/drivers/V1R2M0/ppc64/**
>> comm/sys/lib
>> -L/bgsys/drivers/V1R2M0/ppc64/**comm/gcc/lib
>> -L/bgsys/drivers/toolchain/**V1R2M0-efix23/gnu-linux/lib/**
>> gcc/powerpc64-bgq-linux/4.4.6
>> -L/bgsys/drivers/toolchain/**V1R2M0-efix23/gnu-linux/lib/**gcc -lflapack
>> -lfblas
>> /bgsys/drivers/V1R2M0/ppc64/**comm/gcc/lib/libmpichf90.so
>> /bgsys/drivers/toolchain/**V1R2M0/gnu-linux/powerpc64-**
>> bgq-linux/lib/libgfortran.so
>> /bgsys/drivers/toolchain/**V1R2M0-efix23/gnu-linux/**
>> powerpc64-bgq-linux/lib/**libgfortran.so
>> /bgsys/drivers/V1R2M0/ppc64/**comm/gcc/lib/libcxxmpich.so
>> /bgsys/drivers/toolchain/**V1R2M0/gnu-linux/powerpc64-**
>> bgq-linux/lib/libstdc++.so
>> /bgsys/drivers/V1R2M0/ppc64/**comm/gcc/lib/libmpich.so
>> /bgsys/drivers/V1R2M0/ppc64/**comm/gcc/lib/libopa.so
>> /bgsys/drivers/V1R2M0/ppc64/**comm/gcc/lib/libmpl.so -lpami -lSPI
>> -lSPI_cnk -lpthread
>> /bgsys/drivers/toolchain/**V1R2M0-efix23/gnu-linux/**
>> powerpc64-bgq-linux/lib/**libstdc++.so -lm
>> /bgsys/drivers/toolchain/**V1R2M0-efix23/gnu-linux/**
>> powerpc64-bgq-linux/lib/**libgomp.so -lrt -lgcc_eh -lnss_files
>> -lnss_dns -lresolv -ldl -fopenmp -Wl,-rpath
>> -Wl,/bgsys/drivers/toolchain/**V1R2M0-efix23/gnu-linux/**powerpc64-bgq-linux/lib
>> -Wl,-rpath
>> -Wl,/bgsys/drivers/V1R2M0/**ppc64/comm/gcc/lib -Wl,-rpath
>> -Wl,/bgsys/drivers/toolchain/**V1R2M0/gnu-linux/powerpc64-**bgq-linux/lib
>> -Wl,-rpath
>> -Wl,/bgsys/drivers/toolchain/**V1R2M0-efix23/gnu-linux/**powerpc64-bgq-linux/lib
>> -Wl,-rpath
>> -Wl,/bgsys/drivers/V1R2M0/**ppc64/comm/gcc/lib -Wl,-rpath
>> -Wl,/bgsys/drivers/toolchain/**V1R2M0/gnu-linux/powerpc64-**bgq-linux/lib
>>
>>
>> Note the .so files that are directly on the link line. This gives rise
>> to the following error:
>>
>> /bgsys/drivers/toolchain/**V1R2M0-efix23/gnu-linux/lib/**
>> gcc/powerpc64-bgq-linux/4.4.6/**../../../../powerpc64-bgq-**linux/
>> bin/ld: attempted static link of dynamic object
>> `/bgsys/drivers/V1R2M0/ppc64/**comm/gcc/lib/libmpichf90.so'
>>
>>
>> If I remove all of the .so's from that link line (and add -lgfortran) I
>> get a link line that works:
>>
>> mpicxx -O0 -felide-constructors -g -ansi -pedantic -W -Wall -Wextra
>> -Wno-long-long -Wunused -Wpointer-arith -Wformat
>> -Wparentheses -std=c++0x -Woverloaded-virtual -fopenmp -o meshtool-dbg
>> src/apps/meshtool_dbg-**meshtool.o -Wl,-rpath
>> -Wl,/home/gastdr/moose-**compilers/hypre/hypre-2.8.0b/**gcc-opt/lib
>> -Wl,-rpath
>> -Wl,/bgsys/drivers/V1R2M0/**ppc64/comm/gcc/lib -Wl,-rpath
>> -Wl,/home/gastdr/moose-**compilers/petsc/petsc-3.3-p4/**gcc-opt/lib
>> ./.libs/libmesh_dbg.a -L./src/mpl
>> -L./src/openpa/src -L/home/gastdr/moose-**compilers/petsc/petsc-3.3-p4/**
>> gcc-opt/lib
>> -L/home/gastdr/moose-**compilers/hypre/hypre-2.8.0b/**gcc-opt/lib
>> -L/bgsys/drivers/toolchain/**V1R2M0-efix23/gnu-linux/**
>> powerpc64-bgq-linux/lib
>> /gpfs/mira-home/gastdr/**projects/libmesh/build/**
>> contrib/netcdf/v4/liblib/.**libs/libnetcdf.a -lpetsc -lHYPRE
>> -L/bgsys/drivers/V1R2M0/ppc64/**spi/lib -L/bgsys/drivers/V1R2M0/ppc64/**
>> comm/sys/lib
>> -L/bgsys/drivers/V1R2M0/ppc64/**comm/gcc/lib
>> -L/bgsys/drivers/toolchain/**V1R2M0-efix23/gnu-linux/lib/**
>> gcc/powerpc64-bgq-linux/4.4.6
>> -L/bgsys/drivers/toolchain/**V1R2M0-efix23/gnu-linux/lib/**gcc -lflapack
>> -lfblas -lpami -lSPI -lSPI_cnk -lpthread -lm
>> -lrt -lgcc_eh -lnss_files -lnss_dns -lresolv -ldl -fopenmp -Wl,-rpath
>> -Wl,/bgsys/drivers/toolchain/**V1R2M0-efix23/gnu-linux/**powerpc64-bgq-linux/lib
>> -Wl,-rpath
>> -Wl,/bgsys/drivers/V1R2M0/**ppc64/comm/gcc/lib -Wl,-rpath
>> -Wl,/bgsys/drivers/toolchain/**V1R2M0/gnu-linux/powerpc64-**bgq-linux/lib
>> -Wl,-rpath
>> -Wl,/bgsys/drivers/toolchain/**V1R2M0-efix23/gnu-linux/**powerpc64-bgq-linux/lib
>> -Wl,-rpath
>> -Wl,/bgsys/drivers/V1R2M0/**ppc64/comm/gcc/lib -Wl,-rpath
>> -Wl,/bgsys/drivers/toolchain/**V1R2M0/gnu-linux/powerpc64-**bgq-linux/lib
>> -lgfortran
>>
>>
>> I went and looked at the .la files for those libraries (for
>> instance /bgsys/drivers/**toolchain/V1R2M0-efix23/gnu-**
>> linux/powerpc64-bgq-linux/lib/**libgfortran.la <http://libgfortran.la>)
>> and they
>> definitely are specifying the "old_library" option like they are supposed
>> to for the static version of the library.
>>
>> I'm really stumped on this one...
>>
>> Derek
>>
>>
>>
>>
>>
>>
------------------------------------------------------------------------------
Get 100% visibility into Java/.NET code with AppDynamics Lite!
It's a free troubleshooting tool designed for production.
Get down to code-level detail for bottlenecks, with <2% overhead.
Download for free and get started troubleshooting in minutes.
http://pubads.g.doubleclick.net/gampad/clk?id=48897031&iu=/4140/ostg.clktrk
_______________________________________________
Libmesh-devel mailing list
Libmesh-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/libmesh-devel