简介
略,O(∩_∩)O哈哈~
安装
详情见这里
Install Boost
下载见这里
./bootstrap.sh
sudo ./b2 threading=multi address-model=64 variant=release stage install
Install libevent
下载见这里
./configure --prefix=/usr/local
make
sudo make install
Building Apache Thrift
下载见这里
./configure --prefix=/usr/local/ --with-boost=/usr/local --with-libevent=/usr/local
Bison
安装 Thrift 时报错,错误如下:
checking for bison version >= 2.5... no
configure: error: Bison version 2.5 or higher must be installed on the system!
使用brew install bison
命令安装 Bison
Bison 安装完成后执行 Thrift 错误依旧
执行sudo find / -name bison
查看本机其它位置的Bison
然后依次执行以下命令:
cd /Library/Developer/CommandLineTools/usr/bin/
sudo mv bison bison_bak
sudo cp /usr/local/Cellar/bison/3.0.4/bin/bison .
cd -
./configure --prefix=/usr/local/ --with-boost=/usr/local --with-libevent=/usr/local
cd -
sudo mv bison_bak bison
cd -
make
sudo make install
即:先备份涉及的Bison,然后用最新的Bison替换之,安装Thrift,恢复Bison,继续安装Thrift
参考见这里
openssl
在执行sudo make install
时报错:
fatal error: 'openssl/err.h' file not found
参考见这里
brew install openssl
brew link openssl --force
再执行sudo make install
SIP
再执行时报错,虽然使用了sudo,但依然权限不足:
error: could not create '/usr/lib/python2.7/site-packages': Operation not permitted
这是因为系统引入了SIP机制(System Integrity Protection),默认下系统启用SIP系统完整性保护机制,无论是对于硬盘还是运行时的进程限制对系统目录的写操作。
解决方案是暂时取消SIP机制,做法如下:
- 重启电脑,按住Command+R(直到出现苹果标志)进入Recovery Mode(恢复模式)
- 左上角菜单里找到实用工具 -> 终端
- 输入
csrutil disable
回车 - 重启Mac即可
若想重新启动SIP机制,重复上述步骤,命令改用csrutil enable
即可
参考见这里
remake
关闭SIP机制后再执行依然报错:
dyld: Symbol not found: _GENERAL_NAME_free
...
make: *** [install-recursive]
第一句检索没有答案,最后一句检索的建议是:make 时加 sudo
于是,索性所有的命令都重新执行一遍:
cd /Library/Developer/CommandLineTools/usr/bin/
sudo mv bison bison_bak
sudo cp /usr/local/Cellar/bison/3.0.4/bin/bison .
cd -
./configure --prefix=/usr/local/ --with-boost=/usr/local --with-libevent=/usr/local
sudo make clean
sudo make
sudo make install
cd -
sudo mv bison_bak bison
thrift -version
一气呵成,安装完毕,一切正常
最后重新开启SIP机制即可
后记
我之前安装的 0.10.0 版本,公司要求安装 0.9.3 版本,于是重新安装
结果报错
make[4]: *** No rule to make target `gen-cpp/.deps/proc_types.Plo'. Stop.
问题原因是执行make clean
两次会导致此问题,有可能是我操作上有问题多执行了一次,因此将 0.9.3 文件夹删除,重新解压、编译,期间不执行任何make clean
命令,问题解决
参考见这里