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

相关文章
相关标签/搜索