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.a