iOS 移植 openssl

OpenSSL在Mac Catalyst的集成:iOS应用跨macOS运行指南 在跨平台开发中,原生库的架构适配是常见挑战,尤其涉及安全通信与数据加密时。OpenSSL作为广泛使用的加密库,其原理是通过提供SSL/TLS协议实现及多种加密算法,为应用提供底层安全保障。在苹果生态中,Mac Catalyst技术允许开发者将iPad应用移植到macOS,但依赖OpenSSL等原生C库的应用会面临架构不兼容问题,导致链接失败。本文聚焦于解决这一痛点,通过修改编译配置、处理SDK路径差异及优化Xcode工程设置,实现OpenSSL在Mac Catalyst环境下的无缝集成。文中将详细解析架构适 阅读详情

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}"


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


iOS开发实战:从源码编译OpenSSL库的完整指南与避坑手册 在移动应用开发中,数据加密与网络通信安全是保障用户隐私和信息完整性的核心技术基础。OpenSSL作为业界广泛使用的开源加密库,提供了SSL/TLS协议实现、对称/非对称加密、数字证书验证等核心功能,其跨平台特性使其成为许多C/C++网络库和数据库客户端的底层依赖。然而,在iOS生态中,由于苹果对ARM架构、沙盒机制和Bitcode的特殊要求,直接使用预编译库常会遇到架构不匹配或链接错误。本文聚焦于**交叉编译**和**多架构合并**这两个关键环节,详细解析如何通过配置环境变量、使用`lipo`工具合并不同架 阅读详情

相关推荐

iOS开发实战:从源码编译到项目集成OpenSSL加密库完整指南

在移动应用开发中,数据安全与网络通信加密是基础且关键的技术需求。OpenSSL作为业界广泛采用的开源加密工具包,提供了包括TLS/SSL协议、对称/非对称加密、哈希算法等在内的完整加密套件。其核心原理在于通过标准化的加密算法库,为应用程序提供可靠的数据传输保护和身份验证机制。在iOS开发场景下,由于系统环境的特殊性,直接使用预编译库常会遇到架构兼容、Bitcode支持等工程化挑战。通过从源码进行交叉编译,开发者可以精确控制编译选项,生成适配真机与模拟器多架构的静态库,并利用Xcode的构建系统实现无缝集成。

weixin_33736649的博客 321

iOS开发之编译OpenSSL静态库

此时一个架构对应的libssl.a、libcrypto.a静态库和头文件已经生成,此时你需要把对应的架构文件夹,如openssl_arm64,放到一个自定义的文件夹下,当然也可以直接放到源码文件夹的上层文件夹下,然后删除源码文件夹,重新解压下载的OpenSSL源码压缩包,开始编译其他架构下的静态库,从第二步开始执行,一定要注意修改对应的架构名称,一定要注意修改对应的架构名称,一定要注意修改对应的架构名称,重要的事说三遍!

hbblzjy的博客 3070

openssl aes256 ecb PKCS7

最近把一款ios游戏,移植到cocos2dx,ios用到一个aes256 ecb PKCS7加密算法,现在cocos2dx要通过openssl实现,本来对这个东西补是很了解,对openssl更不熟悉。通过 咨询QQ群网友,终于把这个问题解决了.特写此博文,备份纪录。 openssl默然的PKCS5和其它平台的PKCS7有区别,导致加密后的数据后16位不一致。问题就卡这里。不多少了,直接看代码:

sujiewen的专栏 4759

iOS 开发-编译第三方库 openssl及curl

【代码】iOS 开发-编译第三方库 openssl及curl。

qq_31673283的博客 2408

嵌入式linux开发,openssl-1.1.1m移植

寞水

寞水 1657

iOS下的openssl安装文件以及安装说明

iOS下的openssl安装文件以及安装说明

【亲测免费】 OpenSSL-for-iOS:在iOS设备上轻松使用OpenSSL

