當前最新版本1.0.0d。
2、編譯openssl
openssl是乙個c語言函式庫,為方便在xcode中使用,我們需要把它編譯為靜態庫。
開啟crypto/ui/ui_openssl.c進行編輯。 將
static
volatile sig_atomic_t intr_signal;
修改為:
static volatile int intr_signal;
否則會出現乙個編譯錯誤。
2.1 編譯 i386 庫(用於iphone模擬器)
執行以下命令:
mkdir ssllibs
將在使用者主目錄下建立ssllibs目錄。
切換到openssl-1.0.0a安裝(解壓)目錄,在其下建立3個子目錄:
cd openssl-1.0.0a
mkdir openssl_armv6 openssl_armv7 openssl_i386
執行目錄下的congfigure:
./configure bsd-generic32 --openssldir=/users
cc= gcc
修改為:
cc= /developer/platforms/iphonesimulator.platform/developer/usr/bin/gcc -arch i386
下一行,在cflag = 的後面增加
-isysroot /developer/platforms/iphonesimulator.platform/developer/sdks/iphonesimulator4.0.sdk
進行編譯:
make
make install
檢查 openssl_i386/lib目錄下 libcrypto.a 和 libssl.a 是否生成。
2.2 編譯 armv6 庫(armv6架構的ios使用)
先將編譯好的i386 庫儲存到 ssllibs 目錄:
mv openssl_i386 ../ssllibs
清除上次編譯的配置:
make clean
執行configure,重新生成新的編譯配置:
./configure bsd-generic32 --openssldir=/users
修改makefile 檔案,將 cc=gcc修改為:
cc= /developer/platforms/iphoneos.platform/developer/usr/bin/gcc -arch armv6
注意,這裡是iphoneos.platform而不是先前的 iphonesimulator.platform了。
同樣,需要在cflag=後面加上:
-isysroot /developer/platforms/iphoneos.platform/developer/sdks/iphoneos4.0.sdk
可以進行編譯了:
make
make install
檢查 openssl_armv6/lib 目錄下 libcrypto.a 和 libssl.a 是否生成。
2.3 編譯 armv7 庫(armv7 架構的 ios 使用)
先將先前編譯好的armv6 庫移到 ssllibs 目錄。
mv openssl_armv6 ../ssllibs
清除前面編譯配置:
make clean
執行configure配置編譯環境:
./configure bsd-generic32 --openssldir=/users
修改makefile 檔案,將 cc=cc修改為:
cc= /developer/platforms/iphoneos.platform/developer/usr/bin/gcc -arch armv7
注意,gcc 編譯選項 arch 由 armv6 變為了 armv7。
同時,在cflag=後面新增:
-isysroot /developer/platforms/iphoneos.platform/developer/sdks/iphoneos4.0.sdk
進行編譯:
make make
install
檢查 openssl_armv7/lib 目錄下 libcrypto.a 和 libssl.a 是否生成。
把編譯結果移到ssllibs目錄:
mv openssl_armv7 ../ssllibs
2.4 製作「通用」靜態庫
通用靜態庫是乙個「多架構」檔案,它是多個單一架構靜態庫的融合。
製作「通用」靜態庫需要使用mac os x 的 lipo 命令(具體請參考 mac os x 手冊)。
合併 libcrypto.a 庫:
lipo -create ../ssllibs/openssl_i386/lib/libcrypto.a ../ssllibs/openssl_armv6/lib/libcrypto.a ../ssllibs/openssl_armv7/lib/libcrypto.a -output ../ssllibs/libcrypto.a
合併libssl.a 庫:
lipo -create ../ssllibs/openssl_i386/lib/libssl.a ../ssllibs/openssl_armv6/lib/libssl.a ../ssllibs/openssl_armv7/lib/libssl.a -output ../ssllibs/libssl.a
3、在 xcode 專案的進行設定
把 openssl 的 include 目錄拷貝到專案資料夾。
把 libcrypto.a 和 libssl.a 檔案拷貝到專案資料夾。
把 libcrypto.a 和 libssl.a 檔案拖到專案的 framework 組中。
在target 上右鍵,選擇 get info,將 library search path 設定為:
$(inherited) 「$(srcroot)」
將user header search paths 設為 include。
選中always search user paths 選項。
現在可以在你的iphone專案中實用openssl了。
4、寫乙個應用 openssl 的小例子
「add
à existing frameworks
à others…」,把libssl.a和libcrypto.a加進來(即我們前面製作的「通用」庫)。
開啟專案info 的 build 設定,在 header search paths 中加入 openssl 的標頭檔案路徑,如:
/users//library/openssl-1.0.0a/include
注意,勾上「recursive」(搜尋子目錄)。
接下來寫點簡單的**。為求省事,我們把所有**寫在main.m裡:
#import
#include
void
md5(
nsstring
*);
intmain(
intargc,
char
*argv)
void
md5(
nsstring
* string)
nslog
(@"input string:%@"
,string);
nslog
(@"md5:%@"
,outstrg); }
你可以在控制台檢視程式的輸出:
input string:12345
md5:827ccb0eea8a706c4c34a16891f84e7b
完
在你的 iOS App中 使用 OpenSSL 庫
當前最新版本1.0.0d。2 編譯openssl openssl是乙個c語言函式庫,為方便在xcode中使用,我們需要把它編譯為靜態庫。開啟crypto ui ui openssl.c進行編輯。將 static volatile sig atomic t intr signal 修改為 static...
在AndroidStudio中使用OpenCV總結
簡單2步 模組的xml檔案 模組的gradle android 參好上面 然後run執行正常就可以下一步了,快了快了加油 arguments dandroid stl c shared 這裡是要新增的不然可能無法載入so 這裡是新增的 sourcesets 自己按照實際情況新增,只是我的總結。這裡我...
iOS app中使用webview的時機
使用hybrid開發,有幾個好處 1 web程式設計師參與開發 2 跨平台 3 快速更新 缺點主要是ui體驗比不上原生,比如滾動 彈性 拖拽 動畫等,web的效果現在還是比不上native。所以實際專案中,選擇哪種開發方式,取決於具體的需求 1 首頁 首頁容易有比較大的變化,一般資料也比較多,所以用...