編譯ios平臺的支援arm64和x86_64的通用openssl靜態庫
文章轉自:
對於x86_64,wiki上有這句話:
x86-64 (also
known as x64, x86_64 and AMD64)
is the 64-bit version
of the x86instruction
set.
也就是說是64位的x86指令集。可以這樣理解armv7 , armv7s對應真機的32位處理器,i386對應模擬器的32位模擬器;arm64對應真機的64位模擬器,x86_64對應模擬器的64位模擬器。
下面是具體的編譯步驟:
先下載openssl的原始檔的最新版本
在openssl-1.0.1h目錄下建立5個資料夾,分別為arm64,armv7,armv7s,i386 , x86_64。它們分別用於存放指定平臺的庫檔案。
****編譯i386平臺
開啟/openssl-1.0.1h/crypto/ui/ui_openssl.c進行修改,將
static volatile sig_atomic_t intr_signal;
修改為
static volatile int intr_signal;
開啟終端,進入到openssl-1.0.1h目錄,輸入命令
./configure BSD-generic32 --openssldir=/Users/Kyo/Desktop/openssl-1.0.1h/i386
(/Users/Kyo/Desktop/openssl-1.0.1h/i386為上面建立的i386資料夾路徑)
命令完成後,在openssl-1.0.1h目錄下會生成很多檔案,找到其中的makefile檔案並開啟,
CC= gcc
修改為
CC= gcc -arch i386
在下一行CFLAG = ......的最後增加
-isysroot/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator8.1.sdk
(將紅色部分替換為你自己的sdk路徑)
在終端執行命令
make
再接著執行命令
make install
執行完成後,在i386資料夾下將會生成多個檔案和資料夾,/lib目錄下存放著編譯成功的庫檔案libcrypto.a 和 libssl.a
****編譯其它平臺
接著我們需要編譯其它平臺的庫檔案,先在終端執行命令make clean 清空之前的配置和快取(發現執行這個命令並不能完成清空,我的做法是,先儲存上面生成的i386的庫檔案,執行make clean命令,然後刪除整個openssl-1.0.1h,重新解壓一個openssl-1.0.1h,然後再繼續其它平臺的庫檔案編譯)
既然是新解壓的openssl-1.0.1h,我們需要重新上面的幾個步驟,修改ui_openssl.c,執行configure命令,修改makefile檔案。
修改makefile跟i386中有所不同,
CC= gcc
修改為
CC= gcc -arch armv7
(其中armv7是指編譯armv7平臺下的庫檔案,如果改為arm64,就是編譯arm64平臺下的庫檔案)
在下一行CFLAG = ......的最後增加
-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.1.sdk -miphoneos-version-min=6.0
(i386中的路徑是iPhoneSimulator.platform,而其它架構都是iPhoneOS.platform,請注意x86_64是用iPhoneSimulator.platform的sdk)
在終端執行命令
make
再接著執行命令
make install
執行完成後,在armv7資料夾下將會生成多個檔案和資料夾,/lib目錄下存放著編譯成功的庫檔案libcrypto.a 和 libssl.a
如此重複生成各個平臺的庫檔案後,開始合併操作。
****製作“通用”靜態庫
執行終端命令合併 libcrypto.a 庫(確保終端中的路徑正確):
lipo -create /x86_64/lib/libcrypto.a /i386/lib/libcrypto.a /armv7/lib/libcrypto.a /armv7s/lib/libcrypto.a /arm64/lib/libcrypto.a -output /libcrypto.a
(紅色部分替換為各個.a檔案的路徑,綠色部分替換為最終合併結果的輸出路徑)
執行終端命令合併 libssl.a 庫(確保終端中的路徑正確):
lipo -create /x86_64/lib/libssl.a /i386/lib/libssl.a /armv7/lib/libssl.a /armv7s/lib/libssl.a /arm64/lib/libssl.a -output /libssl.a
(跟前面一樣,將路徑修改為正確路徑)
相關推薦
編譯ios平臺的支援arm64和x86_64的通用openssl靜態庫
文章轉自: 對於x86_64,wiki上有這句話: x86-64 (also known as x64, x86_64 and AMD64) is the 64-bit version of the x86instruction set. 也就是說是6
iOS開發筆記之二十八——檢視靜態庫檔案支援的arm64指令集架構的方法
1、蘋果store馬上就要開始對上架的app實行64位支援檢查了,截至到2015年2月1日。我們團隊維護開發的產品已經收到警告了, 工程裡用到了很多第三方的SDK,而這些SDK有的還不支援64位指令集。要從網上檢索最新的SDK並檢查是否支援64位架構,本篇文章就是介紹 怎樣
CEF編譯整理、支援MP3和MP4的整理以及.NET的呼叫
由於chrome目前不支援NPAPI,專案中需要用到NPAPI控制元件,所以嘗試編譯低版本的chrome;關於3.2357.1287.g861c26e、3.2526.1373.gb660893、3.2623.1397.gaf139d7 的編譯版本,三個都支援MP3\MP4。下
PJSIP 【編譯多平臺支援的靜態庫】
好久沒有寫部落格了,這也算是我步入新工作後的第一篇技術博文吧。在進入新公司前,早就有了技術層進入下一個迭代的準備,但很多事情是意想不到的,就像我以 C# 程式設計師的身份面試入職的,而今卻是一個全職的 IOS 開發。從 C# 到 Objective-C 的切換,還是有不少成本的,加上今年又推出了 Swift
iOS編譯OpenSSL靜態庫(使用指令碼自動編譯)
使用指令碼編譯:https://github.com/gitusrs/openssl-ios-build-shell-script 1、該指令碼只是一個OpenSSL編譯指令碼,使用時需要自己下載OpenSSL原始碼(openssl-*.tar.gz) 2、將 openssl-
windows下libcurl+openssl靜態庫編譯(32位和64位靜態庫-不同openssl版本)
關於windows下編譯libcur相關的庫的文章是一大把,但是支援ssl的相關文章相對少一些,能按照對應要求編譯通過的更少,編譯成靜態庫的更少!再就是更不用說同事支援win64位系統的了,如下為我們開發過程中實際編譯通過的總結,一來希望後續使用人員能夠看到,為廣大網友做點實
android studio 利用gradle和cmakelist生成c++靜態庫.a的方法總結
nts 需求 roi ++ build mat 頭文件 方法 ext android生成靜態庫的方法有兩種,一種是編輯android.mk文件,一種是編輯cmakelist文件。前一種沒做研究,因為用的ide是android studio,所以直接利用gradle調用cma
Linux編譯多個不同目錄下的檔案以及靜態庫、動態庫的使用
轉自:http://blog.csdn.net/luotuo44/article/details/16970841 一、 編譯不同目錄下的多個檔案 各個檔案的佈局如下: head.h檔案的程式碼:
iOS將多個第三方sdk打包成靜態庫
前段時間做了個sdk打包成動態庫,發現使用非常方便各種好處也特別多,然後在最後將APP打包時出問題了,打包時候動態庫打不進去,想了很多辦法還是沒有解決,又因為趕時間所以只能重新打成靜態庫了。 在打成靜
Linux下編譯多個不同目錄下的檔案以及靜態庫、動態庫的使用
先看兩篇博文,作為基礎知識。如果對C/C++編譯連結過程都瞭解的話,可以跳過不看。一、 編譯不同目錄下的多個檔案各個檔案的佈局如下: head.h檔案的程式碼:#ifndef HEAD_H#define HEAD_Hint add(int a, int b); #endif /*HEAD
[iOS]FFmpeg框架在iOS平臺上的編譯和使用
_id hex ips selector 文件 str content pat tps 使用環境 Mac OS Yosemite 10.10.5 開發工具 Xcode 7.0 Terminal 需要的文件鏈接 gas-preprocessor yasm F
iOS開發~製作同時支援armv7,armv7s,arm64,i386,x86_64的靜態庫.a
一、概要 平時專案開發中,可能使用第三方提供的靜態庫.a,如果.a提供方技術不成熟,使用的時候就會出現問題,例如: 在真機上編譯報錯:No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=x86
iOS 指令集架構 armv6、armv7、armv7s、arm64、x86_64、i386
clas 通用 圖片 pil 而後 支持 iphone 8 地址 目標 一、ARM架構 ARM架構過去稱作進階精簡指令集機器(Advanced RISC Machine,更早稱作:Acorn RISC Machine),是一個32位精簡指令集(RISC)處理器架構,AR
Mac OS X10.10_xcode6.1_ios8.1環境下,編譯lame靜態庫libmp3lame.a,支持arm64 armv7s x86_64 i386 armv7指令集
ces mod dir helper plain per 代碼 then -m 近期升級了系統到Mac OS X 10.10 而且更新了XCode6.1和iOS 8
iOS 音訊錄製AMR和WAV互轉(支援64位)
公司專案中涉及到語音錄製的功能,在錄音格式方面遇到一些小問題現在拿出來與大家分享一下。 眾所周知,iOS 音訊錄製是不支援AMR格式的。但 Android 好像是預設是AMR格式的。兩邊格式不同必然有一方做出妥協的。這裡只簡單介紹一下iOS 格式轉碼的方法。 1、音訊錄製簡介 在AVFoun
軟體開發,標準化流水線式開發的實施構想 Internet 服務匯流排 嵌入式通用行業應用平臺的靈魂和搭建 快速原型開發模式在實際開發過程中的應用 公用物件請求代理(排程)程式體系結構(CORBA) UML軟體設計基礎(UML圖詳解) (篇01)企業如何軟體商業化? (篇02)企業如何軟體商業化? 在
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
React Native 極光推送的實現,支援Android和iOS
在接到需求後對如何實現進行了預研,發現有極光官網維護的 jpush-react-native 和 React Native 中文網維護的 react-native-jpush 供我們使用,我選擇的是 jpush-react-native。 一,相關版本資訊 { "nam
為Android平臺編譯支援OpenCL的Opencv靜態庫
Opencv中封裝了OpenCL,直接下載的Opencv4Android SDK中提供了一些相關的庫,我們可以利用nm命令檢視這些庫是否包含opencl的相關函式。ocl整合在core中,所以我們直接檢視libopencv_core.a這個庫。 nm -D
ffmpeg的那點小事兒--編譯ffmpeg同時支援libx264(視訊編碼)和libfdk(音訊編碼)
ffmpeg的那點小事兒--編譯ffmpeg同時支援libx264(視訊編碼)和libfdk(音訊編碼) 主要是shell指令碼編寫上的問題,直接上指令碼程式碼 #!/bin/bash #1、首先:定義下載的庫名稱 source="ffmpeg-4.0.2" #2、其次:定義".h/
qt *.pro 和原始碼通用巨集定義(如條件編譯)
*.pro中: DEFINES += _qt_msvc_2015 contains(DEFINES,_qt_msvc_2015){ QT += webengine QT