xcode 從新來過openssl項目歷程

20180703 xcode 從新來過openssl項目

  1. 新創建一個 Command Line Project
  2. 從 lxn 別人給個人他在 ubuntu 下的 openssl 1.0.2o以及他本身寫的 client.c,server.c 等 ) 的目錄拖入 libssl.a 、 libcrypto.a 和 include 目錄
  3. 從 lxn 拖入 client.c ,刪除掉本身建立的 main.c
  4. 編譯執行,又看到紅牌!!!並且是一大堆 Undefined symbols for architecture x86_64
  5. 仔細檢查個人 target 配置,看到 General 的 Linked Frameworks and Libraries 已經包含進去了以上 libssl.a 、 libcrypto.a, 檢查client.c 裏面也沒有報語法錯誤(說明 include 正確)
  6. 仔細覈對以前正確過的項目,發現 prohject 的 building setting 裏面 all Command 相差好多項目,懷疑是正確編譯以後自動創建的 從新創建一個Command Line Project,而且直接運行,而後看到了其餘項目,確認以上懷疑!
  7. 既然配置都正確,語法都正確,爲何仍是不對?回憶以前的努力,想起來多是連接的庫不是針對 Mac 編譯的,對比一下正確的項目的 libssl.a 、 libcrypto.a文件,和從 lxn 拖過來的 libssl.a 、 libcrypto.a,發現問題了!大小都不同!
  8. 想起來以前是從 mac 系統已經安裝運行的openssl 目錄 copy 並拖放過來的

openssl version

OpenSSL 1.0.2n  7 Dec 2017

whereis openssl

/usr/bin/openssl

個人 openssl位置

/usr/local/Cellar/openssl/1.0.2n/include/openssl

設置 include (這是網上別人的建議,我操做沒有成功,因此,直接總體目錄拖過來的)

./configure --prefix=/usr/local CPPFLAGS="-I/usr/local/Cellar/openssl/1.0.2n/include" LDFLAGS="-I/usr/local/Cellar/openssl/1.0.2n/lib"
  1. 從新創建新Command Line Project,拖放 mac 本身的 libssl.a 、 libcrypto.a 和 include
  2. 拖放過來 client.c 以及對應的證書文件,修改 client.c 中證書文件路徑
  3. 運行!ok

總結:Undefined symbols for architecture x86_64 錯誤,連接的libssl.a 、 libcrypto.a庫不是你的target平臺的!

下一步,找 android 平臺的 libssl.a 、 libcrypto.aandroid

相關文章
相關標籤/搜索