OpenSSL-for-iOS 是一个开源项目,旨在为iPhone、iPad、tvOS以及MacCatalyst提供自编译的OpenSSL库。通过这个项目,开发者可以在使用Xcode和Apple官方SDK构建应用时,轻松集成OpenSSL库。项目不仅提供了详细的构建脚本,还包含一个示例应用,展示了如何在iOS应用中使用OpenSSL库进行MD5或SHA256哈希计算。 ## 项目技术分析 Op...

gitblog_01138的博客 1336

iOS版编译完成的OpenSSL库

基于iPhone15.5.sdk版本的OpenSSL库

iOS,mac编译openssl库

先去下载Openssl编译脚本: 二、执行编译 打开终端,cd到OpenSSL-for-iPhone目录,输入./build-libssl.sh,默认编译的是openssl 1.1.1c 过一会即可完成编译假如编译指定版本 还可以使用--help查看编译选项 执行完后会生成两个文件夹:include文件夹是头文件,lib是静态库,把这两个文件夹拖进项目......

thehunters的专栏 1359

OpenSSL-for-IOS

已经编译好的 IOS开发使用的openssl库。可以直接导入使用,使用方法可以看我的博客

TCN(Temporal Convolutional Networks)时序卷积网络详解及代码

TCN(Temporal Convolutional Networks)时序卷积网络详解及代码

zhulewen的博客 7883

iOS使用openssl库以及DSA加密

iOS使用OpenSSL库的一些记录

strong90的博客 1341

实验六 有源滤波器

实验六 有源滤波器一、实验目的二、仪器及设备三、预习要求画出三个电路的幅频特性曲线。四、实验内容l.低通滤波电路2.高通滤波电路3.带阻滤波电路(1)实测电路中心频率。(2)以实测中心频率为中心,测出电路幅频特性。五、实验报告六,仿真图:图 1 低通滤波器仿真图图 2 高通滤波器仿真图图 3 带阻滤波电路仿真图 一、实验目的 1.熟悉有源滤波电路构成及其特性。 2.学会测量有源滤波电路幅频特性。 二、仪器及设备 1.示波器 2.信号发生器 三、预习要求 1.预习教材有关滤波电路

胡毛毛的博客 1万+

iOS openssl 移植

iOS armv7 openssl 移植脚本: 执行configure,生成新的编译配置: ./configure iphoneos-cross --openssldir=/Users/magnision/Desktop/openssl/openssl-1.0.1e_armv7/openssl_armv7 修改 makefile 文件,将 CC=gcc修

魔都凯凯的专栏 1538

金智维KRPA实战:Excel自动化数据处理全流程解析

本文详细解析了金智维KRPA在Excel自动化数据处理中的全流程应用,涵盖COM接口和文件读写两种核心技术方案,以及销售报表生成、数据清洗和可视化仪表盘等实战案例。通过企业级应用的异常处理、性能优化和安全合规实践,显著提升数据处理效率和准确性,助力企业降本增效。

weixin_30329623的博客 598

VLSI数字信号处理系统——第九章滤波器和变换中的算法强度缩减

[课程学习] VLSI数字信号处理系统——第九章滤波器和变换中的算法强度缩减

夏风喃喃的博客 1603

gloox for iOS 开发之移植篇

最近项目不是很忙, 可以抽点时间来研究东西。以前有一个项目是用的xmppframework for iOS, 这个库还在开发当中,很多extension还不支持, 所以我开始研究gloox,这个库是C++写的,号称支持多平台。由于支持BSD linux系统,iOS其实也是这个家族的,所以我觉移植到iOS应没有什么问题。 由于纯C++的代码,所以移植起来比较顺利, gloox需要opens

Care iOS技术团队 4913

大华/华睿工业相机(摄像头)链接电脑,并用OpenCV打开

睿科是大华旗下机器视觉子公司,现在工业相机一般是华睿在产,要下载驱动程序,要到华睿官网哪里下载。由于我的电脑没有摄像头,所以摄像头序列化为0,电脑的第一个摄像头默认为0,序列号是0,1,2,3……,你是什么接口连接的就选择什么, 建议直接全选。我这里选择第二个,下载后点击安装,的你要点击识别右侧设置,设置。这个过程很简单,故不赘述。打开你的设备会在右边显示。

