为 iOS 构建 librtmp
http://www.davideccher.com/blog/wordpress/building-librtmp-for-ios/
mkdir openssl cd openssl curl http://www.openssl.org/source/openssl-1.0.1e.tar.gz -O openssl-1.0.1e.tar.gz tar xfz openssl-1.0.1e.tar.gz
我们将所有版本都在 tmp 文件夹中构建。首先为 armv6 配置它。
? mkdir openssl-1.0.1e-armv6 cd openssl-1.0.1e ./configure BSD-generic32 --openssldir=../openssl-1.0.1e-armv6 现在我们需要编辑 Makefile 并更改
?
/Applications/Xcode.app/Contents/Developer/usr/bin/gcc -arch armv6
这些链接适用于我的构建系统,使用 SDK 5.0。请将其更改为其他构建系统。
到此,我们已准备好构建。
? make make install 现在 /tmp/openssl-1.0.0g-armv6 中有构建好的库。
我们对 armv7 和 i386 也做同样的操作
?
cd .. mkdir openssl-1.0.1e-armv7 cd openssl-1.0.1e ./configure BSD-generic32 --openssldir=../openssl-1.0.1e-armv7
CC= /Applications/Xcode.app/Contents/Developer/usr/bin/gcc -arch armv7
make make install
mkdir openssl-1.0.1e-i386 cd openssl-1.0.1e ./configure BSD-generic32 --openssldir=../openssl-1.0.1e-i386
CC= /Applications/Xcode.app/Contents/Developer/usr/bin/gcc -arch i386 make make install
在这个时候,我们可以使用lipo创建一个通用库。
? cd .. mkdir include cp -r /tmp/openssl-1.0.1e-i386/include/ include/ mkdir lib
将以下文件合成为一个库lipo /tmp/openssl-1.0.0g-armv6/lib/libcrypto.a /tmp/openssl-1.0.0g-armv7/lib/libcrypto.a /tmp/openssl-1.0.0g-i386/lib/libcrypto.a -create -output lib/libcrypto.a 同样地,将以下文件合并为libssl.a lipo /tmp/openssl-1.0.0g-armv6/lib/libssl.a /tmp/openssl-1.0.0g-armv7/lib/libssl.a /tmp/openssl-1.0.0g-i386/lib/libssl.a -create -output lib/libssl.a 现在我们可以在include和lib文件夹中看到OpenSSL的通用库。
为了构建iOS上的librtmp,我们需要像OpenSSL那样构建三个库版本。
开始克隆最新版本
? mkdir librtmp cd librtmp git clone git://git.ffmpeg.org/rtmpdump rtmpdump
为了构建armv6版本的库,创建源码的副本
? cp -r rtmpdump rtmpdump-armv6 cd rtmpdump-armv6/librtmp
export CROSS_COMPILE=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/ export XCFLAGS="-isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk -I/tmp/openssl/include/ -arch armv6" export XLDFLAGS="-isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk -L/tmp/openssl/lib -arch armv6 " make SYS=darwin make SYS=darwin prefix=/tmp/librtmp-armv6 install 更换export路径使用正确的系统构建路径和之前openssl库构建的路径。
对于armv7
? cp -r rtmpdump rtmpdump-armv7 cd rtmpdump-armv7/librtmp
export CROSS_COMPILE=/Applications/Xcode.app/Contents/Developer/usr/bin/ export XCFLAGS="-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk -I/tmp/openssl/include/ -arch armv7" export XLDFLAGS="-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk -L/tmp/openssl/lib -arch armv7" make SYS=darwin make SYS=darwin prefix=/tmp/librtmp-armv7 install
export CROSS_COMPILE=
对于模拟器
? cd .. cp -r rtmpdump rtmpdump-i386 cd rtmpdump-i386/librtmp edit Makefile con CC=$(CROSS_COMPILE)gcc -arch i386 export CROSS_COMPILE=/Applications/Xcode.app/Contents/Developer/usr/bin/
export XCFLAGS="-I/tmp/openssl/include/ -arch i386" export XLDFLAGS="-L/tmp/openssl/lib -arch i386"
make SYS=darwin make SYS=darwin prefix=/tmp/librtmp-i386 install 现在我们可以使用lipo创建一个通用库。
? mkdir include cp -r /tmp/librtmp-i386/include/librtmp include/ mkdir lib lipo /tmp/librtmp-armv6/lib/librtmp.a /tmp/librtmp-armv7/lib/librtmp.a /tmp/librtmp-i386/lib/librtmp.a -create -output lib/librtmp.a