devsisters / goquic

QUIC support for Go
http://devsisters.github.io/goquic/
BSD 3-Clause "New" or "Revised" License
944 stars 100 forks source link

Build failure with undefined reference #26

Closed bharatkrishna closed 8 years ago

bharatkrishna commented 8 years ago

My system info:

Distributor ID:  Ubuntu
Description:     Ubuntu 14.04.3 LTS
Release:         14.04
Codename:        trusty

I downloaded goquic by doing

go get -u -d github.com/devsisters/goquic

I am trying to build client following instructions at https://github.com/devsisters/goquic/tree/master/example

Build is failing with the following error:

# go build $GOPATH/src/github.com/devsisters/goquic/example/client.go
# github.com/devsisters/goquic
/tmp/go-build331148125/github.com/devsisters/goquic/_obj/dispatcher.cgo2.o: In function `_cgo_54fddbb622cd_Cfunc_quic_server_session_connection_stat':
src/github.com/devsisters/goquic/dispatcher.go:74: undefined reference to `quic_server_session_connection_stat'
/tmp/go-build331148125/github.com/devsisters/goquic/_obj/proof_source.cgo2.o: In function `_cgo_54fddbb622cd_Cfunc_init_proof_source_goquic':
src/github.com/devsisters/goquic/proof_source.go:61: undefined reference to `init_proof_source_goquic'
/tmp/go-build331148125/github.com/devsisters/goquic/_obj/proof_source.cgo2.o: In function `_cgo_54fddbb622cd_Cfunc_delete_crypto_config':
src/github.com/devsisters/goquic/proof_source.go:37: undefined reference to `delete_crypto_config'
/tmp/go-build331148125/github.com/devsisters/goquic/_obj/proof_source.cgo2.o: In function `_cgo_54fddbb622cd_Cfunc_proof_source_goquic_add_cert':
src/github.com/devsisters/goquic/proof_source.go:74: undefined reference to `proof_source_goquic_add_cert'
/tmp/go-build331148125/github.com/devsisters/goquic/_obj/proof_source.cgo2.o: In function `_cgo_54fddbb622cd_Cfunc_proof_source_goquic_build_cert_chain':
src/github.com/devsisters/goquic/proof_source.go:83: undefined reference to `proof_source_goquic_build_cert_chain'
/tmp/go-build331148125/github.com/devsisters/goquic/_obj/quicstream_server.cgo2.o: In function `_cgo_54fddbb622cd_Cfunc_quic_simple_server_stream_write_headers':
src/github.com/devsisters/goquic/quicstream_server.go:39: undefined reference to `quic_simple_server_stream_write_headers'
/tmp/go-build331148125/github.com/devsisters/goquic/_obj/quicstream_server.cgo2.o: In function `_cgo_54fddbb622cd_Cfunc_quic_simple_server_stream_write_or_buffer_data':
src/github.com/devsisters/goquic/quicstream_server.go:52: undefined reference to `quic_simple_server_stream_write_or_buffer_data'
src/github.com/devsisters/goquic/lib/linux_amd64/libgoquic.a(adaptor_client.o): In function `create_go_quic_client_session_and_initialize':
/home/hodduc/go/src/github.com/devsisters/goquic/src/adaptor_client.cc:61: undefined reference to `net::QuicConnection::QuicConnection(unsigned long, net::IPEndPoint, net::QuicConnectionHelperInterface*, net::QuicConnection::PacketWriterFactory const&, bool, net::Perspective, std::vector<net::QuicVersion, std::allocator<net::QuicVersion> > const&)'
src/github.com/devsisters/goquic/lib/linux_amd64/libgoquic.a(go_quic_client_session.o): In function `net::tools::GoQuicClientSession::GoQuicClientSession(net::QuicConfig const&, net::QuicConnection*, net::QuicServerId const&, net::QuicCryptoClientConfig*)':
/home/hodduc/go/src/github.com/devsisters/goquic/src/go_quic_client_session.cc:17: undefined reference to `net::QuicClientSessionBase::QuicClientSessionBase(net::QuicConnection*, net::QuicConfig const&)'
src/github.com/devsisters/goquic/lib/linux_amd64/libgoquic.a(go_quic_client_session.o): In function `net::tools::GoQuicClientSession::CreateQuicCryptoStream()':
/home/hodduc/go/src/github.com/devsisters/goquic/src/go_quic_client_session.cc:78: undefined reference to `net::QuicCryptoClientStream::QuicCryptoClientStream(net::QuicServerId const&, net::QuicClientSessionBase*, net::ProofVerifyContext*, net::QuicCryptoClientConfig*)'
src/github.com/devsisters/goquic/lib/linux_amd64/libgoquic.a(go_quic_client_session.o):(.rodata._ZTVN3net5tools19GoQuicClientSessionE[_ZTVN3net5tools19GoQuicClientSessionE]+0x48): undefined reference to `net::QuicSession::OnConnectionClosed(net::QuicErrorCode, bool)'
src/github.com/devsisters/goquic/lib/linux_amd64/libgoquic.a(go_quic_client_session.o):(.rodata._ZTVN3net5tools19GoQuicClientSessionE[_ZTVN3net5tools19GoQuicClientSessionE]+0x98): undefined reference to `net::QuicSession::WritevData(unsigned int, net::QuicIOVector, unsigned long, bool, net::FecProtection, net::QuicAckListenerInterface*)'
src/github.com/devsisters/goquic/lib/linux_amd64/libgoquic.a(go_quic_client_session.o):(.rodata._ZTVN3net5tools19GoQuicClientSessionE[_ZTVN3net5tools19GoQuicClientSessionE]+0xe0): undefined reference to `net::QuicSession::GetNumOpenStreams() const'
src/github.com/devsisters/goquic/lib/linux_amd64/libgoquic.a(go_quic_client_session.o):(.rodata._ZTVN3net5tools19GoQuicClientSessionE[_ZTVN3net5tools19GoQuicClientSessionE]+0x128): undefined reference to `net::QuicSpdySession::OnStreamHeadersPriority(unsigned int, unsigned int)'
src/github.com/devsisters/goquic/lib/linux_amd64/libgoquic.a(go_quic_connection_helper.o): In function `net::GoQuicAlarmGoWrapper::GoQuicAlarmGoWrapper(net::QuicClock*, void*, net::QuicAlarm::Delegate*)':
/home/hodduc/go/src/github.com/devsisters/goquic/src/go_quic_alarm_go_wrapper.h:19: undefined reference to `net::QuicAlarm::QuicAlarm(net::QuicAlarm::Delegate*)'
src/github.com/devsisters/goquic/lib/linux_amd64/libgoquic.a(go_quic_dispatcher.o): In function `net::tools::GoQuicDispatcher::CreateQuicSession(unsigned long, net::IPEndPoint const&)':
/home/hodduc/go/src/github.com/devsisters/goquic/src/go_quic_dispatcher.cc:463: undefined reference to `net::QuicConnection::QuicConnection(unsigned long, net::IPEndPoint, net::QuicConnectionHelperInterface*, net::QuicConnection::PacketWriterFactory const&, bool, net::Perspective, std::vector<net::QuicVersion, std::allocator<net::QuicVersion> > const&)'
src/github.com/devsisters/goquic/lib/linux_amd64/libgoquic.a(go_quic_per_connection_packet_writer.o): In function `base::Callback<void (net::WriteResult)>::~Callback()':
/home/hodduc/go/src/github.com/devsisters/goquic/libquic/src/base/callback.h:366: undefined reference to `base::internal::CallbackBase::~CallbackBase()'
src/github.com/devsisters/goquic/lib/linux_amd64/libgoquic.a(go_quic_per_connection_packet_writer.o): In function `base::Callback<void (net::WriteResult)>::Callback<base::internal::RunnableAdapter<void (net::tools::GoQuicPerConnectionPacketWriter::*)(net::WriteResult)>, void (net::tools::GoQuicPerConnectionPacketWriter*, net::WriteResult), base::internal::TypeList<base::WeakPtr<net::tools::GoQuicPerConnectionPacketWriter> > >(base::internal::BindState<base::internal::RunnableAdapter<void (net::tools::GoQuicPerConnectionPacketWriter::*)(net::WriteResult)>, void (net::tools::GoQuicPerConnectionPacketWriter*, net::WriteResult), base::internal::TypeList<base::WeakPtr<net::tools::GoQuicPerConnectionPacketWriter> > >*)':
/home/hodduc/go/src/github.com/devsisters/goquic/libquic/src/base/callback.h:377: undefined reference to `base::internal::CallbackBase::CallbackBase(base::internal::BindStateBase*)'
src/github.com/devsisters/goquic/lib/linux_amd64/libgoquic.a(go_quic_server_packet_writer.o): In function `net::tools::GoQuicServerPacketWriter::WritePacketWithCallback(char const*, unsigned long, std::vector<unsigned char, std::allocator<unsigned char> > const&, net::IPEndPoint const&, base::Callback<void (net::WriteResult)>)':
/home/hodduc/go/src/github.com/devsisters/goquic/src/go_quic_server_packet_writer.cc:42: undefined reference to `base::internal::CallbackBase::Reset()'
src/github.com/devsisters/goquic/lib/linux_amd64/libgoquic.a(go_quic_server_packet_writer.o): In function `base::Callback<void (net::WriteResult)>::operator=(base::Callback<void (net::WriteResult)> const&)':
/home/hodduc/go/src/github.com/devsisters/goquic/libquic/src/base/callback.h:366: undefined reference to `base::internal::CallbackBase::operator=(base::internal::CallbackBase const&)'
src/github.com/devsisters/goquic/lib/linux_amd64/libgoquic.a(go_quic_server_packet_writer.o): In function `base::Callback<void (net::WriteResult)>::Callback()':
/home/hodduc/go/src/github.com/devsisters/goquic/libquic/src/base/callback.h:370: undefined reference to `base::internal::CallbackBase::CallbackBase(base::internal::BindStateBase*)'
src/github.com/devsisters/goquic/lib/linux_amd64/libgoquic.a(go_quic_server_packet_writer.o): In function `base::Callback<void (net::WriteResult)>::Callback(base::Callback<void (net::WriteResult)> const&)':
/home/hodduc/go/src/github.com/devsisters/goquic/libquic/src/base/callback.h:366: undefined reference to `base::internal::CallbackBase::CallbackBase(base::internal::CallbackBase const&)'
src/github.com/devsisters/goquic/lib/linux_amd64/libgoquic.a(go_quic_server_packet_writer.o): In function `base::Callback<void (net::WriteResult)> base::ResetAndReturn<void (net::WriteResult)>(base::Callback<void (net::WriteResult)>*)':
/home/hodduc/go/src/github.com/devsisters/goquic/libquic/src/base/callback_helpers.h:26: undefined reference to `base::internal::CallbackBase::Reset()'
src/github.com/devsisters/goquic/lib/linux_amd64/libgoquic.a(go_quic_server_session.o): In function `net::tools::GoQuicServerSession::CreateQuicCryptoServerStream(net::QuicCryptoServerConfig const*)':
/home/hodduc/go/src/github.com/devsisters/goquic/src/go_quic_server_session.cc:42: undefined reference to `net::QuicCryptoServerStream::QuicCryptoServerStream(net::QuicCryptoServerConfig const*, net::QuicSession*)'
src/github.com/devsisters/goquic/lib/linux_amd64/libgoquic.a(go_quic_server_session.o): In function `net::tools::GoQuicServerSession::OnConfigNegotiated()':
/home/hodduc/go/src/github.com/devsisters/goquic/src/go_quic_server_session.cc:76: undefined reference to `FLAGS_enable_quic_fec'
src/github.com/devsisters/goquic/lib/linux_amd64/libgoquic.a(go_quic_server_session.o): In function `net::tools::GoQuicServerSession::OnConnectionClosed(net::QuicErrorCode, bool)':
/home/hodduc/go/src/github.com/devsisters/goquic/src/go_quic_server_session.cc:86: undefined reference to `net::QuicSession::OnConnectionClosed(net::QuicErrorCode, bool)'
src/github.com/devsisters/goquic/lib/linux_amd64/libgoquic.a(go_quic_server_session.o):(.rodata._ZTVN3net5tools19GoQuicServerSessionE[_ZTVN3net5tools19GoQuicServerSessionE]+0x98): undefined reference to `net::QuicSession::WritevData(unsigned int, net::QuicIOVector, unsigned long, bool, net::FecProtection, net::QuicAckListenerInterface*)'
src/github.com/devsisters/goquic/lib/linux_amd64/libgoquic.a(go_quic_server_session.o):(.rodata._ZTVN3net5tools19GoQuicServerSessionE[_ZTVN3net5tools19GoQuicServerSessionE]+0xe0): undefined reference to `net::QuicSession::GetNumOpenStreams() const'
src/github.com/devsisters/goquic/lib/linux_amd64/libgoquic.a(go_quic_server_session.o):(.rodata._ZTVN3net5tools19GoQuicServerSessionE[_ZTVN3net5tools19GoQuicServerSessionE]+0x128): undefined reference to `net::QuicSpdySession::OnStreamHeadersPriority(unsigned int, unsigned int)'
src/github.com/devsisters/goquic/lib/linux_amd64/libgoquic.a(go_quic_spdy_client_stream.o): In function `net::tools::GoQuicSpdyClientStream::OnStreamHeadersComplete(bool, unsigned long)':
/home/hodduc/go/src/github.com/devsisters/goquic/src/go_quic_spdy_client_stream.cc:44: undefined reference to `GoQuicSpdyClientStreamOnStreamHeadersComplete_C'
src/github.com/devsisters/goquic/lib/linux_amd64/libgoquic.a(go_quic_spdy_client_stream.o):(.rodata._ZTVN3net5tools22GoQuicSpdyClientStreamE[_ZTVN3net5tools22GoQuicSpdyClientStreamE]+0x40): undefined reference to `net::ReliableQuicStream::OnConnectionClosed(net::QuicErrorCode, bool)'
src/github.com/devsisters/goquic/lib/linux_amd64/libgoquic.a(go_quic_spdy_client_stream.o):(.rodata._ZTVN3net5tools22GoQuicSpdyClientStreamE[_ZTVN3net5tools22GoQuicSpdyClientStreamE]+0x58): undefined reference to `net::ReliableQuicStream::CloseConnection(net::QuicErrorCode)'
src/github.com/devsisters/goquic/lib/linux_amd64/libgoquic.a(go_quic_spdy_client_stream.o):(.rodata._ZTVN3net5tools22GoQuicSpdyClientStreamE[_ZTVN3net5tools22GoQuicSpdyClientStreamE]+0x68): undefined reference to `net::QuicSpdyStream::EffectivePriority() const'
src/github.com/devsisters/goquic/lib/linux_amd64/libgoquic.a(go_quic_spdy_client_stream.o):(.rodata._ZTVN3net5tools22GoQuicSpdyClientStreamE[_ZTVN3net5tools22GoQuicSpdyClientStreamE]+0x90): undefined reference to `net::QuicSpdyStream::OnStreamHeadersPriority(unsigned int)'
src/github.com/devsisters/goquic/lib/linux_amd64/libgoquic.a(go_quic_spdy_server_stream.o): In function `net::tools::GoQuicSpdyServerStream::OnStreamHeadersComplete(bool, unsigned long)':
/home/hodduc/go/src/github.com/devsisters/goquic/src/go_quic_spdy_server_stream.cc:27: undefined reference to `GoQuicSpdyServerStreamOnStreamHeadersComplete_C'
src/github.com/devsisters/goquic/lib/linux_amd64/libgoquic.a(go_quic_spdy_server_stream.o): In function `net::tools::GoQuicSpdyServerStream::OnDataAvailable()':
/home/hodduc/go/src/github.com/devsisters/goquic/src/go_quic_spdy_server_stream.cc:57: undefined reference to `GoQuicSpdyServerStreamOnDataAvailable_C'
src/github.com/devsisters/goquic/lib/linux_amd64/libgoquic.a(go_quic_spdy_server_stream.o): In function `net::tools::GoQuicSpdyServerStream::OnClose()':
/home/hodduc/go/src/github.com/devsisters/goquic/src/go_quic_spdy_server_stream.cc:68: undefined reference to `GoQuicSpdyServerStreamOnClose_C'
src/github.com/devsisters/goquic/lib/linux_amd64/libgoquic.a(go_quic_spdy_server_stream.o):(.rodata._ZTVN3net5tools22GoQuicSpdyServerStreamE[_ZTVN3net5tools22GoQuicSpdyServerStreamE]+0x40): undefined reference to `net::ReliableQuicStream::OnConnectionClosed(net::QuicErrorCode, bool)'
src/github.com/devsisters/goquic/lib/linux_amd64/libgoquic.a(go_quic_spdy_server_stream.o):(.rodata._ZTVN3net5tools22GoQuicSpdyServerStreamE[_ZTVN3net5tools22GoQuicSpdyServerStreamE]+0x58): undefined reference to `net::ReliableQuicStream::CloseConnection(net::QuicErrorCode)'
src/github.com/devsisters/goquic/lib/linux_amd64/libgoquic.a(go_quic_spdy_server_stream.o):(.rodata._ZTVN3net5tools22GoQuicSpdyServerStreamE[_ZTVN3net5tools22GoQuicSpdyServerStreamE]+0x68): undefined reference to `net::QuicSpdyStream::EffectivePriority() const'
src/github.com/devsisters/goquic/lib/linux_amd64/libgoquic.a(go_quic_spdy_server_stream.o):(.rodata._ZTVN3net5tools22GoQuicSpdyServerStreamE[_ZTVN3net5tools22GoQuicSpdyServerStreamE]+0x90): undefined reference to `net::QuicSpdyStream::OnStreamHeadersPriority(unsigned int)'
collect2: error: ld returned 1 exit status
hodduc commented 8 years ago

Thanks. Could you check again please? It is because of version mismatch between goquic and libquic. I updated goquic https://github.com/devsisters/goquic/commit/492debe4b7e17bf07fa77950b43562a38bb18b3b to use recent libquic.

bharatkrishna commented 8 years ago

Thanks. I am able to build the client now. Closing the issue.