qq_48050838的博客 1万+

lua语言完成游戏逻辑,移植到ios 接入支付宝 完成lua和object-c的交互(各个模块独立)

游戏开发用lua实现主要逻辑,移植到iOS项目中 接入支付宝 实现lua与oc的交互 ,本文将各个模块分离开来 然后用cocos2d-x封装的luaoc链接lua和oc以完成lua接入支付宝的功能

小宇文 3492

解锁全志T113-i隐藏技能:用RISC-V核跑实时系统比STM32还稳?

本文深入探讨了全志T113-i SoC的异构架构潜力,重点解析如何利用其内置的玄铁C906 RISC-V核心独立运行实时系统。通过对比传统MCU与Linux方案,文章提供了从RISC-V核心启动、FreeRTOS移植到与Linux主核进行高效异构通信的完整实战指南,为工控等需要兼顾丰富应用与硬实时控制的场景提供了高集成度的单芯片解决方案。

ansible6ops的博客 494

S/4HANA Private Cloud 与 On-Premise 的 Key User Custom Fields 运输与升级避坑指南

本文探讨了SAP S/4HANA Cloud Private Edition和On-Premise系统中Key User Custom Fields的管理要点。文章指出,Custom Fields涉及元数据生成、对象一致性、传输治理等完整链路,操作不当会导致字段丢失或升级失败。关键建议包括:使用ATO Fiori App管理扩展项与传输绑定,配置正确的job user权限,避免在多系统并行开发同一字段。特别强调升级时需执行CFD_REGENERATE_IN_ONPREMISE报表,并通过标准传输机制推进变更

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 195

android libcurl实例,Android-21静态构建libcurl与OpenSSL

我有一个用C++ 11(线程,智能指针)编写的库。对于HTTP支持,该库使用libcurl和openssl来支持HTTPS。在此之前,lib只能在Windows和iOS上工作。但我有一个任务在Android上运行。Android-21静态构建libcurl与OpenSSL我们的要求,是未来:NDK的Android-21平台(貌似这个平台,我们得到正确的C++ 11的支持上)。的libcurl版本7...

weixin_36267013的博客 440

FPGA学习笔记(一)入门背景、软件及时钟约束的概念及程序下载与固化

使用正点原子的PFPGA开拓者V2学习,通过b站上正点原子的手把手教你学FPGA-基于开拓者V2学习。

贾saisai的博客 3277

移植libjingle v0.5x for IOS(iphone device + iphone simulator)

gtalk基本上可以算是非常好的聊天工具了,而它是如何工作的呢?我们如何在iphone上面为自己写一个gtalk玩一下呢?这一切都是基于libjingle这个库,这个Google Talk Voice and P2P interoperability Library.libjingle这个库是一个用c++写的跨平台的库,它能很好运行在win/mac os/linux(include android

Eric's Blog 2543

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

关于hostapd 2.7版本的移植问题

关于hostapd 2.7版本的移植问题libnl库openssl库hostapd 编译 事情起因,客户奇葩要求wifi热点只能连一个用户,hostap.conf添加参数max_num_sta=1可以达到要求,但是有新的问题:ios系统本限制之后连接会提示密码错误,wifi模块供应商说的hostapd的bug。hostapd2.7版本没问题。国科8602原厂公版的hostapd版本是2.5,...

qq_22580995的博客 426

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

【openssl-1.1.1k】移植openssl-1.1.1k到SDX12 armv7平台

源码下载 下载链接地址 /source/old/1.1.1/index.html (openssl.org)https://www.openssl.org/source/old/1.1.1/ 选择如下软件包openssl-1.1.1k.tar.gz 解压openssl-1.1.1k.tar.gz tar -xvf openssl-1.1.1k.tar.gz 将openssl-1.1.1k目录下新增src目录,将所有文件放到src目录下 cd openssl-1.1.1k mkdir s.

wgl307293845的博客 1870

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

上一篇: iOS :undefined symbols for architecture x86_64
下一篇: iOS "vtable for XXX", referenced from:
tspangle
博客等级 码龄19年 81粉丝 88原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值