From: Tim K. <tim...@ce...> - 2008-11-24 11:41:43
|
Dear libMesh developers, For certain reasons, I need to compile a 32-bit libMesh on a 64-bit machine. What I did was: 1. I compiled mpich2 in 32 bit mode, i.e. by saying export CFLAGS=-m32 export LDFLAGS=-m32 export CPPFLAGS=-m32 export FC=gfortran export F90=gfortran export FFLAGS=-m32 export F90FLAGS=-m32 prior to configuring mpich2 (without problems). 2. I compiled PETSc-2.3.3-p11 against that mpich2 (without problems). 3. I set the above variables again, before calling libMesh's "./configure". 4. I said "make" in the libMesh directory. What I get is: src/geom/elem_refinement.C: In member function ‘unsigned int Elem::_cast_node_address_to_unsigned_int(unsigned int)’: src/geom/elem_refinement.C:160: error: cast from ‘Node*’ to ‘unsigned int’ loses precision It seems to me that libMesh configured for 32-bit mode (in particular determining LIBMESH_SIZEOF_INT and LIBMESH_SIZEOF_VOID_P to be equal), but then compiled without the "-m32" option. This is confirmed by saying "make -n" and observing that the command to be executed does not contain "-m32". What did I do wrong? Best Regards, Tim -- Dr. Tim Kroeger Phone +49-421-218-7710 tim...@me..., tim...@ce... Fax +49-421-218-4236 MeVis Research GmbH, Universitaetsallee 29, 28359 Bremen, Germany Amtsgericht Bremen HRB 16222 Geschaeftsfuehrer: Prof. Dr. H.-O. Peitgen |
From: Tim K. <tim...@ce...> - 2008-11-24 13:37:54
|
Dear all, On Mon, 24 Nov 2008, Tim Kroeger wrote: > src/geom/elem_refinement.C: In member function ‘unsigned int > Elem::_cast_node_address_to_unsigned_int(unsigned int)’: > src/geom/elem_refinement.C:160: error: cast from ‘Node*’ to ‘unsigned int’ > loses precision I now manually modified the following three things, which seems to solve my problem: 1. I added libmesh_CXXFLAGS += -m32 libmesh_CFLAGS += -m32 at the end of Make.common. 2. In the Tecplot section of Make.common, I adjusted the path to tecio.a from "x86_64-unknown-linux-gnu" to "i686-pc-linux-gnu". 3. In contrib/tetgen/Makefile, I again added libmesh_CXXFLAGS += -m32 after line 10. It seems to work now, but anyway, I would appreciate if these things happened automatically. Best Regards, Tim -- Dr. Tim Kroeger Phone +49-421-218-7710 tim...@me..., tim...@ce... Fax +49-421-218-4236 MeVis Research GmbH, Universitaetsallee 29, 28359 Bremen, Germany Amtsgericht Bremen HRB 16222 Geschaeftsfuehrer: Prof. Dr. H.-O. Peitgen |
From: John P. <jwp...@gm...> - 2008-11-24 15:20:01
|
On Mon, Nov 24, 2008 at 7:37 AM, Tim Kroeger <tim...@ce...> wrote: > Dear all, > > On Mon, 24 Nov 2008, Tim Kroeger wrote: > >> src/geom/elem_refinement.C: In member function 'unsigned int >> Elem::_cast_node_address_to_unsigned_int(unsigned int)': >> src/geom/elem_refinement.C:160: error: cast from 'Node*' to 'unsigned int' >> loses precision > > I now manually modified the following three things, which seems to solve my > problem: > > > 1. I added > > libmesh_CXXFLAGS += -m32 > libmesh_CFLAGS += -m32 > > at the end of Make.common. > > > 2. In the Tecplot section of Make.common, I adjusted the path to tecio.a > from "x86_64-unknown-linux-gnu" to "i686-pc-linux-gnu". > > > 3. In contrib/tetgen/Makefile, I again added > > libmesh_CXXFLAGS += -m32 > > after line 10. > > > It seems to work now, but anyway, I would appreciate if these things > happened automatically. I think adding -m32, or whatever this option is called on other compilers, to libmesh_CXXFLAGS should be the way to go. Then tetgen et al. should use the libmesh_CXXFLAGS as well. The latest Intel compilers also appear to support -m32. Under PGI it seems to get a little more complicated, with "-tp barcelona -tp barcelona-32" required on the Barcelona chips. It's probably worthwhile writing our own autoconf test which sets the correct flag based on the compiler. Unless autoconf already has this...I'll take a look. -- John |