undefined reference to ....

Satish Balay balay at mcs.anl.gov
Wed Jan 10 19:32:08 CST 2007


Ah - I wasn't checking your make output closly..

Looks like you are listing your libs after petsclibs. You'll have to
list the object files - in the correct order of dependencies..

> > > -lirc -lgcc_s -lirc_s -ldl  -o a.out global.o  main.f90

Also - looks like you are compiling & linking at the same step.. [i.e
using .o and .f90 in the same command]. Sugest crearing .o files before
linking..

i.e 

${FLINKER} -o a.out global.o  main.o ${PETSC_LIB}

Satish


On Thu, 11 Jan 2007, Ben Tay wrote:

> Yes it ran successfully. I've attached the output.
> 
> thank you very much.
> 
> 
> On 1/11/07, Satish Balay <balay at mcs.anl.gov> wrote:
> > 
> > Do PETSc examples work?
> > 
> > Send us the output from
> > 
> > make test
> > 
> > Staish
> > 
> > On Wed, 10 Jan 2007, Ben Tay wrote:
> > 
> > > Hi,
> > >
> > > I have a very simple fortran code. It compiles on a 32bit system with
> > mkl
> > > with no errors but on em64t, it gives "undefined reference to ...."
> > error.
> > >
> > > It works when I compiled with the supplied blas/lapack. However if I use
> > > Intel mkl, it gives the error as stated above.
> > >
> > > My code is
> > >
> > > global.F
> > >
> > >       module global_data
> > >
> > >        implicit none
> > >
> > >        save
> > >
> > > #include "include/finclude/petsc.h"
> > > #include "include/finclude/petscvec.h"
> > > #include "include/finclude/petscmat.h"
> > > #include "include/finclude/petscksp.h"
> > > #include "include/finclude/petscpc.h"
> > > #include "include/finclude/petscmat.h90"
> > >
> > >        integer :: i,j,k
> > >
> > >        Vec    xx,b_rhs,xx_uv,b_rhs_uv   !   /* solution vector, right
> > hand
> > > side vector and work vector */
> > >
> > >        Mat    A_mat,A_mat_uv      !  /* sparse matrix */
> > >
> > >        end module global_data
> > >
> > > main.f90
> > >
> > > program ns2d_c
> > >
> > > use global_data
> > >
> > > implicit none
> > >
> > > integer :: ierr
> > >
> > > i=1
> > >
> > > call PetscInitialize(PETSC_NULL_CHARACTER,ierr)
> > >
> > > call
> > MatCreateSeqAIJ(PETSC_COMM_SELF,9,9,9,PETSC_NULL_INTEGER,A_mat,ierr)
> > >
> > > end program ns2d_c
> > >
> > >
> > > The error msg is
> > >
> > > /tmp/ifort0JBYUf.o(.text+0x46): In function `ns2d_c':
> > > /nfs/home/enduser/g0306332/test/main.F:11: undefined reference to
> > > `petscinitialize_'
> > >
> > /tmp/ifort0JBYUf.o(.text+0xaf):/nfs/home/enduser/g0306332/test/main.F:13:
> > > undefined reference to `matcreateseqaij_'
> > >
> > > The compiling commands, which I rephrase from the "make ex1f" are
> > >
> > > ifort -132 -fPIC -g -c
> > > -I/nfs/lsftmp/g0306332/petsc-2.3.2-p8-I/nfs/lsftmp/g0306332/petsc-
> > > 2.3.2-p8/bmake/l64-nompi-noshared
> > > -I/nfs/lsftmp/g0306332/petsc-2.3.2-p8/include
> > > -I/nfs/lsftmp/g0306332/petsc-2.3.2-p8/include/mpiuni global.F
> > >
> > > ifort  -fPIC -g
> > > -Wl,-rpath,/nfs/lsftmp/g0306332/petsc-2.3.2-p8/lib/l64-nompi-noshared
> > > -L/nfs/lsftmp/g0306332/petsc-2.3.2-p8/lib/l64-nompi-noshared -lpetscksp
> > > -lpetscdm -lpetscmat -lpetscvec -lpetsc
> > > -Wl,-rpath,/nfs/lsftmp/g0306332/petsc-2.3.2-p8/lib/l64-nompi-noshared
> > > -L/nfs/lsftmp/g0306332/petsc-2.3.2-p8/lib/l64-nompi-noshared -lmpiuni
> > > -Wl,-rpath,/lsftmp/g0306332/inter/mkl/lib/em64t
> > > -L/lsftmp/g0306332/inter/mkl/lib/em64t -lmkl_lapack -lmkl_em64t -lguide
> > > -lpthread -ldl -Wl,-rpath,/usr/local/intel/cce9.0/lib
> > > -L/usr/local/intel/cce9.0/lib
> > > -Wl,-rpath,/usr/lib/gcc/x86_64-redhat-linux/3.4.6/
> > > -L/usr/lib/gcc/x86_64-redhat-linux/3.4.6/
> > > -Wl,-rpath,/usr/lib/gcc/x86_64-redhat-linux/3.4.6/../../../../lib64
> > > -L/usr/lib/gcc/x86_64-redhat-linux/3.4.6/../../../../lib64 -lsvml -limf
> > > -lirc -lgcc_s -lirc_s -Wl,-rpath,"/usr/local/intel/cce9.0/lib"
> > > -Wl,-rpath,"/usr/local/intel/cce9.0/lib" -L"/usr/local/intel/cce9.0/lib"
> > > -Wl,-rpath,"/usr/lib/gcc/x86_64-redhat-linux/3.4.6/"
> > > -Wl,-rpath,"/usr/lib/gcc/x86_64-redhat-linux/3.4.6/"
> > > -L"/usr/lib/gcc/x86_64-redhat-linux/3.4.6/"
> > > -Wl,-rpath,"/usr/lib/gcc/x86_64-redhat-linux/3.4.6/../../../../lib64"
> > > -Wl,-rpath,"/usr/lib/gcc/x86_64-redhat-linux/3.4.6/../../../../lib64"
> > > -L"/usr/lib/gcc/x86_64-redhat-linux/3.4.6/../../../../lib64"
> > > -Wl,-rpath,/usr/local/intel/fc9.0/lib -L/usr/local/intel/fc9.0/lib
> > -lifport
> > > -lifcore -lm -Wl,-rpath,/usr/local/intel/cce9.0/lib
> > > -Wl,-rpath,/usr/local/intel/cce9.0/lib -L/usr/local/intel/cce9.0/lib
> > > -Wl,-rpath,/usr/lib/gcc/x86_64-redhat-linux/3.4.6/
> > > -Wl,-rpath,/usr/lib/gcc/x86_64-redhat-linux/3.4.6/
> > > -L/usr/lib/gcc/x86_64-redhat-linux/3.4.6/
> > > -Wl,-rpath,/usr/lib/gcc/x86_64-redhat-linux/3.4.6/../../../../lib64
> > > -Wl,-rpath,/usr/lib/gcc/x86_64-redhat-linux/3.4.6/../../../../lib64
> > > -L/usr/lib/gcc/x86_64-redhat-linux/3.4.6/../../../../lib64 -lm  -ldl
> > > -Wl,-rpath,/usr/local/intel/cce9.0/lib -L/usr/local/intel/cce9.0/lib
> > > -Wl,-rpath,/usr/lib/gcc/x86_64-redhat-linux/3.4.6/
> > > -L/usr/lib/gcc/x86_64-redhat-linux/3.4.6/
> > > -Wl,-rpath,/usr/lib/gcc/x86_64-redhat-linux/3.4.6/../../../../lib64
> > > -L/usr/lib/gcc/x86_64-redhat-linux/3.4.6/../../../../lib64 -lsvml -limf
> > > -lirc -lgcc_s -lirc_s -ldl  -o a.out global.o  main.f90
> > >
> > > I have used shared,static library. I wonder if it is a problem with mkl
> > > em64t or there's something wrong with my code/compilation.
> > >
> > >
> > >
> > > Thank you.
> > >
> > 
> > 
> 




More information about the petsc-users mailing list