参考文章http://blog.csdn.net/baby313/article/details/7289489

下载了截止目前最新版本live.2013.08.31.tar.gz,在NDK版本是ndkr5。按照上面的文章写的Android.mk结果编译不通过,先是遇到这个错误:

E:/develop/android/project/live555lib/jni/live/liveMedia/our_md5hl.c:14:23: error: NetCommon.h: No such file or directory/cygdrive/e/Develop/Android/ndk/build/core/build-binary.mk:197: recipe for target `/cygdrive/e/develop/android/project/live555lib/obj/local/armeabi/objs/live555/./live/liveMedia/our_md5hl.o' failedmake: *** [/cygdrive/e/develop/android/project/live555lib/obj/local/armeabi/objs/live555/./live/liveMedia/our_md5hl.o] Error 1

后来修改了Android.mk里的LOCAL_C_INCLUDES段,把./live改成$(LOCAL_PATH)/live后解决。

再次编译,遇到下面的错误

make: *** 没有规则可以创建“/cygdrive/e/develop/android/project/live555lib/obj/local/armeabi/objs/live555/./live/liveMedia/MP3HTTPSource.o”需要的目标“/cygdrive/e/develop/android/project/live555lib/jni/./live/liveMedia/MP3HTTPSource.cpp”。 停止。
发现源代码里不存在MP3HTTPSource.cpp文件,于是在Android.mk的LOCAL_SRC_FILES删除这个文件所在行

再次编译,遇到了下面的错误

E:/develop/android/project/live555lib/obj/local/armeabi/objs/live555/live/liveMedia/RTSPServer.o: In function `RTSPServerWithREGISTERProxying::implementCmd_REGISTER(char const*, char const*, int)':E:/develop/android/project/live555lib/jni/live/liveMedia/RTSPServer.cpp:2218: undefined reference to `ProxyServerMediaSession::createNew(UsageEnvironment&, RTSPServer*, char const*, char const*, char const*, char const*, unsigned short, int, int)'collect2: ld returned 1 exit status/cygdrive/e/Develop/Android/ndk/build/core/build-binary.mk:266: recipe for target `/cygdrive/e/develop/android/project/live555lib/obj/local/armeabi/liblive555.so' failedmake: *** [/cygdrive/e/develop/android/project/live555lib/obj/local/armeabi/liblive555.so] Error 1

检查发现是没有包含ProxyServerMediaSession.cpp代码的编译,把这个文件加到最后一行,再次编译终于通过了,记录一下,顺便附上我的Android.mk

#一般都在本地路径,所以这里也是固定写法LOCAL_PATH := $(call my-dir)#都以此开始include $(CLEAR_VARS)LOCAL_MODULE := live555LOCAL_SRC_FILES :=\./live/groupsock/GroupEId.cpp \./live/groupsock/IOHandlers.cpp \./live/groupsock/NetInterface.cpp \./live/groupsock/NetAddress.cpp \./live/groupsock/GroupsockHelper.cpp \./live/groupsock/Groupsock.cpp \./live/groupsock/inet.c \./live/BasicUsageEnvironment/DelayQueue.cpp \./live/BasicUsageEnvironment/BasicHashTable.cpp \./live/BasicUsageEnvironment/BasicUsageEnvironment.cpp \./live/BasicUsageEnvironment/BasicUsageEnvironment0.cpp \./live/BasicUsageEnvironment/BasicTaskScheduler.cpp \./live/BasicUsageEnvironment/BasicTaskScheduler0.cpp \./live/UsageEnvironment/HashTable.cpp \./live/UsageEnvironment/strDup.cpp \./live/UsageEnvironment/UsageEnvironment.cpp \./live/liveMedia/MP3Internals.cpp \./live/liveMedia/StreamReplicator.cpp \./live/liveMedia/MPEG4GenericRTPSource.cpp \./live/liveMedia/BitVector.cpp \./live/liveMedia/MatroskaFileParser.cpp \./live/liveMedia/ADTSAudioFileServerMediaSubsession.cpp \./live/liveMedia/H264VideoRTPSink.cpp \./live/liveMedia/MP3StreamState.cpp \./live/liveMedia/RTSPServerSupportingHTTPStreaming.cpp \./live/liveMedia/MP3AudioMatroskaFileServerMediaSubsession.cpp \./live/liveMedia/InputFile.cpp \./live/liveMedia/MPEGVideoStreamParser.cpp \./live/liveMedia/AMRAudioFileSource.cpp \./live/liveMedia/Locale.cpp \./live/liveMedia/T140TextRTPSink.cpp \./live/liveMedia/MediaSink.cpp \./live/liveMedia/QuickTimeFileSink.cpp \./live/liveMedia/RTPSink.cpp \./live/liveMedia/VorbisAudioRTPSink.cpp \./live/liveMedia/AMRAudioFileSink.cpp \./live/liveMedia/MP3ADUTranscoder.cpp \./live/liveMedia/VorbisAudioMatroskaFileServerMediaSubsession.cpp \./live/liveMedia/H264VideoFileServerMediaSubsession.cpp \./live/liveMedia/H263plusVideoRTPSource.cpp \./live/liveMedia/RTSPClient.cpp \./live/liveMedia/DVVideoRTPSource.cpp \./live/liveMedia/H264VideoStreamFramer.cpp \./live/liveMedia/DVVideoStreamFramer.cpp \./live/liveMedia/MultiFramedRTPSink.cpp \./live/liveMedia/BasicUDPSink.cpp \./live/liveMedia/Base64.cpp \./live/liveMedia/H261VideoRTPSource.cpp \./live/liveMedia/MP3InternalsHuffman.cpp \./live/liveMedia/MPEG2TransportStreamMultiplexor.cpp \./live/liveMedia/MP3AudioFileServerMediaSubsession.cpp \./live/liveMedia/MPEG1or2AudioRTPSource.cpp \./live/liveMedia/H263plusVideoFileServerMediaSubsession.cpp \./live/liveMedia/MP3Transcoder.cpp \./live/liveMedia/H263plusVideoStreamParser.cpp \./live/liveMedia/AudioInputDevice.cpp \./live/liveMedia/MP3FileSource.cpp \./live/liveMedia/MPEG4LATMAudioRTPSource.cpp \./live/liveMedia/MPEG2TransportStreamFromPESSource.cpp \./live/liveMedia/AACAudioMatroskaFileServerMediaSubsession.cpp \./live/liveMedia/WAVAudioFileServerMediaSubsession.cpp \./live/liveMedia/MP3ADURTPSource.cpp \./live/liveMedia/FileSink.cpp \./live/liveMedia/MPEG1or2DemuxedServerMediaSubsession.cpp \./live/liveMedia/MP3InternalsHuffmanTable.cpp \./live/liveMedia/TCPStreamSink.cpp \./live/liveMedia/MediaSource.cpp \./live/liveMedia/MPEG2TransportStreamFramer.cpp \./live/liveMedia/JPEGVideoRTPSink.cpp \./live/liveMedia/JPEGVideoSource.cpp \./live/liveMedia/AC3AudioFileServerMediaSubsession.cpp \./live/liveMedia/AMRAudioRTPSink.cpp \./live/liveMedia/MPEG4VideoFileServerMediaSubsession.cpp \./live/liveMedia/AMRAudioFileServerMediaSubsession.cpp \./live/liveMedia/H264VideoMatroskaFileServerMediaSubsession.cpp \./live/liveMedia/MPEG2IndexFromTransportStream.cpp \./live/liveMedia/MPEG1or2FileServerDemux.cpp \./live/liveMedia/GSMAudioRTPSink.cpp \./live/liveMedia/MPEG1or2VideoStreamFramer.cpp \./live/liveMedia/AMRAudioRTPSource.cpp \./live/liveMedia/EBMLNumber.cpp \./live/liveMedia/MP3ADUinterleaving.cpp \./live/liveMedia/SimpleRTPSink.cpp \./live/liveMedia/MPEG1or2VideoRTPSink.cpp \./live/liveMedia/MPEG2TransportStreamTrickModeFilter.cpp \./live/liveMedia/AC3AudioRTPSource.cpp \./live/liveMedia/MultiFramedRTPSource.cpp \./live/liveMedia/ServerMediaSession.cpp \./live/liveMedia/JPEGVideoRTPSource.cpp \./live/liveMedia/MP3ADU.cpp \./live/liveMedia/FileServerMediaSubsession.cpp \./live/liveMedia/DVVideoFileServerMediaSubsession.cpp \./live/liveMedia/DarwinInjector.cpp \./live/liveMedia/OnDemandServerMediaSubsession.cpp \./live/liveMedia/H263plusVideoRTPSink.cpp \./live/liveMedia/TextRTPSink.cpp \./live/liveMedia/MPEG1or2VideoStreamDiscreteFramer.cpp \./live/liveMedia/MediaSession.cpp \./live/liveMedia/AC3AudioStreamFramer.cpp \./live/liveMedia/QuickTimeGenericRTPSource.cpp \./live/liveMedia/SimpleRTPSource.cpp \./live/liveMedia/FramedFileSource.cpp \./live/liveMedia/T140TextMatroskaFileServerMediaSubsession.cpp \./live/liveMedia/PassiveServerMediaSubsession.cpp \./live/liveMedia/ByteStreamMemoryBufferSource.cpp \./live/liveMedia/RTCP.cpp \./live/liveMedia/MP3ADURTPSink.cpp \./live/liveMedia/ADTSAudioFileSource.cpp \./live/liveMedia/MPEG1or2VideoRTPSource.cpp \./live/liveMedia/MPEG1or2VideoFileServerMediaSubsession.cpp \./live/liveMedia/MPEG4ESVideoRTPSink.cpp \./live/liveMedia/RTPSource.cpp \./live/liveMedia/H264VideoStreamDiscreteFramer.cpp \./live/liveMedia/AVIFileSink.cpp \./live/liveMedia/StreamParser.cpp \./live/liveMedia/MPEG2TransportStreamFromESSource.cpp \./live/liveMedia/VP8VideoRTPSink.cpp \./live/liveMedia/FramedFilter.cpp \./live/liveMedia/VideoRTPSink.cpp \./live/liveMedia/MPEG4VideoStreamDiscreteFramer.cpp \./live/liveMedia/QCELPAudioRTPSource.cpp \./live/liveMedia/MPEG4VideoStreamFramer.cpp \./live/liveMedia/Media.cpp \./live/liveMedia/ByteStreamMultiFileSource.cpp \./live/liveMedia/MPEG2TransportUDPServerMediaSubsession.cpp \./live/liveMedia/H263plusVideoStreamFramer.cpp \./live/liveMedia/VorbisAudioRTPSource.cpp \./live/liveMedia/RTSPCommon.cpp \./live/liveMedia/FramedSource.cpp \./live/liveMedia/MatroskaDemuxedTrack.cpp \./live/liveMedia/MPEG1or2AudioStreamFramer.cpp \./live/liveMedia/VP8VideoMatroskaFileServerMediaSubsession.cpp \./live/liveMedia/MPEG1or2Demux.cpp \./live/liveMedia/AudioRTPSink.cpp \./live/liveMedia/DeviceSource.cpp \./live/liveMedia/MPEG1or2AudioRTPSink.cpp \./live/liveMedia/ByteStreamFileSource.cpp \./live/liveMedia/WAVAudioFileSource.cpp \./live/liveMedia/uLawAudioFilter.cpp \./live/liveMedia/RTSPServer.cpp \./live/liveMedia/VP8VideoRTPSource.cpp \./live/liveMedia/H264VideoRTPSource.cpp \./live/liveMedia/MatroskaFileServerDemux.cpp \./live/liveMedia/MPEG4LATMAudioRTPSink.cpp \./live/liveMedia/MPEG2TransportStreamIndexFile.cpp \./live/liveMedia/SIPClient.cpp \./live/liveMedia/BasicUDPSource.cpp \./live/liveMedia/AC3AudioMatroskaFileServerMediaSubsession.cpp \./live/liveMedia/H264VideoFileSink.cpp \./live/liveMedia/MPEG2TransportFileServerMediaSubsession.cpp \./live/liveMedia/DigestAuthentication.cpp \./live/liveMedia/MPEG4ESVideoRTPSource.cpp \./live/liveMedia/MatroskaFile.cpp \./live/liveMedia/MP3ADUdescriptor.cpp \./live/liveMedia/AMRAudioSource.cpp \./live/liveMedia/MPEG4GenericRTPSink.cpp \./live/liveMedia/MPEGVideoStreamFramer.cpp \./live/liveMedia/AC3AudioRTPSink.cpp \./live/liveMedia/DVVideoRTPSink.cpp \./live/liveMedia/OutputFile.cpp \./live/liveMedia/MPEG1or2DemuxedElementaryStream.cpp \./live/liveMedia/RTPInterface.cpp \./live/liveMedia/our_md5hl.c \./live/liveMedia/our_md5.c \./live/liveMedia/rtcp_from_spec.c \./live/liveMedia/ProxyServerMediaSession.cpp#./live改成$(LOCAL_PATH)/live编译通过LOCAL_C_INCLUDES := \$(LOCAL_PATH)/live/BasicUsageEnvironment/include \$(LOCAL_PATH)/live/liveMedia/include \$(LOCAL_PATH)/live/BasicUsageEnvironment/include \$(LOCAL_PATH)/live/groupsock/include \$(LOCAL_PATH)/live/UsageEnvironment/includeLOCAL_CPPFLAGS += -fexceptions -DXLOCALE_NOT_USED=1 -DNULL=0 -DNO_SSTREAM=1 -UIP_ADD_SOURCE_MEMBERSHIP#都以此结束,编译为动态链接库include $(BUILD_SHARED_LIBRARY)


更多相关文章

  1. 一款常用的 Squid 日志分析工具
  2. GitHub 标星 8K+!一款开源替代 ls 的工具你值得拥有!
  3. RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装
  4. Linux 环境下实战 Rsync 备份工具及配置 rsync+inotify 实时同步
  5. 关于android中自定义SurfaceView放在布局文件中的问题
  6. clickOnMenuItem应注意的
  7. Android源码个个击破之PackageManager
  8. Android中图片保存到本地,并及时更新到系统相册
  9. Android系统应用开发(六)Android(安卓)framework系统默认设置修改

随机推荐

  1. 第一个Android应用程序
  2. android系统架构图
  3. Animation
  4. Android(安卓)添加一个产品
  5. [004] 详解Windows平台搭建Androiod开发
  6. 我的android 第22天 - url介绍
  7. android 关于Location of the Android(安
  8. Android(安卓)自定义漂亮的Seekbar样式
  9. Android中的Menu功能菜单-OptionsMenu[选
  10. Android布局文件的属性值解析