c++g++stdcentos6ace-tao

Compiling ACE/TAO 1.2 libraries with CentOS 6


I am on a 64 bit CentOS 6.7 machine with g++ 4.4.7 and I am trying to compile the ACE TAO library 1.2 that was compiled with g++ 2.96.

When I try to compile using the g++ version 4.4.7 I get the following errors (more complete output here

g++ -W -Wall -Wpointer-arith -pipe -O3 -g -Wno-uninitialized -fno-implicit-templates   -D_POSIX_THREADS -D_POSIX_THREAD_SAFE_FUNCTIONS -D_REENTRANT   -I/home/oscarpelaoo/Downloads/ACE_wrappers -DACE_HAS_EXCEPTIONS  -c -fPIC -o .shobj/URL_Addr.o URL_Addr.cpp
In file included from /home/oscarpelaoo/Downloads/ACE_wrappers/ace/ACE.h:17,
                 from /home/oscarpelaoo/Downloads/ACE_wrappers/ace/INET_Addr.h:17,
                 from URL_Addr.h:20,
                 from URL_Addr.cpp:3:
/home/oscarpelaoo/Downloads/ACE_wrappers/ace/OS.h:3110:27: error: new.h: No such file or directory
In file included from /usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/backward/strstream:47,
                 from /home/oscarpelaoo/Downloads/ACE_wrappers/ace/streams.h:70,
                 from /home/oscarpelaoo/Downloads/ACE_wrappers/ace/OS.h:3197,
                 from /home/oscarpelaoo/Downloads/ACE_wrappers/ace/ACE.h:17,
                 from /home/oscarpelaoo/Downloads/ACE_wrappers/ace/INET_Addr.h:17,
                 from URL_Addr.h:20,
                 from URL_Addr.cpp:3:
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/backward/backward_warning.h:28:2: warning: #warning This file includes at least one deprecated or antiquated header which may be removed without further notice at a future date. Please use a non-deprecated interface with equivalent functionality instead. For a listing of replacement headers and interfaces, consult the file backward_warning.h. To disable this warning use -Wno-deprecated.
In file included from /home/oscarpelaoo/Downloads/ACE_wrappers/ace/OS_TLI.h:191,
                 from /home/oscarpelaoo/Downloads/ACE_wrappers/ace/OS.h:38,
                 from /home/oscarpelaoo/Downloads/ACE_wrappers/ace/ACE.h:17,
                 from /home/oscarpelaoo/Downloads/ACE_wrappers/ace/INET_Addr.h:17,
                 from URL_Addr.h:20,
                 from URL_Addr.cpp:3:
/home/oscarpelaoo/Downloads/ACE_wrappers/ace/OS_TLI.inl: In static member function ‘static int ACE_OS_TLI::t_accept(ACE_HANDLE, ACE_HANDLE, t_call*)’:
/home/oscarpelaoo/Downloads/ACE_wrappers/ace/OS_TLI.inl:12: warning: the address of ‘call’ will never be NULL
/home/oscarpelaoo/Downloads/ACE_wrappers/ace/OS_TLI.inl:13: warning: the address of ‘reshandle’ will never be NULL
/home/oscarpelaoo/Downloads/ACE_wrappers/ace/OS_TLI.inl:14: warning: the address of ‘handle’ will never be NULL
/home/oscarpelaoo/Downloads/ACE_wrappers/ace/OS_TLI.inl: In static member function ‘static char* ACE_OS_TLI::t_alloc(ACE_HANDLE, int, int)’:

After a bit of research, I found that Red Hat offers some old libstdc++ libraries for CentOS 6 here.

Is it possible to use an old version of g++ 2.96 which I don't believe has 64 bit support or can I somehow use the compatibility tools with g++ 4.4.7 to try to make something happen?


Solution

  • Answering my own post since I was able to install it.

    After installing the relevant 32bit libraries, the -m32 flag needed to get added. Then we needed to add a -DACE_LACKS_NEW_H flag since my system does not contain the <new.h> file. After that I just needed add a forward declaration and the library compiled.