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