golems / amino

Lightweight robotics utility library
http://amino.golems.org
BSD 3-Clause "New" or "Revised" License
39 stars 19 forks source link

Make Error #20

Open deep-programmer opened 6 years ago

deep-programmer commented 6 years ago

In the make step, I am getting the following error output:

: -t ./src/wavefront/wavefront.l > src/wavefront/wavefront.c
: -t ./src/wavefront/mtl.l > src/wavefront/mtl.c
make  all-recursive
make[1]: Entering directory '/home/user/Repositories/amino'
make[2]: Entering directory '/home/user/Repositories/amino'
  CC       src/mem.lo
  CC       src/refcount.lo
  CC       src/la.lo
  CC       src/la2.lo
  CC       src/opt/opt.lo
  CC       src/tf.lo
  CC       src/tf/tfmatrix.lo
  CC       src/tf/quat.lo
  CC       src/tf/conv.lo
  CC       src/mac/euler_f2c.lo
  CC       src/rx/errstr.lo
  CXX      src/rx/scenegraph.lo
src/rx/scenegraph.cpp: In destructor ‘virtual amino::SceneFrame::~SceneFrame()’:
src/rx/scenegraph.cpp:70:33: warning: range-based ‘for’ loops only available with -std=c++11 or -std=gnu++11
     for( struct aa_rx_geom *g : geometry ) {
                                 ^
src/rx/scenegraph.cpp: In destructor ‘amino::SceneGraph::~SceneGraph()’:
src/rx/scenegraph.cpp:214:16: error: ISO C++ forbids declaration of ‘pair’ with no type [-fpermissive]
     for( auto &pair : frame_map ) delete pair.second;
                ^
src/rx/scenegraph.cpp:214:23: warning: range-based ‘for’ loops only available with -std=c++11 or -std=gnu++11
     for( auto &pair : frame_map ) delete pair.second;
                       ^
src/rx/scenegraph.cpp:214:47: error: request for member ‘second’ in ‘pair’, which is of non-class type ‘int’
     for( auto &pair : frame_map ) delete pair.second;
                                               ^
src/rx/scenegraph.cpp:217:16: error: ISO C++ forbids declaration of ‘pair’ with no type [-fpermissive]
     for( auto &pair : limits_map ) free(pair.second);
                ^
src/rx/scenegraph.cpp:217:23: warning: range-based ‘for’ loops only available with -std=c++11 or -std=gnu++11
     for( auto &pair : limits_map ) free(pair.second);
                       ^
src/rx/scenegraph.cpp:217:46: error: request for member ‘second’ in ‘pair’, which is of non-class type ‘int’
     for( auto &pair : limits_map ) free(pair.second);
                                              ^
src/rx/scenegraph.cpp: In member function ‘int amino::SceneGraph::index()’:
src/rx/scenegraph.cpp:242:15: error: ‘itr’ does not name a type
     for( auto itr = frame_map.begin(); itr != frame_map.end(); itr++ ) {
               ^
src/rx/scenegraph.cpp:242:40: error: expected ‘;’ before ‘itr’
     for( auto itr = frame_map.begin(); itr != frame_map.end(); itr++ ) {
                                        ^
src/rx/scenegraph.cpp:242:40: error: ‘itr’ was not declared in this scope
src/rx/scenegraph.cpp:254:15: error: ‘itr’ does not name a type
     for( auto itr = frame_map.begin(); itr != frame_map.end(); itr++ ) {
               ^
src/rx/scenegraph.cpp:254:40: error: expected ‘;’ before ‘itr’
     for( auto itr = frame_map.begin(); itr != frame_map.end(); itr++ ) {
                                        ^
src/rx/scenegraph.cpp:254:40: error: ‘itr’ was not declared in this scope
src/rx/scenegraph.cpp:271:19: error: ‘itr’ does not name a type
         for( auto itr = list.begin();
                   ^
src/rx/scenegraph.cpp:272:14: error: expected ‘;’ before ‘itr’
              itr != list.end();
              ^
src/rx/scenegraph.cpp:272:14: error: ‘itr’ was not declared in this scope
src/rx/scenegraph.cpp: In member function ‘void amino::SceneGraph::add(amino::SceneFrame*)’:
src/rx/scenegraph.cpp:316:10: error: ‘itr’ does not name a type
     auto itr = frame_map.find(f->name);
          ^
src/rx/scenegraph.cpp:317:28: error: ‘itr’ was not declared in this scope
     if( frame_map.end() != itr ) {
                            ^
Makefile:3039: recipe for target 'src/rx/scenegraph.lo' failed
make[2]: *** [src/rx/scenegraph.lo] Error 1
make[2]: Leaving directory '/home/user/Repositories/amino'
Makefile:3523: recipe for target 'all-recursive' failed
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory '/home/user/Repositories/amino'
Makefile:1861: recipe for target 'all' failed
make: *** [all] Error 2

It seems to be related to usage of pair variable.

I am building using GNU Make 4.1 on Ubuntu 16.04 64-bit. Please help me resolve this.

ndantam commented 6 years ago

What compiler / version are you using? Looks like C++11 support is not being enabled. Check the config.log to see what happened.

The library builds on a clean install of Ubuntu Xenial in the integration tests. If you have different versions of compilers or libraries, that could cause an issue.

-ntd

On 03/19/2018 02:40 AM, deep-programmer wrote:

In the make step, I am getting the following error output:

: -t ./src/wavefront/wavefront.l > src/wavefront/wavefront.c
: -t ./src/wavefront/mtl.l > src/wavefront/mtl.c
make  all-recursive
make[1]: Entering directory '/home/user/Repositories/amino'
make[2]: Entering directory '/home/user/Repositories/amino'
   CC       src/mem.lo
   CC       src/refcount.lo
   CC       src/la.lo
   CC       src/la2.lo
   CC       src/opt/opt.lo
   CC       src/tf.lo
   CC       src/tf/tfmatrix.lo
   CC       src/tf/quat.lo
   CC       src/tf/conv.lo
   CC       src/mac/euler_f2c.lo
   CC       src/rx/errstr.lo
   CXX      src/rx/scenegraph.lo
src/rx/scenegraph.cpp: In destructor ‘virtual amino::SceneFrame::~SceneFrame()’:
src/rx/scenegraph.cpp:70:33: warning: range-based ‘for’ loops only available with -std=c++11 or -std=gnu++11
      for( struct aa_rx_geom *g : geometry ) {
                                  ^
src/rx/scenegraph.cpp: In destructor ‘amino::SceneGraph::~SceneGraph()’:
src/rx/scenegraph.cpp:214:16: error: ISO C++ forbids declaration of ‘pair’ with no type [-fpermissive]
      for( auto &pair : frame_map ) delete pair.second;
                 ^
src/rx/scenegraph.cpp:214:23: warning: range-based ‘for’ loops only available with -std=c++11 or -std=gnu++11
      for( auto &pair : frame_map ) delete pair.second;
                        ^
src/rx/scenegraph.cpp:214:47: error: request for member ‘second’ in ‘pair’, which is of non-class type ‘int’
      for( auto &pair : frame_map ) delete pair.second;
                                                ^
src/rx/scenegraph.cpp:217:16: error: ISO C++ forbids declaration of ‘pair’ with no type [-fpermissive]
      for( auto &pair : limits_map ) free(pair.second);
                 ^
src/rx/scenegraph.cpp:217:23: warning: range-based ‘for’ loops only available with -std=c++11 or -std=gnu++11
      for( auto &pair : limits_map ) free(pair.second);
                        ^
src/rx/scenegraph.cpp:217:46: error: request for member ‘second’ in ‘pair’, which is of non-class type ‘int’
      for( auto &pair : limits_map ) free(pair.second);
                                               ^
src/rx/scenegraph.cpp: In member function ‘int amino::SceneGraph::index()’:
src/rx/scenegraph.cpp:242:15: error: ‘itr’ does not name a type
      for( auto itr = frame_map.begin(); itr != frame_map.end(); itr++ ) {
                ^
src/rx/scenegraph.cpp:242:40: error: expected ‘;’ before ‘itr’
      for( auto itr = frame_map.begin(); itr != frame_map.end(); itr++ ) {
                                         ^
src/rx/scenegraph.cpp:242:40: error: ‘itr’ was not declared in this scope
src/rx/scenegraph.cpp:254:15: error: ‘itr’ does not name a type
      for( auto itr = frame_map.begin(); itr != frame_map.end(); itr++ ) {
                ^
src/rx/scenegraph.cpp:254:40: error: expected ‘;’ before ‘itr’
      for( auto itr = frame_map.begin(); itr != frame_map.end(); itr++ ) {
                                         ^
src/rx/scenegraph.cpp:254:40: error: ‘itr’ was not declared in this scope
src/rx/scenegraph.cpp:271:19: error: ‘itr’ does not name a type
          for( auto itr = list.begin();
                    ^
src/rx/scenegraph.cpp:272:14: error: expected ‘;’ before ‘itr’
               itr != list.end();
               ^
src/rx/scenegraph.cpp:272:14: error: ‘itr’ was not declared in this scope
src/rx/scenegraph.cpp: In member function ‘void amino::SceneGraph::add(amino::SceneFrame*)’:
src/rx/scenegraph.cpp:316:10: error: ‘itr’ does not name a type
      auto itr = frame_map.find(f->name);
           ^
src/rx/scenegraph.cpp:317:28: error: ‘itr’ was not declared in this scope
      if( frame_map.end() != itr ) {
                             ^
Makefile:3039: recipe for target 'src/rx/scenegraph.lo' failed
make[2]: *** [src/rx/scenegraph.lo] Error 1
make[2]: Leaving directory '/home/user/Repositories/amino'
Makefile:3523: recipe for target 'all-recursive' failed
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory '/home/user/Repositories/amino'
Makefile:1861: recipe for target 'all' failed
make: *** [all] Error 2

It seems to be related to usage of pair variable.

I am building using GNU Make 4.1 on Ubuntu 16.04 64-bit. Please help me resolve this.

-- Neil T. Dantam, Ph.D. Assistant Professor Department of Computer Science Colorado School of Mines http://www.mines.edu/~ndantam

ndantam commented 6 years ago

Possibly related issue in https://github.com/golems/amino/issues/22: is the autoconf macro archive installed? (see INSTALL for commands/packages on Ubuntu). Without the autoconf macro archive, the build scripts can't check compiler flags to enable C++-11 support, which could produce the behavior you've observed.