2011-12-20 2 views
1

ndk를 사용하여 android 용 live555를 컴파일하는 중이 오류가 발생했습니다.Android 용으로 컴파일 할 때 해당 파일 또는 디렉토리 오류가 없습니다.

cd liveMedia ; make 
make[1]: Entering directory `/home/jomit/Public/jimjh-liveMedia-for-Android-0c18fdd/liveMedia' 
arm-linux-androideabi-ar cr libliveMedia.a -L/home/jomit/Applications/android-ndk-r6/sources/cxx-stl/gnu-libstdc++/libs/armeabi \ 
    Media.o MediaSource.o FramedSource.o FramedFileSource.o FramedFilter.o ByteStreamFileSource.o ByteStreamMultiFileSource.o ByteStreamMemoryBufferSource.o BasicUDPSource.o DeviceSource.o AudioInputDevice.o WAVAudioFileSource.o MPEG1or2Demux.o MPEG1or2DemuxedElementaryStream.o MPEGVideoStreamFramer.o MPEG1or2VideoStreamFramer.o MPEG1or2VideoStreamDiscreteFramer.o MPEG4VideoStreamFramer.o MPEG4VideoStreamDiscreteFramer.o H264VideoStreamFramer.o H264VideoStreamDiscreteFramer.o MPEGVideoStreamParser.o MPEG1or2AudioStreamFramer.o MPEG1or2AudioRTPSource.o MPEG4LATMAudioRTPSource.o MPEG4ESVideoRTPSource.o MPEG4GenericRTPSource.o MP3FileSource.o MP3HTTPSource.o MP3Transcoder.o MP3ADU.o MP3ADUdescriptor.o MP3ADUinterleaving.o MP3ADUTranscoder.o MP3StreamState.o MP3Internals.o MP3InternalsHuffman.o MP3InternalsHuffmanTable.o MP3ADURTPSource.o MPEG1or2VideoRTPSource.o MPEG2TransportStreamMultiplexor.o MPEG2TransportStreamFromPESSource.o MPEG2TransportStreamFromESSource.o MPEG2TransportStreamFramer.o ADTSAudioFileSource.o H263plusVideoRTPSource.o H263plusVideoStreamFramer.o H263plusVideoStreamParser.o AC3AudioStreamFramer.o AC3AudioRTPSource.o DVVideoStreamFramer.o DVVideoRTPSource.o JPEGVideoSource.o AMRAudioSource.o AMRAudioFileSource.o InputFile.o MediaSink.o FileSink.o BasicUDPSink.o AMRAudioFileSink.o H264VideoFileSink.o MPEG1or2AudioRTPSink.o MP3ADURTPSink.o MPEG1or2VideoRTPSink.o MPEG4LATMAudioRTPSink.o MPEG4GenericRTPSink.o MPEG4ESVideoRTPSink.o H263plusVideoRTPSink.o H264VideoRTPSink.o DVVideoRTPSink.o AC3AudioRTPSink.o GSMAudioRTPSink.o JPEGVideoRTPSink.o SimpleRTPSink.o AMRAudioRTPSink.o TCPStreamSink.o OutputFile.o uLawAudioFilter.o RTPSource.o MultiFramedRTPSource.o SimpleRTPSource.o H261VideoRTPSource.o H264VideoRTPSource.o QCELPAudioRTPSource.o AMRAudioRTPSource.o JPEGVideoRTPSource.o RTPSink.o MultiFramedRTPSink.o AudioRTPSink.o VideoRTPSink.o RTPInterface.o RTCP.o rtcp_from_spec.o RTSPServer.o RTSPClient.o RTSPCommon.o RTSPServerSupportingHTTPStreaming.o SIPClient.o MediaSession.o ServerMediaSession.o PassiveServerMediaSubsession.o OnDemandServerMediaSubsession.o FileServerMediaSubsession.o MPEG4VideoFileServerMediaSubsession.o H264VideoFileServerMediaSubsession.o H263plusVideoFileServerMediaSubsession.o WAVAudioFileServerMediaSubsession.o AMRAudioFileServerMediaSubsession.o MP3AudioFileServerMediaSubsession.o MPEG1or2VideoFileServerMediaSubsession.o MPEG1or2FileServerDemux.o MPEG1or2DemuxedServerMediaSubsession.o MPEG2TransportFileServerMediaSubsession.o ADTSAudioFileServerMediaSubsession.o DVVideoFileServerMediaSubsession.o AC3AudioFileServerMediaSubsession.o QuickTimeFileSink.o QuickTimeGenericRTPSource.o AVIFileSink.o MPEG2IndexFromTransportStream.o MPEG2TransportStreamIndexFile.o MPEG2TransportStreamTrickModeFilter.o DarwinInjector.o BitVector.o StreamParser.o DigestAuthentication.o our_md5.o our_md5hl.o Base64.o Locale.o 
arm-linux-androideabi-ar: -L/home/jomit/Applications/android-ndk-r6/sources/cxx-stl/gnu-libstdc++/libs/armeabi: No such file or directory 
make[1]: *** [libliveMedia.a] Error 1 
make[1]: Leaving directory `/home/jomit/Public/jimjh-liveMedia-for-Android-0c18fdd/liveMedia' 
make: *** [all] Error 2 

