[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: [bgl-discuss] include file



On Thu, 8 Sep 2005, Xu, Jin wrote:

> 
> Hi,
> 
>   Thanks for your suggestions. After include "mpi.h" first, and then "stdio.h", the errors for MPI gone. The new include file is like:
> 
> #include        "mpi.h"
> #undef          SEEK_SET
> #undef          SEEK_CUR
> #undef          SEEK_END
> #include        <stdio.h>
> #include        <string.h>
> //#include        <iostream.h>
> //#include        <iomanip.h>
> //#include        <fstream.h>
> #include        <math.h>
> #include        "polylib.h"
> #include        "veclib.h"
> #include        "fftw.h"
> #include        "rfftw.h"
> ......
> 
>   They still have conflicts with <iostream.h>, but as they are not used very much in my code, so just comment out.
> 
>   Now compilation is fine with:
> 
> /bgl/BlueLight/ppcfloor/bglsys/bin/mpicxx -I./include -I/bgl/BlueLight/ppcfloor/bglsys/include -g -c -o ./append.o src/append.C
> /bgl/BlueLight/ppcfloor/bglsys/bin/mpicxx -I./include -I/bgl/BlueLight/ppcfloor/bglsys/include -g -c -o ./polylib.o src/polylib.C
> /bgl/BlueLight/ppcfloor/bglsys/bin/mpicxx -I./include -I/bgl/BlueLight/ppcfloor/bglsys/include -g -c -o ./turbulence180e.o src/turbulence180e.C
> 
>   But when I try to link it, it seems all other include files do not works! It can not find variables in veclib.h, fftw.h, ...
> 
> /bgl/BlueLight/ppcfloor/bglsys/bin/mpicxx -I/bgl/home1/jinxu/work/Hybrid/include -I/bgl/BlueLight/ppcfloor/bglsys/include -L/bgl/home1/jinxu/work/Hybrid/Hlib/Linux -lblas_LINUX -llapack_LINUX -lvec -lfftw -lrfftw -g -o ./turbulence180e ./turbulence180e.o ./append.o ./polylib.o -lmpich.rts -lmsglayer.rts -lrts.rts -ldevices.rts

The link order matters.. use:
 ./turbulence180e   -lvec  etc...

Satish


> 
>   ./turbulence180e.o: In function `channel::channel[in-charge]()':
> /home/jinxu/work/Hybrid/src/turbulence180e.C:192: undefined reference to `dmatrix'
> /home/jinxu/work/Hybrid/src/turbulence180e.C:193: undefined reference to `dmatrix'
> /home/jinxu/work/Hybrid/src/turbulence180e.C:194: undefined reference to `dmatrix'
> /home/jinxu/work/Hybrid/src/turbulence180e.C:195: undefined reference to `dmatrix'
> /home/jinxu/work/Hybrid/src/turbulence180e.C:196: undefined reference to `dmatrix'
> ./turbulence180e.o:/home/jinxu/work/Hybrid/src/turbulence180e.C:197: more undefined references to `dmatrix' follow
> ./turbulence180e.o: In function `channel::Solvechannel()':
> /home/jinxu/work/Hybrid/src/turbulence180e.C:155: undefined reference to `fftw_create_plan'
> /home/jinxu/work/Hybrid/src/turbulence180e.C:156: undefined reference to `fftw_create_plan'
> /home/jinxu/work/Hybrid/src/turbulence180e.C:157: undefined reference to `fftw_create_plan'
> /home/jinxu/work/Hybrid/src/turbulence180e.C:157: undefined reference to `fftw_create_plan'
> /home/jinxu/work/Hybrid/src/turbulence180e.C:158: undefined reference to `fftw_create_plan'
> ........
> 
>    There is no MPI error at this moment, but something still looks strange. As /bgl/home1/jinxu/work/Hybrid/Hlib/Linux/libvec.a has definition of dmatrix function, and declaration is in /bgl/home1/jinxu/work/Hybrid/include/veclib.h
> 
> work/Hybrid> grep dmatrix include/*.h
> include/dbutils.h:void  plotdmatrix  (double **, int , int , int , int );
> include/dbutils.h:void  showdmatrix  (double **, int , int , int , int);
> include/veclib.bckup.h:double  **dmatrix     (int rmin, int rmax, int cmin, int cmax);
> include/veclib.bckup.h:void     free_dmatrix (double **mat, int rmin, int cmin);
> include/veclib.h:double  **dmatrix     (int rmin, int rmax, int cmin, int cmax);
> include/veclib.h:void     free_dmatrix (double **mat, int rmin, int cmin);
> 
> work/Hybrid> nm Hlib/Linux/libvec.a | grep dmatrix
> 00000000 T dmatrix
> 000004b0 T free_dmatrix
> 
>    Any more suggestion on it would be appreciated. Thanks.
> 
> Jin
>  
>   
>  
> 
> 
> At 03:48 PM 9/7/2005, Xu, Jin wrote:
> 
> >Hi,
> >
> >   I am trying to compile my C++ code on BlueGene, but have some problems 
> > with include files.
> 
> This is a bug in the MPI-2 specification, which the mpi.h header file 
> (specifically, the mpicxx.h file included by mpi.h) is warning you 
> about.  To work around this, try including mpi.h before stdio.h (and 
> xxxstream.h).  Alternately, if you aren't using SEEK_SET etc, #undef them 
> before including mpi.h .
> 
> Bill
> 
> 
> >   The command I use is following:
> >
> >work/Hybrid> /bgl/BlueLight/ppcfloor/bglsys/bin/mpicxx -I./include 
> >-I/bgl/BlueLight/ppcfloor/bglsys/include -g -c -o ./turbulence180e.o 
> >src/turbulence180e.C
> >
> >    And it gives following output.
> >
> >In file included from 
> >/bgl/BlueLight/DRV202_2005-050606-SLES8/ppc/blrts-gnu/include/c++/3.2/backward/iostream.h:31,
> >                  from src/turbulence180e.h:1,
> >                  from src/turbulence180e.C:16:
> >/bgl/BlueLight/DRV202_2005-050606-SLES8/ppc/blrts-gnu/include/c++/3.2/backward/backward_warning.h:32:2: 
> >warning: #warning This file includes at least one deprecated or antiquated 
> >header. Please consider using one of the 32 headers found in section 
> >17.4.1.2 of the C++ standard. Examples include substituting the <X> header 
> >for the <X.h> header for C++ includes, or <sstream> instead of the 
> >deprecated header <strstream.h>. To disable this warning use -Wno-deprecated.
> >In file included from 
> >/bgl/BlueLight/DRV202_2005-050606-SLES8/ppc/bglsys/include/mpi.h:1107,
> >                  from src/turbulence180e.h:11,
> >                  from src/turbulence180e.C:16:
> >/bgl/BlueLight/DRV202_2005-050606-SLES8/ppc/bglsys/include/mpicxx.h:26:2: 
> >#error "SEEK_SET is #defined but must not be for the C++ binding of MPI"
> >/bgl/BlueLight/DRV202_2005-050606-SLES8/ppc/bglsys/include/mpicxx.h:30:2: 
> >#error "SEEK_CUR is #defined but must not be for the C++ binding of MPI"
> >/bgl/BlueLight/DRV202_2005-050606-SLES8/ppc/bglsys/include/mpicxx.h:35:2: 
> >#error "SEEK_END is #defined but must not be for the C++ binding of MPI"
> >
> >   The file src/turbulence180e.h contains:
> >
> >#include        <iostream.h>
> >#include        <iomanip.h>
> >#include        <fstream.h>
> >#include        <stdio.h>
> >#include        <string.h>
> >#include        <math.h>
> >#include        "polylib.h"
> >#include        "veclib.h"
> >#include        "fftw.h"
> >#include        "rfftw.h"
> >#include        "mpi.h"
> >.......
> >
> >    There seems some conflicts for iostream.h and mpi.h with others.
> >
> >    I like to hear any suggestions.
> >
> >Thanks,
> >Jin
> >
> >
> >- --------------------------------------------------------------------
> >To add or remove yourself from this mailing list, use the 'notifyme'
> >command on any BGL machine. To remove: notifyme -n, to add: notifyme -y.
> 
> William Gropp
> http://www.mcs.anl.gov/~gropp 
> 
> 
> - --------------------------------------------------------------------
> To add or remove yourself from this mailing list, use the 'notifyme'
> command on any BGL machine. To remove: notifyme -n, to add: notifyme -y.
> 
> 

- --------------------------------------------------------------------
To add or remove yourself from this mailing list, use the 'notifyme'
command on any BGL machine. To remove: notifyme -n, to add: notifyme -y.