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}"
以上为大牛的脚本.自己做个记录.