转自:http://blog.csdn.net/cjj198561/article/details/28955461
编译librtmp需要先编译openssl,因为librtmp依赖openssl
首先编译openssl:
把以下内容保存为shell脚本:
#!/bin/sh
VERSION="1.0.1h" #指明openssl的版本信息,比如下载的是openssl-1.0.1h.tar.gz那么对于就填写1.0.1h
SDKVERSION="7.1" #指明ios sdk的版本号,目前最新的是7.1,不清楚的同学可以 ls /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.1.sdk/ 一下看看自己的iPhoneOS7.1.sdk是不是7.1
CURRENTPATH=`pwd`
ARCHS="i386 armv7 armv7s arm64"
BUILDPATH="${CURRENTPATH}/build"
LIBPATH="${CURRENTPATH}/lib"
INCLUDEPATH="${CURRENTPATH}/include"
SRCPATH="${CURRENTPATH}/src"
LIBSSL="libssl.a"
LIBCRYPTO="libcrypto.a"
DEVELOPER=`xcode-select -print-path`
if [ ! -d "$DEVELOPER" ]; then
echo "xcode path is not set correctly $DEVELOPER does not exist (most likely because of xcode > 4.3)"
echo "run"
echo "sudo xcode-select -switch <xcode path>"
echo "for default installation:"
echo "sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer"
exit 1
fi
set -e
if [ ! -e openssl-${VERSION}.tar.gz ]; then
echo "Downloading openssl-${VERSION}.tar.gz"
curl -O http://www.openssl.org/source/openssl-${VERSION}.tar.gz
else
echo "Using openssl-${VERSION}.tar.gz"
# Remove the source directory if already exist
rm -rf "${SRCPATH}/openssl-${VERSION}"
fi
mkdir -p "${SRCPATH}"
mkdir -p "${BUILDPATH}"
mkdir -p "${LIBPATH}"
mkdir -p "${INCLUDEPATH}"
tar zxf openssl-${VERSION}.tar.gz -C "${SRCPATH}"
cd "${SRCPATH}/openssl-${VERSION}"
LIBSSL_REPO=""
LIBCRYPTO_REPO=""
for ARCH in ${ARCHS}
do
if [ "${ARCH}" == "i386" ];
then
PLATFORM="iPhoneSimulator"
else
sed -ie "s!static volatile sig_atomic_t intr_signal;!static volatile intr_signal;!" "crypto/ui/ui_openssl.c"
PLATFORM="iPhoneOS"
fi
export CROSS_TOP="${DEVELOPER}/Platforms/${PLATFORM}.platform/Developer"
export CROSS_SDK="${PLATFORM}${SDKVERSION}.sdk"
export BUILD_TOOLS="${DEVELOPER}"
echo "Building openssl-${VERSION} for ${PLATFORM} ${SDKVERSION} ${ARCH}"
echo "Please stand by..."
export CC="${BUILD_TOOLS}/usr/bin/gcc -arch ${ARCH}"
OUTPATH="${BUILDPATH}/openssl-${PLATFORM}${SDKVERSION}-${ARCH}.sdk"
mkdir -p "${OUTPATH}"
LOG="${OUTPATH}/build-openssl-${VERSION}.log"
if [[ "$VERSION" =~ 1.0.0. ]]; then
./Configure BSD-generic32 --openssldir="${OUTPATH}" > "${LOG}" 2>&1
else
./Configure iphoneos-cross --openssldir="${OUTPATH}" > "${LOG}" 2>&1
fi
# add -isysroot to CC=
sed -ie "s!^CFLAG=!CFLAG=-isysroot ${CROSS_TOP}/Platforms/${PLATFORM}.platform/Developer/SDKs/${CROSS_SDK} -miphoneos-version-min=7.0 !" "Makefile"
make >> "${LOG}" 2>&1
make install >> "${LOG}" 2>&1
make clean >> "${LOG}" 2>&1
LIBSSL_REPO+="${OUTPATH}/lib/${LIBSSL} "
LIBCRYPTO_REPO+="${OUTPATH}/lib/${LIBCRYPTO} "
done
echo "Build library..."
lipo -create ${LIBSSL_REPO}-output ${LIBPATH}/${LIBSSL}
lipo -create ${LIBCRYPTO_REPO}-output ${LIBPATH}/${LIBCRYPTO}
cp -R ${BUILDPATH}/openssl-iPhoneSimulator${SDKVERSION}-i386.sdk/include/openssl ${INCLUDEPATH}/
echo "Building done."
echo "Cleaning up..."
rm -rf ${SRCPATH}/openssl-${VERSION}
echo "Done."
保存脚本,添加脚本的执行权限(chmod +x 脚本名称)
运行脚本
不出意外是可以编译成功的,如果失败,可以以打开那个log文件,查看失败原因。
编译成功以后,把lib文件和include拷贝到你的librtmp目录(可以新建一个空得librtmp目录),在librtmp目录里面同样写一个shell脚本,脚本如下:
#!/bin/sh
SDKVERSION="7.1" #这里跟openssl的地方是一个意思
CURRENTPATH=`pwd`
ARCHS="i386 armv7 armv7s arm64"
LIBPATH="${CURRENTPATH}/lib" #这里就是刚才拷贝过来的目录,不要修改,因为librtmp最后生成的也放到了这个下面
INCLUDEPATH="${CURRENTPATH}/include" #这里就是刚才拷贝过来的目录,不要修改,因为librtmp最后生成的也放到了这个下面
LIBRTMPREPO="git://git.ffmpeg.org/rtmpdump"
BUILDPATH="${CURRENTPATH}/build"
SRCPATH="${CURRENTPATH}/src"
LIBRTMP="librtmp.a"
DEVELOPER=`xcode-select -print-path`
if [ ! -d "$DEVELOPER" ]; then
echo "xcode path is not set correctly $DEVELOPER does not exist (most likely because of xcode > 4.3)"
echo "run"
echo "sudo xcode-select -switch <xcode path>"
echo "for default installation:"
echo "sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer"
exit 1
fi
# Check whether openssl has already installed on the machine or not.
# libcrypt.a / libssl.a
set -e
echo 'Check openssl installation'
if [ -f "${LIBPATH}/libcrypto.a" ] && [ -f "${LIBPATH}/libssl.a" ] && [ -d "${INCLUDEPATH}/openssl" ]; then
echo 'Openssl for iOS has already installed, no need to install openssl'
else
echo 'Openssl for iOS not found, will install openssl for iOS'
./build-libssl.sh
echo 'Succeeded to install openssl'
fi
# Download librtmp source code from git repository
# We assuem the user already installed git client.
echo 'Clone librtmp git repository'
# Remove the directory if already exist
rm -rf "${SRCPATH}/rtmpdump"
git clone ${LIBRTMPREPO} src/rtmpdump
cd "${SRCPATH}/rtmpdump/librtmp"
LIBRTMP_REPO=""
for ARCH in ${ARCHS}
do
if [ "${ARCH}" == "i386" ];
then
PLATFORM="iPhoneSimulator"
else
PLATFORM="iPhoneOS"
fi
export CROSS_TOP="${DEVELOPER}/Platforms/${PLATFORM}.platform/Developer"
export CROSS_SDK="${PLATFORM}${SDKVERSION}.sdk"
export BUILD_TOOLS="${DEVELOPER}"
echo "Building librtmp for ${PLATFORM} ${SDKVERSION} ${ARCH}"
echo "Please wait..."
# add arch to CC=
sed -ie "s!AR=\$(CROSS_COMPILE)ar!AR=/usr/bin/ar!" "Makefile"
sed -ie "/CC=\$(CROSS_COMPILE)gcc/d" "Makefile"
echo "CC=\$(CROSS_COMPILE)gcc -arch ${ARCH}" >> "Makefile"
export CROSS_COMPILE="${DEVELOPER}/usr/bin/"
export XCFLAGS="-isysroot ${CROSS_TOP}/SDKs/${CROSS_SDK} -miphoneos-version-min=7.0 -I${INCLUDEPATH} -arch ${ARCH}"
if [ "${ARCH}" == "i386" ];
then
export XLDFLAGS="-L${LIBPATH} -arch ${ARCH}"
else
export XLDFLAGS="-isysroot ${CROSS_TOP}/SDKs/${CROSS_SDK} -miphoneos-version-min=7.0 -L${LIBPATH} -arch ${ARCH}"
fi
OUTPATH="${BUILDPATH}/librtmp-${PLATFORM}${SDKVERSION}-${ARCH}.sdk"
mkdir -p "${OUTPATH}"
LOG="${OUTPATH}/build-librtmp.log"
make SYS=darwin >> "${LOG}" 2>&1
make SYS=darwin prefix="${OUTPATH}" install >> "${LOG}" 2>&1
make clean >> "${LOG}" 2>&1
LIBRTMP_REPO+="${OUTPATH}/lib/${LIBRTMP} "
done
echo "Build universal library..."
lipo -create ${LIBRTMP_REPO}-output ${LIBPATH}/${LIBRTMP}
mkdir -p ${INCLUDEPATH}
cp -R ${BUILDPATH}/librtmp-iPhoneSimulator${SDKVERSION}-i386.sdk/include/ ${INCLUDEPATH}/
echo "Building done."
echo "Cleaning up..."
rm -rf ${SRCPATH}/rtmpdump
echo "Done."
保存脚本
运行脚本
不出意外就编译成功了。
相关推荐
7. **编译与配置**:在实际应用中,开发者需要按照特定的步骤和配置来编译libRTMP,以确保其在没有OPENSSL和zlib的情况下仍能正常工作。 8. **安全与性能权衡**:去掉加密库可能会降低安全性,因为没有加密的数据更...
这个压缩包包含了librtmp、zlib和openssl的源码,以及它们在VS2017下的编译方法和编译好的库文件。对于开发者来说,这意味着可以直接使用这些编译好的库来开发支持RTMP协议的应用,无需从头编译源码,节省了时间和...
本资源提供的是针对iPhone 15.5.sdk版本编译完成的OpenSSL库,这使得开发者能够在iOS平台上集成OpenSSL的功能,以满足应用程序中的加密需求。 OpenSSL库主要包括两个主要部分:头文件(.h)和静态库文件(.a)。...
总结,`curl+openssl编译`涉及到的是在Windows环境下,通过下载源代码、配置编译环境、编译`openssl`库,然后编译`curl`并使其与`openssl`集成的过程,以实现对HTTPS协议的支持。这个过程需要对编译原理、网络协议和...
4. 编译libcurl:解压libcurl源码,配置编译选项,指示使用刚刚编译的openssl静态库。例如,在项目设置中添加openssl的头文件和库路径,同时设置链接器选项,指定使用静态链接openssl。 5. 构建:运行nmake或使用...
这通常涉及编译源代码或安装预编译的二进制包,确保选择适合你的操作系统和架构(在这个例子中是32位)的版本。完成安装后,你需要设置环境变量,例如将`OPENSSL_ROOT_DIR`指向OpenSSL的安装目录。 接下来,获取...
2. 集成OpenSSL:为libcurl提供加密支持,需要先将OpenSSL编译为适用于iOS的静态库。 3. 编译libcurl:配置libcurl的构建选项,使其链接到OpenSSL库,并指定目标为iOS平台。 4. 将编译好的libcurl库添加到Xcode项目...
这里我们关注的是"openssl+curl编译好的库和源码.zip",这是一个包含预编译的Win32静态库以及源代码的压缩包,特别针对Windows XP系统进行了兼容性优化。让我们深入探讨一下这两个关键组件——OpenSSL和cURL,以及...
windows x64 debug 支持https的curl+openssl库,博客文章:https://blog.csdn.net/weixin_39766005/article/details/109003194
在iOS开发中,有时我们需要处理加密和网络传输等任务,这时OpenSSL和librtmp库就显得...通过编译和集成OpenSSL和librtmp的静态库,开发者可以为iOS应用添加高级的加密和RTMP推流能力,确保在不同设备上的兼容性和性能。
工程是VS2010,我的电脑是win7 64位, 这里我使用的curl版本是这里面使用的libcurl版本是7.32.0,使用的openssl版本是1.0.1f,通过开启线程下载文件,在主函数里面添加任务,就可添加下载任务
这些资源是配合apache(2.2.x)+openssl(0.9.6->1.0.1升级)过程博文环境搭建中所需要的资源,不是太好找,所以都传上来,主要有: 1.升级opensslV1.0.1b单独用到的三个文件:libeay32.dll,openssl.exe,ssleay32.dll ...
在安装Nginx 1.14.2时,首先需要分别下载并编译这三个依赖库:zlib 1.2.11、PCRE 8.36和openssl 1.0.1j。通常步骤如下: 1. 解压每个源代码包:`tar -zxvf zlib-1.2.11.tar.gz`,`tar -zxvf pcre-8.36.tar.gz`,`...
如题,mac终端下自动编译curl+ssl支持的.a库的脚本文件,供iOS开发使用,生成i386,x86_64,armv7,armv7s,arm64五大CPU架构的库文件(内含编译好的,可以直接使用),消息介绍看zip中的说明文件!(2019-11-16整理)分不够的mail...
编译ios版openssl_脚本更新.zip。更新匹配新版XCode5默认路径并新增5s的armv7s。 需要自行下载openssl源码包。 详见 http://blog.csdn.net/piao_polar/article/details/8615002
centos7 最新版本的openssl rpm安装包 openssl-1.1.1u-1.el7.x86_64.rpm openssl-debuginfo-1.1.1u-1.el7.x86_64.rpm openssl-devel-1.1.1u-1.el7.x86_64.rpm openssl-1.1.1v-1.el7.x86_64.rpm openssl-debuginfo-...
https://blog.csdn.net/aggs1990/article/details/143491893 静态编译的Qt6.8.0(win10+MSVC2022+openssl+静态运行时) 压缩包比较大,这是第一部分
1. **openssl-devel-1.0.2u-1.x86_64.rpm** 和 **openssl-devel-1.0.2k-1.x86_64.rpm**:这是开发包,包含了头文件和开发工具,供程序员使用OpenSSL库来编译和构建自己的应用程序。x86_64表示它们适用于64位架构。 ...
使用Java实现根据ca购买到的根证书 批量生产客户端需要的.bks和.cer文件,从而实现双向认证
2. 如果你从源码编译,相关的软件我已经准备好了,ActiveState TCL+OpenSSL-Win64,都在里面,直接安装。 3. 源码安装的过程都在文件中,特别注意: 【编译前提】 必须安装好Visual Studio以及MSVC的相应工具链。...