`
dingran
  • 浏览: 375835 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ios编译openssl曲折的过程纪录

 
阅读更多

废了两天的劲,还是我笨呢,总算搞定了,希望可以帮助后来者们。

 

1.下载OpenSSL源代码库:

http://www.openssl.org/source/

 

2.分别编译arm7,ram6和i386的三个架构的静态库。

 

arm7的命令是:

 

执行Config文件:

./configure BSD-generic32 --openssldir=/Users/<用户名>/openssl-1.0.1c/新建的arm7目录

 

增加-DEBUG_SAFESTACK,是为了可以编译出可以Debug的库,试了不好用,希望有人能指点一下。

 

修改Makefile:这个是示意命令,不直接使用

 

CC= /Applications/Xcode\ 4.4.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc -arch armv7

CFLAG= -DOPENSSL_THREADS -pthread -D_THREAD_SAFE -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DTERMIOS -O3 -fomit-frame-pointer -Wall -isysroot /Applications/Xcode\ 4.4.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk

 

arm6和arm7一样,只是-arch armv7变为-arch armv6即可。

 

最终使用的修订后的命令如下:

 

CC= /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc -arch armv7

CFLAG= -DOPENSSL_THREADS -pthread -D_THREAD_SAFE -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DTERMIOS -O3 -fomit-frame-pointer -Wall -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk

 

i386的是给模拟器用的

 

执行Config文件:

./configure BSD-generic32 --openssldir=/Users/<用户名>/openssl-1.0.1c/新建的i386目录

 

 

修改Makefile:示意而已,先别急

 

CC= /Applications/Xcode\ 4.4.1.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc -arch i386

CFLAG= -DOPENSSL_THREADS -pthread -D_THREAD_SAFE -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DTERMIOS -O3 -fomit-frame-pointer -Wall -isysroot /Applications/Xcode\ 4.4.1.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.1.sdk

 

修改后的命令是:

 

CC= /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc -arch i386

CFLAG= -DOPENSSL_THREADS -pthread -D_THREAD_SAFE -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DTERMIOS -O3 -fomit-frame-pointer -Wall -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.1.sdk

 

 

实际上我这台机子安装的xcode路径很变态,不是在用户目录下,而是跑到根目录下了,并且Xcode.app目录变成了Xcode 4.4.1.app,这些都对我造成了很大影响,变态,强烈谴责上上个机主。

 

OS版本的sdk路径是:

 

/Applications/Xcode 4.4.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk

 

模拟器版本的sdk路径是:

 

/Applications/Xcode 4.4.1.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.1.sdk

 

需要注意的是:/Xcode 4.4.1.app/需要是这样才行:/Xcode\ 4.4.1.app/

这也是最后的疑问,能编译出2个静态库,但是有错误:

 

/bin/sh: /Applications/Xcode\: No such file or directory

make[2]: *** [link_app.] Error 127

make[1]: *** [openssl] Error 2

make: *** [build_apps] Error 1

 

看提示,可能就是这个反斜杠导致的问题!所以我想重新装xcode,直接用最新版本的。

 

 

解决办法:

 

先将Xcode 4.4.1.app文件夹名称修改成Xcode.app,然后路径就使用/Applications/Xcode.app/*,这样就没有空格的干扰了,注意此时的xcode不能使用了,必须在完事后修改回来。mv Xcode.app Xcode\ 4.4.1.app

 

make完毕后会出现如下提示:

 

making all in tools...

make[1]: Nothing to be done for `all'.

 

此时执行make install,编译出的库文件就安装到指定的目录中了。

 

每次编译新一种库都要先清理上次的残留,make clean,但还是会有影响,所以我每次都删除后,解压出新的重新开始。clean失败的原因也跟你mkdir的新文件夹的名字有关系,比如不能是lib*这样的,陷阱真多啊,别的名字也不行,关键是下一级目录中有lib文件夹,遇到后它也停止clean了,变态吧,呵呵。

 

合并3个版本的库:

 

lipo -create libarm7/lib/libssl.a openssl_arm6/lib/libssl.a libi386/lib/libssl.a -output libssl.a

 

lipo -create libarm7/lib/libcrypto.a openssl_arm6/lib/libcrypto.a libi386/lib/libcrypto.a -output libcrypto.a

 

查看生成的库是否正常:

 

lipo -info libssl.a 

Architectures in the fat file: libssl.a are: armv7 armv6 i386

 

lipo -info libcrypto.a 

Architectures in the fat file: libcrypto.a are: armv7 armv6 i386

 

OK,开始使用了,这回可是正确的库了,强烈鄙视openssl的团队,编译出错还能出库,库也不好用,害死我了,靠。

0
0
分享到:
评论

