最近要在 android 上做一个 openssl 项目,使用 JNI ,结果 C 程序总是找不到一大堆 .h文件,所以,想到先在 Xcode 上试试,结果也是一大堆红牌错误,例如:openssl/ssl.h,提示 No such file or directory
等待 Xcode 这边正确了,再去对付android studio上的 NDK,JNI 之类
1、安装xcode命令行工具
xcode-select --install
已经安装了,xcode-select: error: command line tools are already installed, use "Software Update" to install updates
2、找到 Xcode 的 include 目录
xcode-select -p
得到安装目录
/Applications/Xcode.app/Contents/Developer
进入 开发平台对应目录
cd /Applications/Xcode.app/Contents/Developer
dhbmdeMacBook-Pro:Developer dhbm$ ls
Applications Makefiles Toolchains usr
Library Platforms Tools
进入 Platforms 目录
dhbmdeMacBook-Pro:Developer dhbm$ cd Platforms
dhbmdeMacBook-Pro:Platforms dhbm$ ls
AppleTVOS.platform WatchSimulator.platform
AppleTVSimulator.platform iPhoneOS.platform
MacOSX.platform iPhoneSimulator.platform
WatchOS.platform
3、我使用了 macOS 下的 Command Line Tool (命令行项目),所以到 MacOSX.platform
dhbmdeMacBook-Pro:Platforms dhbm$ cd MacOSX.platform
dhbmdeMacBook-Pro:MacOSX.platform dhbm$ ls
Developer ResourceRules.plist usr
Entitlements.plist _CodeSignature version.plist
Info.plist macOS.icns
进入 Developer 目录
cd Developer
dhbmdeMacBook-Pro:Developer dhbm$ ls
Library SDKs usr
进入 SDKs 目录
cd SDKs
dhbmdeMacBook-Pro:SDKs dhbm$ ls
MacOSX.sdk MacOSX10.13.sdk
进入 MacOSX10.13.sdk 目录
cd MacOSX10.13.sdk
dhbmdeMacBook-Pro:MacOSX10.13.sdk dhbm$ ls
SDKSettings.plist System usr
进入 usr 目录
cd usr
dhbmdeMacBook-Pro:usr dhbm$ ls
bin include lib share
进入 include 目录,找找有没有 openssl 目录,没有的话 mkdir
find . -name openssl
./openssl
(我创建之后记录的,所以,该目录已经存在了)
4、完整的路径是,我不熟练,所以,一步一步的走进来的
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/usr/include
5、再开一个Terminal,找到系统安装的 openssl 以及 include 目录
戍边记录一下查看macod 版本号命令
sw_vers
ProductName: Mac OS X
ProductVersion: 10.13.1
BuildVersion: 17B48
uname
Darwin
查看 openssl 版本
openssl version
OpenSSL 1.0.2n 7 Dec 2017
找到 openssl 的 include
cd /usr/local/Cellar/openssl/1.0.2n/include
6、copy openssl 目录到 Xcode 的开发目录
确认一下当前目录
pwd
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/usr/include
copy过来 openssl 目录
sudo cp -R /usr/local/Cellar/openssl/1.0.2n/include/openssl openssl
再次打开刚才建立的项目,发现 copy 过来的 ssl.h 里面没有红牌错误了!
建立项目时,我直接把 /usr/local/Cellar/openssl/1.0.2n/include/openssl 添加到了我的项目(add files to XXX)
先记录下来以上过程,后续待补充