pristineio / webrtc-build-scripts

A set of build scripts useful for building WebRTC libraries for Android and iOS.
BSD 3-Clause "New" or "Revised" License
1.12k stars 448 forks source link

Building version 11177 for iOS succeeds, but building the application throws undefined symbols #174

Open deanrock opened 8 years ago

deanrock commented 8 years ago

Building release version 11177 from git (commit 893505d) succeeds, but when trying to build application for a real device (it works without a problem on iOS Simulator) it throws undefined symbols error:

Undefined symbols for architecture armv7: "webrtc::PacketRouter::AddRtpModule(webrtc::RtpRtcp_, bool)", referenced from: webrtc::ViEChannel::Init() in libWebRTC.a(webrtc.vie_channel.o) webrtc::ViEChannel::SetSendCodec(webrtc::VideoCodec const&, bool) in libWebRTC.a(webrtc.viechannel.o) webrtc::voe::Channel::RegisterSenderCongestionControlObjects(webrtc::RtpPacketSender, webrtc::TransportFeedbackObserver, webrtc::PacketRouter) in libWebRTC.a(voiceengine.channel.o) webrtc::voe::Channel::RegisterReceiverCongestionControlObjects(webrtc::PacketRouter) in libWebRTC.a(voice_engine.channel.o) "webrtc::CriticalSectionWrapper::~CriticalSectionWrapper()", referenced from: webrtc::PacedSender::~PacedSender() in libWebRTC.a(paced_sender.pacedsender.o) "webrtc::CriticalSectionWrapper::CreateCriticalSection()", referenced from: webrtc::PacedSender::PacedSender(webrtc::Clock, webrtc::PacedSender::Callback_, int, int, int) in libWebRTC.a(paced_sender.pacedsender.o) webrtc::VCMDecodedFrameCallback::VCMDecodedFrameCallback(webrtc::VCMTiming&, webrtc::Clock) in libWebRTC.a(webrtc_video_coding.genericdecoder.o) webrtc::(anonymous namespace)::VideoCodingModuleImpl::VideoCodingModuleImpl(webrtc::Clock, webrtc::EventFactory, bool, webrtc::VideoEncoderRateObserver, webrtc::VCMQMSettingsCallback_) in libWebRTC.a(webrtc_video_coding.video_coding_impl.o) webrtc::LockedIsacBandwidthInfo::LockedIsacBandwidthInfo() in libWebRTC.a(isac_common.locked_bandwidth_info.o) webrtc::AudioConferenceMixerImpl::Init() in libWebRTC.a(audio_conference_mixer.audio_conference_mixerimpl.o) webrtc::MemoryPoolwebrtc::AudioFrame::CreateMemoryPool(webrtc::MemoryPoolwebrtc::AudioFrame&, unsigned int) in libWebRTC.a(audio_conference_mixer.audio_conference_mixer_impl.o) webrtc::mediaoptimization::MediaOptimization::MediaOptimization(webrtc::Clock) in libWebRTC.a(webrtc_video_coding.mediaoptimization.o) ... "webrtc::PacketRouter::RemoveRtpModule(webrtc::RtpRtcp, bool)", referenced from: webrtc::ViEChannel::~ViEChannel() in libWebRTC.a(webrtc.vie_channel.o) webrtc::ViEChannel::SetSendCodec(webrtc::VideoCodec const&, bool) in libWebRTC.a(webrtc.vie_channel.o) webrtc::voe::Channel::ResetCongestionControlObjects() in libWebRTC.a(voice_engine.channel.o) "webrtc::CriticalSectionWrapper::Leave()", referenced from: webrtc::PacedSender::Pause() in libWebRTC.a(paced_sender.paced_sender.o) webrtc::PacedSender::Resume() in libWebRTC.a(paced_sender.paced_sender.o) webrtc::PacedSender::UpdateBitrate(int, int, int) in libWebRTC.a(paced_sender.paced_sender.o) webrtc::PacedSender::InsertPacket(webrtc::RtpPacketSender::Priority, unsigned int, unsigned short, long long, unsigned long, bool) in libWebRTC.a(paced_sender.paced_sender.o) webrtc::PacedSender::ExpectedQueueTimeMs() const in libWebRTC.a(paced_sender.paced_sender.o) webrtc::PacedSender::QueueSizePackets() const in libWebRTC.a(paced_sender.paced_sender.o) webrtc::PacedSender::QueueInMs() const in libWebRTC.a(paced_sender.pacedsender.o) ... "rtc::CriticalSection::Leave() const", referenced from: rtc::Thread::Send(rtc::MessageHandler, unsigned int, rtc::MessageData_) in libWebRTC.a(rtcbase.thread.o) rtc::Thread::ReceiveSendsFromThread(rtc::Thread const) in libWebRTC.a(rtc_base.thread.o) rtc::SignalThread::Destroy(bool) in libWebRTC.a(rtc_base.signalthread.o) rtc::SignalThread::EnterExit::~EnterExit() in libWebRTC.a(rtc_base.signalthread.o) webrtc::ProcessThreadImpl::Process() in libWebRTC.a(webrtc_utility.process_threadimpl.o) webrtc::RtpHeaderParserImpl::Parse(unsigned char const, unsigned long, webrtc::RTPHeader_) const in libWebRTC.a(rtp_rtcp.rtp_header_parser.o) webrtc::RtpHeaderParserImpl::RegisterRtpHeaderExtension(webrtc::RTPExtensionType, unsigned char) in libWebRTC.a(rtp_rtcp.rtp_headerparser.o) ... "rtc::CritScope::CritScope(rtc::CriticalSection const)", referenced from: rtc::Thread::Send(rtc::MessageHandler, unsigned int, rtc::MessageData) in libWebRTC.a(rtcbase.thread.o) rtc::Thread::Clear(rtc::MessageHandler, unsigned int, std::1::list<rtc::Message, std::1::allocator >_) in libWebRTC.a(rtcbase.thread.o) rtc::MessageQueueManager::AddInternal(rtc::MessageQueue) in libWebRTC.a(rtcbase.messagequeue.o) rtc::MessageQueueManager::RemoveInternal(rtc::MessageQueue) in libWebRTC.a(rtcbase.messagequeue.o) rtc::MessageQueueManager::ClearInternal(rtc::MessageHandler) in libWebRTC.a(rtcbase.messagequeue.o) rtc::MessageQueue::Get(rtc::Message, int, bool) in libWebRTC.a(rtcbase.messagequeue.o) rtc::MessageQueue::Post(rtc::MessageHandler, unsigned int, rtc::MessageData_, bool) in libWebRTC.a(rtc_base.messagequeue.o) ... "webrtc::CriticalSectionWrapper::Enter()", referenced from: webrtc::PacedSender::Pause() in libWebRTC.a(paced_sender.paced_sender.o) webrtc::PacedSender::Resume() in libWebRTC.a(paced_sender.paced_sender.o) webrtc::PacedSender::UpdateBitrate(int, int, int) in libWebRTC.a(paced_sender.paced_sender.o) webrtc::PacedSender::InsertPacket(webrtc::RtpPacketSender::Priority, unsigned int, unsigned short, long long, unsigned long, bool) in libWebRTC.a(paced_sender.paced_sender.o) webrtc::PacedSender::ExpectedQueueTimeMs() const in libWebRTC.a(paced_sender.paced_sender.o) webrtc::PacedSender::QueueSizePackets() const in libWebRTC.a(paced_sender.paced_sender.o) webrtc::PacedSender::QueueInMs() const in libWebRTC.a(paced_sender.pacedsender.o) ... "rtc::CriticalSection::Enter() const", referenced from: rtc::Thread::Send(rtc::MessageHandler, unsigned int, rtc::MessageData_) in libWebRTC.a(rtcbase.thread.o) rtc::Thread::ReceiveSendsFromThread(rtc::Thread const) in libWebRTC.a(rtc_base.thread.o) rtc::SignalThread::OnMainThreadDestroyed() in libWebRTC.a(rtc_base.signalthread.o) rtc::SignalThread::Start() in libWebRTC.a(rtc_base.signalthread.o) rtc::SignalThread::Destroy(bool) in libWebRTC.a(rtc_base.signalthread.o) rtc::SignalThread::OnMessage(rtc::Message*) in libWebRTC.a(rtc_base.signalthread.o) rtc::SignalThread::Run() in libWebRTC.a(rtc_base.signalthread.o) ... ld: symbol(s) not found for architecture armv7 clang: error: linker command failed with exit code 1 (use -v to see invocation)

I get the same error for arm7 and arm64 architectures.

Also, the only way to actually get any other revision than latest to build is to comment out twiddle_objc_target on line 239 in function sync() in build.sh file.