tcpexmachina / remy

403 stars 78 forks source link

compile issue #19

Closed yuko1225 closed 10 years ago

yuko1225 commented 10 years ago

I try to compile remy with boost 1.55.it comes error

../boost/utility/enable_if.hpp:59:10: error: base class ‘struct boost::disable_if_c<true, void>’ has a non-virtual destructor [-Werror=effc++]

then i try boost 1.50.another error

sendergang.hh:53:9: error: ‘class SenderGang<Rat>::TimeSwitchedSender’ has virtual functions and accessible non-virtual destructor [-Werror=non-virtual-dtor]

Any suggestion?

yuko1225 commented 10 years ago

here is full error log

sendergang.hh:66:27: error: ‘SenderGang<SenderType>::SwitchedSender::SwitchedSender’ names constructor
sendergang.hh:85:27: error: ‘SenderGang<SenderType>::SwitchedSender::SwitchedSender’ names constructor
sendergang.hh: In instantiation of ‘class SenderGang<Rat>::SwitchedSender’:
sendergang.hh:53:9:   required from ‘class SenderGang<Rat>::TimeSwitchedSender’
/usr/local/lib/gcc/i686-pc-linux-gnu/4.7.3/../../../../include/c++/4.7.3/bits/stl_vector.h:161:9:   required from ‘std::_Vector_base<_Tp, _Alloc>::~_Vector_base() [with _Tp = SenderGang<Rat>::TimeSwitchedSender; _Alloc = std::allocator<SenderGang<Rat>::TimeSwitchedSender>]’
/usr/local/lib/gcc/i686-pc-linux-gnu/4.7.3/../../../../include/c++/4.7.3/bits/stl_vector.h:404:33:   required from ‘std::vector<_Tp, _Alloc>::~vector() [with _Tp = SenderGang<Rat>::TimeSwitchedSender; _Alloc = std::allocator<SenderGang<Rat>::TimeSwitchedSender>]’
sendergang.hh:11:7:   required from here
sendergang.hh:14:9: error: ‘class SenderGang<Rat>::SwitchedSender’ has virtual functions and accessible non-virtual destructor [-Werror=non-virtual-dtor]
sendergang.hh: In instantiation of ‘class SenderGang<Rat>::TimeSwitchedSender’:
/usr/local/lib/gcc/i686-pc-linux-gnu/4.7.3/../../../../include/c++/4.7.3/bits/stl_vector.h:161:9:   required from ‘std::_Vector_base<_Tp, _Alloc>::~_Vector_base() [with _Tp = SenderGang<Rat>::TimeSwitchedSender; _Alloc = std::allocator<SenderGang<Rat>::TimeSwitchedSender>]’
/usr/local/lib/gcc/i686-pc-linux-gnu/4.7.3/../../../../include/c++/4.7.3/bits/stl_vector.h:404:33:   required from ‘std::vector<_Tp, _Alloc>::~vector() [with _Tp = SenderGang<Rat>::TimeSwitchedSender; _Alloc = std::allocator<SenderGang<Rat>::TimeSwitchedSender>]’
sendergang.hh:11:7:   required from here
sendergang.hh:53:9: error: ‘class SenderGang<Rat>::TimeSwitchedSender’ has virtual functions and accessible non-virtual destructor [-Werror=non-virtual-dtor]
‘
Internal compiler error: Error reporting routines re-entered.
Please submit a full bug report,

pretty strange.

p.s.GCC version:4.7.3

keithw commented 10 years ago

What operating system are you on?

We can't help you with the internal compiler error (but you may need gcc 4.8). You will need to have Boost installed as a "system" header (e.g. as most Linux distributions do it) if you want to be able to use the -Weffc++ -Werror flags. Otherwise gcc will trip over divergences from Effective C++ style in Boost.

yuko1225 commented 10 years ago

Okay.I searched Google.Seem many people have this same problem on GCC 4.7.3.

I downloaded boost and move its source dir(boost) to /usr/include.Is it right?

I'm using CentOS 5.Pretty old.And latest version of gcc in yum is 4.1.I spent almost 2hours to find and complie gcc dependencies and 3hours to compiled gcc4.7.3.Then i swear i will never compile any version of gcc.

Well.Maybe I will try to complie remy in other machine which is running other Linux OS distro. ...when i have time

There is another problem. First time I try to configure.it comes error

./configure: line 3594: syntax error near unexpected token `protobuf,'
./configure: line 3594: `PKG_CHECK_MODULES(protobuf, protobuf)'

It's seem like aclocal did not get pkg.m4.So the [PKG_CHECK_MODULES] macro isn't usable.

I'm pretty sure I had both installed protobuf and pkg-config properly,so i delete

PKG_CHECK_MODULES(protobuf, protobuf)

I think it won't influence the complie process.But I'm not very sure...make command not sent error when it run

/usr/local/bin/protoc --cpp_out=. -I. xxx.proto

I resolve this problem.The complied autoconf using a different directory to search m4. damn CentOS.

yuko1225 commented 10 years ago

alright.finally i solve all problem(complied by gcc 4.8.2 using devtoolset 2.0).now it's seem working.

Optimizing for link packets_per_ms in [1.000000, 2.000000]
Optimizing for rtt_ms in [100.000000, 200.000000]
Optimizing for num_senders = 1-16
Optimizing for mean_on_duration = 5000.000000, mean_off_duration = 5000.000000
Initial rules (use if=FILENAME to read from disk): [{(lo=<sewma=0.000000, rewma=0.000000, rttr=0.000000, slowrewma=0.000000>, hi=<sewma=163840.000000, rewma=163840.000000, rttr=163840.000000, slowrewma=163840.000000>)} gen=0 usage=nan => (win=1 + 1.000000 * win, intersend=3.000000)]
#######################
Not saving output. Use the of=FILENAME argument to save the results.

remy@CentOS 5