问题
I'm trying to compile Live555 for iOS.
I have done the following:
./genMakefiles iphoneos
make
I get the following build errors:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/g++ -c -I../UsageEnvironment/include -I../groupsock/include -I../liveMedia/include -I../BasicUsageEnvironment/include -I. -DBSD=1 -O2 -DSOCKLEN_T=socklen_t -DHAVE_SOCKADDR_LEN=1 -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -fPIC -arch armv7 --sysroot=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk -Wall testMP3Streamer.cpp
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/g++ -o testMP3Streamer -L. -arch armv7 --sysroot=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk testMP3Streamer.o ../liveMedia/libliveMedia.a ../groupsock/libgroupsock.a ../BasicUsageEnvironment/libBasicUsageEnvironment.a ../UsageEnvironment/libUsageEnvironment.a
ld: in /usr/lib/system/libcache.dylib, missing required architecture armv7 in file for architecture armv7
collect2: ld returned 1 exit status
make[1]: *** [testMP3Streamer] Error 1
make: *** [all] Error 2
I have tried changing the linker options to this as well in the config.iphoneos:
LINK_OPTS = -L. -arch armv7 --isysroot=$(SDK)
When I change the linker options I get the following errors:
cd testProgs ; make
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/g++ -c -I../UsageEnvironment/include -I../groupsock/include -I../liveMedia/include -I../BasicUsageEnvironment/include -I. -DBSD=1 -O2 -DSOCKLEN_T=socklen_t -DHAVE_SOCKADDR_LEN=1 -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -fPIC -arch armv7 --sysroot=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk -Wall testMP3Streamer.cpp
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/g++ -o testMP3Streamer -L. -arch armv7 --isysroot=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk testMP3Streamer.o ../liveMedia/libliveMedia.a ../groupsock/libgroupsock.a ../BasicUsageEnvironment/libBasicUsageEnvironment.a ../UsageEnvironment/libUsageEnvironment.a
ld: warning: ignoring file /usr/lib/crt1.o, missing required architecture armv7 in file
ld: warning: ignoring file /usr/lib/libstdc++.dylib, missing required architecture armv7 in file
ld: warning: ignoring file /usr/lib/libgcc_s.1.dylib, missing required architecture armv7 in file
ld: warning: ignoring file /usr/lib/libSystem.dylib, missing required architecture armv7 in file
Undefined symbols for architecture armv7:
"start", referenced from:
-u command line option
(maybe you meant: RTPInterface::startNetworkReading(void (*)(void*, int)), MediaSink::startPlaying(MediaSource&, void (*)(void*), void*))
"_exit", referenced from:
play() in testMP3Streamer.o
"operator new(unsigned long)", referenced from:
_main in testMP3Streamer.o
MP3FileSource::MP3FileSource(UsageEnvironment&, __sFILE*)in libliveMedia.a(MP3FileSource.o)
MP3FileSource::MP3FileSource(UsageEnvironment&, __sFILE*)in libliveMedia.a(MP3FileSource.o)
MP3FileSource::createNew(UsageEnvironment&, char const*)in libliveMedia.a(MP3FileSource.o)
_Tables::getOurTables(UsageEnvironment&, unsigned char)in libliveMedia.a(Media.o)
MediaLookupTable::remove(char const*)in libliveMedia.a(Media.o)
MediaLookupTable::ourMedia(UsageEnvironment&) in libliveMedia.a(Media.o)
...
Any ideas what I'm doing wrong?
回答1:
Change LINK_OPTS of config.iphoneos before running "genMakefiles iphoneos". It works for me on iOS 5.1 SDK and iOS 6 SDK beta.
LINK_OPTS = -L. -arch armv7 --sysroot=$(SDK) -L$(SDK)/usr/lib/system
回答2:
I just change the compile.iphoneos :
IOS_VERSION = 5.1
LINK_OPTS = -L. .....
To
IOS_VERSION = 6.0
LINK_OPTS = -L. -arch armv7 --sysroot=$(SDK) -L$(SDK)/usr/lib/system
And it successfully compiles.
回答3:
I think you must modify --isysroot
to -isysroot
来源:https://stackoverflow.com/questions/11369933/live555-compile-for-ios-build-error