相关推荐

    iOS版编译完成的OpenSSL库

    本资源提供的是针对iPhone 15.5.sdk版本编译完成的OpenSSL库,这使得开发者能够在iOS平台上集成OpenSSL的功能,以满足应用程序中的加密需求。 OpenSSL库主要包括两个主要部分:头文件(.h)和静态库文件(.a)。...

    编译ios版openssl脚本

    编译ios版openssl_脚本更新.zip。更新匹配新版XCode5默认路径并新增5s的armv7s。 需要自行下载openssl源码包。 详见 http://blog.csdn.net/piao_polar/article/details/8615002

    OpenSSL 1.1.1 iOS和Android的编译脚本

    本文将详细介绍如何使用提供的"OpenSSL 1.1.1 iOS和Android的编译脚本"进行编译过程。 首先,了解编译脚本的作用:这个脚本是为了简化在iOS和Android平台编译OpenSSL 1.1.1版本的流程。它通过SSH命令自动化了源代码...

    iOS版openssl静态库

    这个压缩包提供了预编译的iOS版OpenSSL静态库,方便开发者直接集成到他们的项目中,无需从源码编译,节省了时间和资源。OpenSSL库包含了各种加密算法,如RSA、AES、DES等,以及SSL/TLS协议实现,对于需要处理HTTPS...

    ios openssl 编译批处理

    在编译过程中,我们需要应用这些补丁以适配iOS的不同设备架构,如i386(模拟器)、armv7和armv6。可以使用`patch`命令应用补丁,例如: ``` patch -p1 ``` 4. **配置编译**:执行批处理脚本`openssl_make_macOS...

    mac_ios_openssl_1.1.1

    iOS编译OpenSSL静态库(使用脚本自动编译) ARCH_LIST=("armv7" "armv7s" "arm64" "i386" "x86_64") -miphoneos-version-min=6.0

    android编译openssl静态库.a 动态库.so

    - **编译错误**:编译过程中可能出现错误,需要根据错误信息进行调试和修复。 编译完成后,将生成的`.a`或`.so`库文件添加到Android项目的`jniLibs`目录下,然后在Java或Kotlin代码中通过JNI(Java Native ...

    windows下编译openssl 1.1.1所需要的东西打包

    首先,Perl是Perl编程语言的一个实现,它在OpenSSL的编译过程中用于执行配置脚本和自动化任务。例如,Configure脚本是用Perl编写的,它会根据目标平台和用户选择的选项来配置构建环境。ActivePerl-5.26.3.2603-MSWin...

    OpenSSL3.0.0静态编译

    - 如果编译过程中遇到问题,可能需要检查Perl和NMAKE的版本,或者调整配置选项。 5. **测试和安装**: - 编译成功后,执行`nmake test`来运行单元测试,确保编译的库功能正常。 - 使用`nmake install`将编译好的...

    mips下编译openssl.rar

    9. **文档阅读**:在实际操作过程中,仔细阅读OpenSSL的官方文档和编译指南,因为编译过程可能因版本和具体需求而异。 通过以上步骤,你应该能够在MIPS架构上成功编译OpenSSL库。这个过程虽然相对复杂,但它是确保...

    交叉编译openssl,使arm设备的qt程序能支持https请求

    在linux系统上,用自带的交叉编译工具对openssl源码进行交叉编译(该过程可参考百度),生成对应的静态和动态库,然后将生成的库拷贝至arm设备的QT库锁存放的位置,这样的目的是当我们在设备上跑qt程序时,使用https...

    CentOS7环境下编译的openssl 3.0动态库和静态库

    本资源提供了在CentOS7环境下编译的OpenSSL 3.0版本的动态库和静态库,这将对需要在该操作系统上进行安全编程或系统集成的开发者非常有帮助。 首先,让我们深入理解OpenSSL 3.0。OpenSSL 3.0是一个重大的版本更新,...

    windows下编译好的openssl

    3. ActivePerl-5.16.3.1604-MSWin32-x86-298023.msi:Perl编程语言的安装程序,Perl有时在构建或自动化OpenSSL编译过程时被用作脚本语言。 4. 说明.txt:这很可能是提供编译、安装或使用这些组件的说明和指南。 5. ...

    用C++编译 Openssl Engine及分享一个Openssl Engine框架

    本模板程序定义了实现openssl ENGINE的Engine框架。 实现的基本思路是要通过Engine来替换openssl原来的 ... 如果在使用过程中有任何问题。 在windows上编译,使用vc2005或vc2008 在linux下,请运行 make

    编译openssl

    linux 2.6.28内核下编译openssl,正常编译openssl-0.9.8a.tar.gz(成功).配套

    在win7(32bit)下编译openssl完整过程--所需软件

    本资源主要配合博文:在win7(32bit)下编译openssl完整过程,相关的软件有(均从官网下载): ActivePerl-5.14.2.1402-MSWin32-x86-295342.msi awk.exe nasm-2.10rc15-installer.exe openssl-1.0.1c.tar.gz zlib-...

    ios_openssl_build.zip

    解压这个文件后,你将得到OpenSSL的源代码,可以开始编译过程。通常,编译步骤包括配置、编译和安装: 1. **配置**:使用`./config`命令指定目标架构和选项。对于iOS,我们需要指定iOS SDK路径、目标架构和静态库...

    跨平台编译openssl.zip

    对于OpenSSL,这意味着需要了解不同平台的编译工具,如Linux的gcc、MacOS的clang、iOS的Xcode以及Android的NDK,并且要根据每个平台的特定需求调整编译选项。 4. **Linux编译**: 在Linux下,通常使用`./config`命令...

    openssl-1.1.1g编译、交叉编译方式.rar

    linux下编译/交叉编译openssl-1.1.1g生成动态库和静态库方法: 一、编译linux版本 1. cp openssl-1.1.1g.tar.gz /opt/ 2. tar -zxvf openssl-1.1.1g.tar.gz 3. mkdir build 4. ./config --prefix=/opt/openssl-1.1.1...

Global site tag (gtag.js) - Google Analytics