compilation error in new release

Hello everyone,

I tried to add several of the latest patches (to my 5Sep14 version) including the 16Feb15 patch, then executed make-update and tried to re-make.

The following error shows up:

…/create_bonds.cpp(124): error: argument of type “LAMMPS_NS::NeighList *” is incompatible with parameter of type “int”
neighbor->build_one(list);
^

compilation aborted for …/create_bonds.cpp (code 2)
make[1]: *** [create_bonds.o] Error 2
make[1]: *** Waiting for unfinished jobs…
make[1]: Leaving directory `/davidf/copy-lammps-5Sep14/src/Obj_mkl’
make: *** [mkl] Error 2

Then I tried to download the lateset stable release and build it, but another error showed up when executing ‘make’:

error: identifier “INT64_MAX” is undefined

Anyone encountered these ?

Best,
David

Hello everyone,
I tried to add several of the latest patches (to my 5Sep14 version)
including the 16Feb15 patch,

You can not just apply "several" of the patches - you need to apply "all"
of the patches between the two versions.

Ray

Ray,

I did apply all patches chronologically. (sorry for not being clear about it)

This happens typically in a cygwin build, I saw it on my box too.
You have to tell the build system what an INT_MAX64 is supposed to
be, eg. add a define in your makefile for your machine:

  [Makefile.sirko4]
  ...
  LMP_INC = -DLAMMPS_GZIP -DINT64_MAX=9223372036854775807LL -DLAMMPS_JPEG ...
  ...

(see definitions in http://web.mit.edu/cygwin/cygwin_v1.3.2/usr/include/mingw/stdint.h)

Regards

M.

Ray,
I did apply all patches chronologically. (sorry for not being clear about
it)

with such a large time distance, it is usually better to simply
download a full archive. you save yourself a lot of trouble.

if you insist on patches for whatever unknown reason, you have to do
more than what you have done.

you will need to execute:

make no-all

then apply the patches, then:

make purge
make clean-all

and then you should first try to compile with:

make serial

and/or

make mpi

some of the build mechanism was changed, so you will likely need to
adapt any custom make files (which should now be placed in
src/MAKE/MINE)

the whole patching/upgrade process is significantly easier when
following the svn or git repository. if you do your own development,
using git is highly recommended, as it allows you running and
maintaining your own local branches to which you can then merge in
from upstream repeatedly.

[...]

Then I tried to download the lateset stable release and build it, but
another error showed up when executing 'make':

error: identifier "INT64_MAX" is undefined

Anyone encountered these ?

are you building with a 32-bit compiler? then you should try to also
define -DLAMMPS_SMALLSMALL
unless you need to run extremely large systems (which usually require
supercomputers anyway), this would be sufficient and may be faster,
since it would requires less storage, offer more cache efficiency and
not require to emulate 64-bit integers on a 32-bit platform.

axel.

Axel,

Adding “- DLAMMPS_SMALLSMALL” is what I needed, that solved it. I guess the compiler installed on our cluster is indeed 32bit.

Cheers,

David

Axel,
Adding "- DLAMMPS_SMALLSMALL" is what I needed, that solved it. I guess the
compiler installed on our cluster is indeed 32bit.

you can easily tell which is the case through using the "file" command
on the resulting object files, you should get one of the two outputs
below:

[[email protected]... compile]$ file *.o
empty-32.o: ELF 32-bit LSB relocatable, Intel 80386, version 1 (SYSV),
not stripped
empty-64.o: ELF 64-bit LSB relocatable, x86-64, version 1 (SYSV), not stripped

axel.