CFD Online Discussion Forums

CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   OpenFOAM Installation (https://www.cfd-online.com/Forums/openfoam-installation/)
-   -   OF141dev undefined reference to METIS symbols on SUSE Enterprise (https://www.cfd-online.com/Forums/openfoam-installation/57330-of141dev-undefined-reference-metis-symbols-suse-enterprise.html)

matthias August 28, 2008 19:27

Hi all, I checked out the l
 
Hi all,

I checked out the latest OF-1.4.1-dev version from svn repository. I can compile it on our Fedora systems without any problems but if I try to compile OF on a SUSE Enterprise System I'm getting always a linker error during the build of decomposePar and redistributeMeshPar .
There is no error in the decomposition libs or METIS libs and also there is no build error during the compiler run of the binaries however linking the binaries doesn't work.


g++ -m64 -Dlinux64 -DDP -Wall -Wno-strict-aliasing -Wextra -Wno-unused-parameter -Wold-style-cast -march=opteron -O3 -DNoRepository -ftemplate-depth-40 -I../decompositionMethods/lnInclude -I/home/b/mvimixer/OpenFOAM/OpenFOAM-1.4.1-dev/src/finiteVolume/lnInclude -I/home/b/mvimixer/OpenFOAM/OpenFOAM-1.4.1-dev/src/finiteArea/lnInclude -I/home/b/mvimixer/OpenFOAM/OpenFOAM-1.4.1-dev/src/lagrangian/basic/lnInclude -I/home/b/mvimixer/OpenFOAM/OpenFOAM-1.4.1-dev/src/tetDecompositionFiniteElement /lnInclude -DFACE_DECOMP -IlnInclude -I. -I/home/b/mvimixer/OpenFOAM/OpenFOAM-1.4.1-dev/src/OpenFOAM/lnInclude -fPIC Make/linux64GccDPOpt/decomposeMesh.o Make/linux64GccDPOpt/decomposePar.o Make/linux64GccDPOpt/domainDecomposition.o Make/linux64GccDPOpt/distributeCells.o Make/linux64GccDPOpt/faMeshDecomposition.o Make/linux64GccDPOpt/fvFieldDecomposer.o Make/linux64GccDPOpt/faFieldDecomposer.o Make/linux64GccDPOpt/pointFieldDecomposer.o Make/linux64GccDPOpt/tetPointFieldDecomposer.o Make/linux64GccDPOpt/lagrangianFieldDecomposer.o -L/home/b/mvimixer/OpenFOAM/OpenFOAM-1.4.1-dev/lib/linux64GccDPOpt \
-ldecompositionMethods -lfiniteVolume -lfiniteArea -llagrangian -lmeshTools -lfaceDecompFiniteElement -lfaceDecompositionMotionSolver -lOpenFOAM -liberty -ldl -lm -o /home/b/mvimixer/OpenFOAM/OpenFOAM-1.4.1-dev/applications/bin/linux64GccDPOpt/de composePar
/home/b/mvimixer/OpenFOAM/OpenFOAM-1.4.1-dev/lib/linux64GccDPOpt/libdecompositio nMethods.so: undefined reference to `METIS_PartGraphKway(int*, int*, int*, int*, int*, int*, int*, int*, int*, int*, int*)'
/home/b/mvimixer/OpenFOAM/OpenFOAM-1.4.1-dev/lib/linux64GccDPOpt/libdecompositio nMethods.so: undefined reference to `METIS_WPartGraphRecursive(int*, int*, int*, int*, int*, int*, int*, int*, float*, int*, int*, int*)'
/home/b/mvimixer/OpenFOAM/OpenFOAM-1.4.1-dev/lib/linux64GccDPOpt/libdecompositio nMethods.so: undefined reference to `METIS_WPartGraphKway(int*, int*, int*, int*, int*, int*, int*, int*, float*, int*, int*, int*)'
/home/b/mvimixer/OpenFOAM/OpenFOAM-1.4.1-dev/lib/linux64GccDPOpt/libdecompositio nMethods.so: undefined reference to `METIS_PartGraphRecursive(int*, int*, int*, int*, int*, int*, int*, int*, int*, int*, int*)'
collect2: ld returned 1 exit status
make: *** [/home/b/mvimixer/OpenFOAM/OpenFOAM-1.4.1-dev/applications/bin/linux64GccDPOpt/d ecomposePar] Error 1


I used the gcc 4.1.2, gcc-4.3.1 and gcc-4.4 for compilation with the same result!
Furthermore I installed the latest binutils but also with no success. I used different flex versions and I changed the compilation, linking order of the decomposition lib (another order of the metis libs) but it didn't help!

So any suggestions are welcome!

Matthias

mbeaudoin August 28, 2008 21:08

Hello Matthias, What is the
 
Hello Matthias,

What is the output of the 2 following commands on your system:

ldd $FOAM_LIB/$WM_OPTIONS/libdecompositionMethods.so

and

nm -a $FOAM_LIB/$WM_OPTIONS/libmetis.so | grep METIS_

Martin

mbeaudoin August 29, 2008 08:29

Hello Matthias, The output
 
Hello Matthias,

The output of your commands looks normal enough.

The "undefined references" are indeed defined in libmetis.so, which itself is dragged along by the library libdecompositionMethods.so. So your linker should be able to finalize the compilation.

Last questions because I don't have a clue for you:

What version of SUSE Enterprise System are you using?

Are you compiling on a real PC or on a virtual machine (VMWare, etc)?

What is the output of:

which ldd
ldd --version

which g++
g++ --version


Martin

matthias August 29, 2008 10:04

Hi Martin, g++ --version:
 
Hi Martin,

g++ --version:
g++ (GCC) 4.3.1
Copyright (C) 2008 Free Software Foundation, Inc.
Dies ist freie Software; die Kopierbedingungen stehen in den Quellen. Es
gibt KEINE Garantie; auch nicht für MARKTGÄNGIGKEIT oder FÜR SPEZIELLE ZWECKE.

ldd --version :
ldd (GNU libc) 2.4
Copyright © 2006 Free Software Foundation, Inc.
Dies ist freie Software; in den Quellen befinden sich die Lizenzbedingungen.
Es gibt KEINERLEI Garantie; nicht einmal für die TAUGLICHKEIT oder
VERWENDBARKEIT FÜR EINEN ANGEGEBENEN ZWECK.
Written by Roland McGrath and Ulrich Drepper.


ld --version:
GNU ld (GNU Binutils) 2.18
Copyright 2007 Free Software Foundation, Inc.
This program is free software; you may redistribute it under the terms of
the GNU General Public License version 3 or (at your option) a later version.
This program has absolutely no warranty.

uname -a :
Linux 2.6.16.54-0.2.5.PTF.283002.0-smp #1 SMP Mon Jan 21 13:29:51 UTC 2008 x86_64 x86_64 x86_64 GNU/Linux


Yes I use a real PC and no virtual machine!
It is strange!

Matthias

matthias August 29, 2008 10:13

@Martin Maybe this informat
 
@Martin

Maybe this information helps, it seems that the linker doesn't include libmetis and libparmetis:

nm /home/b/mvimixer/OpenFOAM/OpenFOAM-1.4.1-dev/lib/linux64GccDPOpt/libdecompositio nMethods.so | grep METIS
U ParMETIS_V3_PartGeomKway
U _Z19METIS_PartGraphKwayPiS_S_S_S_S_S_S_S_S_S_
U _Z20METIS_WPartGraphKwayPiS_S_S_S_S_S_S_PfS_S_S_
U _Z24METIS_PartGraphRecursivePiS_S_S_S_S_S_S_S_S_S_
U _Z25METIS_WPartGraphRecursivePiS_S_S_S_S_S_S_PfS_S _S_


Matthias

mbeaudoin August 29, 2008 10:55

@Matthias: Your setup looks
 
@Matthias:

Your setup looks fine.

Your version of ld is newer than mine, but I am using openSuse 10.3, not SUSE Enterprise.

As for the undefined symbols in libdecompositionMethods.so, this is quite normal, those symbols are defined in libmetis.so, and marked as required in libdecompositionMethods.so, but undefined in that library.

The linker "ld" should find those missing symbols when dynamically loading libmetis.so because this library is required by libdecompositionMethods.so.

Out of curiosity, have you tried to explicitely add the library libmetis and libparmetis in the options file for decomposePar?

You said that you were able to complete the compilition on your Fedora systems; what version of ld do you have on those systems?

Martin


All times are GMT -4. The time now is 13:40.