苹果移除openssl头文件

2

最近因为升级了OS X 10.11,而且PHP的版本也更新了,所以我准备重新编译php,具体的编译,我上一篇文章已经讲过。但是这次编译,出现了一个不可能的错误,PHP报告缺乏openssl头文件。

查找原因

因为我之前编译过Nginx,所以我知道苹果是自带openssl的,跳转到/usr/include目录下,之前是存在openssl这个文件夹的,但是这次不存在了,重新安装xcode-select --install都没用。这下没办法了,只能Google。

原因

Google了很久,才在苹果开发者论坛上找到了答案,苹果确实移除了openssl头文件,但是保留了openssl的动态链接库去支持现有的程序。
苹果Mail-List
苹果在上个版本的文档里将openssl标记为了depreciate,这次版本移除以后,iOS开发者有两个选择,一个是自行编译一个openssl版本,或者使用Secure Transport

yadgen · 2015年10月08日

难怪我编译git会报头文件出错,那重新编译一个openssl,如何指定这个头文件的路径呢?

回复

山河永寂 作者 · 2015年10月12日

我没有编译过git,不知道git的configure参数,如果是指定openssl src路径,最简单;如果是指定头文件,就只需要指定evp.h所在的路径,如果是指定openssl的安装目录,那么没办法了,只能自己重新编译安装openssl到/usr/local目录下,然后指定git=/usr/local

回复

yadgen · 2015年10月12日

后来我重新编译了openssl,将openssl目录拷贝到/usr/include就可以了。

回复

山河永寂 作者 · 2015年10月12日

你别骗我,10.11版本有rootless,非原生root权限是没法操作/usr目录的

回复

yadgen · 2015年10月12日

是有rootless,但是可以关闭掉,具体可以看我这篇博客。
http://blog.yadgen.com/?p=1950

回复

山河永寂 作者 · 2015年10月12日

我知道是可以关闭的,nvram修改启动参数,但是总归心里不舒服

回复

yadgen · 2015年10月13日

这没办法的,作为开发人员,必须这么做,普通用户不需要了。
我是重启进入boot,终端输入命令csrutil disable,然后再重启,在终端输入sudo chflags norestricted /usr/local && sudo chown -R $(whoami):admin /usr/local

你的方式具体是怎么样的?

回复

山河永寂 作者 · 2015年10月13日

预览版的时候可以通过nvram boot-args="rootless=0"修改,现在不行了

回复

yadgen · 2015年10月13日

预览版我没用,因为机器平时工作,等正式版材更新等的,这个方法我试过,没用。

回复

载入中...