오류 상태 :

arm-linux-androideabi-ar: -L/home/jomit/Applications/android-ndk-r6/sources/cxx-stl/gnu-libstdc++/libs/armeabi: No such file or directory 

하지만 내 파일 시스템의 디렉토리 /home/jomit/Applications/android-ndk-r6/sources/cxx-stl/gnu-libstdc++/libs/armeabi을해야합니까. android ndk 디렉토리의 tools 디렉토리에서 make-standalone-toolchain.sh 스크립트를 실행하면됩니다. 모든 권한 문제를 피하기 위해 chmod 777 -R /home/jomit/Applications/android-ndk-r6/을 사용하여 ndk 및 하위 디렉토리에 대한 모든 권한을 부여했습니다. 내 질문은 어떻게이 오류를 해결할 수 있습니까?

참고 : GitHub의에서

liveMedia-for-Android은 내가 사용하고있는 live555 안드로이드 포트입니다.

CROSS_COMPILE ?=  arm-linux-androideabi- 

SYS_ROOT  =  $(NDK_ROOT)/platforms/android-8/arch-arm 

COMPILE_OPTS =  $(INCLUDES) -I. -O2 -DSOCKLEN_T=socklen_t -DNO_SSTREAM=1 -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -fPIC --sysroot=$(SYS_ROOT) -DLINUX -DANDROID 

C    =  c 

C_COMPILER  =  $(CROSS_COMPILE)gcc 

C_FLAGS   =  $(COMPILE_OPTS) -lc -lgcc 

CPP    =  cpp 

CPLUSPLUS_COMPILER = $(CROSS_COMPILE)g++ 

CPLUSPLUS_FLAGS =  $(COMPILE_OPTS) -Wall -DBSD=1 -lstdc++ -lsupc++ \ 

         -I$(NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/include \ 

         -I$(NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/libs/armeabi/include \ 

         -L$(NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/libs/armeabi 

OBJ    =  o 

LINK   =  $(CROSS_COMPILE)g++ --sysroot=$(SYS_ROOT) -o 

LINK_OPTS  =  -L$(NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/libs/armeabi 

CONSOLE_LINK_OPTS =  $(LINK_OPTS) 

LIBRARY_LINK =  $(CROSS_COMPILE)ar cr 

LIBRARY_LINK_OPTS =  $(LINK_OPTS) 

LIB_SUFFIX  =   a 

LIBS_FOR_CONSOLE_APPLICATION = 

LIBS_FOR_GUI_APPLICATION = 

EXE = 

:

#!/bin/sh 
# 
# Builds libraries for Android 
# Written by Jiunn Haur Lim <[email protected]> 

export PATH="${NDK_ROOT}/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/:${PATH}" 

SYS_ROOT="${NDK_ROOT}/platforms/android-8/arch-arm" 
PREF="arm-linux-androideabi-" 
export LD="${PREF}ld --sysroot=${SYS_ROOT}" 

./genMakefiles android 
make 

exit 0 

다음은 config.android 파일입니다

나는 다음 64 비트 페도라 16

를 실행하고 내가 live555를 컴파일 실행하고 내 android.sh 파일입니다 두 파일 - 과 config.android -은 이미 포트에서 사용할 수 있습니다. 구글은이 문제 :)

답변

0

문제는 GNU AR (이 경우 팔 - 리눅스 - androideabi-AR)을 허용하지 않는다는 것입니다 지식의 조금 부족이 있기 때문에

은 정말 어떤 도움을 주셔서 감사합니다 -L 옵션을 사용하면 동적 링크 중에 gcc/ld으로 이동해야하는 경로 옵션 대신 파일로 처리합니다.

아칸소 -L 옵션을 명예/필요하지 않습니다 따라서 오브젝트 파일의 집합에서 정적 라이브러리를 컴파일합니다.