iOS 移植 openssl

1:到  openssl 官网(https://www.openssl.org/source/)下载源码.注:不用解压.

Tarballs

The table below lists the latest releases for every branch. Old releases can be found at https://www.openssl.org/source/old.

Alternatively, you can find all distribution tarballs in our FTP area, ftp://ftp.openssl.org/source/. A list of FTP mirror sites can be found here.

Development snapshots can be found at ftp://ftp.openssl.org/snapshot/.

We also maintain a clone at GitHub, https://github.com/openssl/openssl.

   Bytes      Timestamp       Filename
________ ____________________ ____________________________
 3822386 Mar 19 13:53:47 2015 openssl-0.9.8zf.tar.gz (MD5) (SHA1) (PGP sign)
 4095201 Mar 19 13:53:47 2015 openssl-1.0.0r.tar.gz (MD5) (SHA1) (PGP sign)
 4533406 Mar 19 13:53:47 2015 openssl-1.0.1m.tar.gz (MD5) (SHA1) (PGP sign)
 5262089 Mar 19 13:53:47 2015 openssl-1.0.2-latest.tar.gz
 5262089 Mar 19 13:53:47 2015 openssl-1.0.2a.tar.gz (MD5) (SHA1) (PGP sign)  [LATEST]
 1425056 Jan  4 23:50:26 2015 openssl-fips-2.0.9.tar.gz (MD5) (SHA1) (PGP sign)
 1404226 Jan  4 23:50:26 2015 openssl-fips-ecp-2.0.9.tar.gz (MD5) (SHA1) (PGP sign)


红色为最新的源码.

2:将build_openssl.sh与openssl源码放在同一目录下.

3:修改内容:

LIB_NAME="openssl-1.0.0r"

LIB_NAME修改为下载的源码的文件名,注:不带后缀.

如下载的最新的源码:

LIB_NAME="openssl-1.0.2a"

build_openssl.sh源码:

其中:ARCHS 与 ADKS为一一对应的,如取ARCHS[1],使用的SDK为SDKS[1]

ARCHS=("arm64" "armv7s" "armv7" "i386")
SDKS=("iphoneos" "iphoneos" "iphoneos" "iphoneos")

#!/bin/bash
#
#  Copyright (c) 2013 Claudiu-Vlad Ursache <claudiu@cvursache.com>
#  MIT License (see LICENSE.md file)
#
#  Based on work by Felix Schulze:
#
#  Automatic build script for libssl and libcrypto 
#  for iPhoneOS and iPhoneSimulator
#
#  Created by Felix Schulze on 16.12.10.
#  Copyright 2010 Felix Schulze. All rights reserved.
#
#  Licensed under the Apache License, Version 2.0 (the "License");
#  you may not use this file except in compliance with the License.
#  You may obtain a copy of the License at
#
#  http://www.apache.org/licenses/LICENSE-2.0
#
#  Unless required by applicable law or agreed to in writing, software
#  distributed under the License is distributed on an "AS IS" BASIS,
#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#  See the License for the specific language governing permissions and
#  limitations under the License.

set -u
 
# Setup architectures, library name and other vars + cleanup from previous runs
ARCHS=("arm64" "armv7s" "armv7" "i386")
#SDKS=("iphoneos" "iphoneos" "iphoneos" "macosx")
SDKS=("iphoneos" "iphoneos" "iphoneos" "macosx")
#LIB_NAME="openssl-1.0.2a"
LIB_NAME="openssl-1.0.0r"
TEMP_LIB_PATH="/tmp/${LIB_NAME}"
LIB_DEST_DIR="lib"
HEADER_DEST_DIR="include"
rm -rf "${HEADER_DEST_DIR}" "${LIB_DEST_DIR}" "${TEMP_LIB_PATH}*" "${LIB_NAME}"
 
# Unarchive library, then configure and make for specified architectures
configure_make()
{
   ARCH=$1; GCC=$2; SDK_PATH=$3;
   LOG_FILE="${TEMP_LIB_PATH}-${ARCH}.log"
   tar xfz "${LIB_NAME}.tar.gz"
   pushd .; cd "${LIB_NAME}";

   ./Configure BSD-generic32 --openssldir="${TEMP_LIB_PATH}-${ARCH}" &> "${LOG_FILE}"
   echo “ECHO: ./Configure BSD-generic32 --openssldir=${TEMP_LIB_PATH}-${ARCH}”
   make CC="${GCC} -arch ${ARCH}" CFLAG="-isysroot ${SDK_PATH}" &> "${LOG_FILE}";
   echo “ECHO: make CC=${GCC} -arch ${ARCH} CFLAG=-isysroot ${SDK_PATH}” 
   make install &> "${LOG_FILE}";
   popd; rm -rf "${LIB_NAME}";
}
for ((i=0; i < ${#ARCHS[@]}; i++))
do
   SDK_PATH=$(xcrun -sdk ${SDKS[i]} --show-sdk-path)
   GCC=$(xcrun -sdk ${SDKS[i]} -find gcc)
   echo “ECHO: ${ARCHS[i]} ${GCC} ${SDK_PATH}”
   configure_make "${ARCHS[i]}" "${GCC}" "${SDK_PATH}"
done

# Combine libraries for different architectures into one
# Use .a files from the temp directory by providing relative paths
create_lib()
{
   LIB_SRC=$1; LIB_DST=$2;
   LIB_PATHS=( "${ARCHS[@]/#/${TEMP_LIB_PATH}-}" )
   LIB_PATHS=( "${LIB_PATHS[@]/%//${LIB_SRC}}" )
   lipo ${LIB_PATHS[@]} -create -output "${LIB_DST}"
}
mkdir "${LIB_DEST_DIR}";
create_lib "lib/libcrypto.a" "${LIB_DEST_DIR}/libcrypto.a"
create_lib "lib/libssl.a" "${LIB_DEST_DIR}/libssl.a"
 
# Copy header files + final cleanups
mkdir -p "${HEADER_DEST_DIR}"
cp -R "${TEMP_LIB_PATH}-${ARCHS[0]}/include" "${HEADER_DEST_DIR}"
rm -rf "${TEMP_LIB_PATH}-*" "{LIB_NAME}"


以上为大牛的脚本.自己做个记录.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值