20180703 xcode 從新來過openssl項目
- 新創建一個 Command Line Project
- 從 lxn 別人給個人他在 ubuntu 下的 openssl 1.0.2o以及他本身寫的 client.c,server.c 等 ) 的目錄拖入 libssl.a 、 libcrypto.a 和 include 目錄
- 從 lxn 拖入 client.c ,刪除掉本身建立的 main.c
- 編譯執行,又看到紅牌!!!並且是一大堆 Undefined symbols for architecture x86_64
- 仔細檢查個人 target 配置,看到 General 的 Linked Frameworks and Libraries 已經包含進去了以上 libssl.a 、 libcrypto.a, 檢查client.c 裏面也沒有報語法錯誤(說明 include 正確)
- 仔細覈對以前正確過的項目,發現 prohject 的 building setting 裏面 all Command 相差好多項目,懷疑是正確編譯以後自動創建的 從新創建一個Command Line Project,而且直接運行,而後看到了其餘項目,確認以上懷疑!
- 既然配置都正確,語法都正確,爲何仍是不對?回憶以前的努力,想起來多是連接的庫不是針對 Mac 編譯的,對比一下正確的項目的 libssl.a 、 libcrypto.a文件,和從 lxn 拖過來的 libssl.a 、 libcrypto.a,發現問題了!大小都不同!
- 想起來以前是從 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"
- 從新創建新Command Line Project,拖放 mac 本身的 libssl.a 、 libcrypto.a 和 include
- 拖放過來 client.c 以及對應的證書文件,修改 client.c 中證書文件路徑
- 運行!ok
總結:Undefined symbols for architecture x86_64 錯誤,連接的libssl.a 、 libcrypto.a庫不是你的target平臺的!
下一步,找 android 平臺的 libssl.a 、 libcrypto.aandroid