记录Mac OS下编译Thrift库

时间:2020-12-03 06:36:06

方法一:brew管理工具安装
Homebrew是Mac开发包管理工具,类似于Linux的apt-get之类的,实它相当于开发软件界的 Appstore。借助该管理工具,可以自动化地安装软件包,它会自动安装依赖。
而借助 Homebrew, 需要做的仅仅是:
brew uninstall *
brew install *
打开终端,输入以下命令:
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
注意:因网络的原因,可能会不成功,请多尝试几次,一直到成功安装。
中间会出现一个“Press RETURN to continue or any other key to abort”,请及时回车,并输入密码,不要傻等着…
安装成功后会显示“Installation successful!”,
此时输入: brew –version,显示
Homebrew 2.1.10
Homebrew/homebrew-core (git revision c7fb; last commit 2019-08-18)
开始借助brew安装Thrift了~
注意:不要使用sudo,会提示错误“Error: Running Homebrew as root is extremely dangerous and no longer supported.As Homebrew does not drop privileges on installation you would be giving all build scripts full access to your system.”
先brew update
再brew install thrift
如果不出问题,接下来就是耐心地等待…
时间很长,long long~
安装完成后,thrift位于 /usr/local/Cellar/thrift/0.12.0/bin目录下,可通过which thrift命令查看。

这种方式简单方便,傻瓜式的安装过程,适合thrift的简单测试使用,自动安装thrift的依赖库(boost、openssl等),这些软件包版本都是brew支持的版本。但是如果要修改源码用于实际项目中使用则需要通过源码来安装了~

方法二:Thrift源码编译安装
序号    工具            下载
1     Mac OS10.14       虚拟机
2     boost_1_70_0        下载
3     libevent-2.1.11-stable.tar  下载
4     thrift-0.12.0          下载
官网这里提供了源码编译的方法,该博文也进行了总结,需要依赖boost和libevent,而且有时候依赖包的版本还得对,还是挺麻烦的。不过,如果自己修改了thrift的源码,加入了针对自己项目的相关内容,源码方式编译安装就是必须的了!
按照官网提供的方法来尝试安装,可能遇到的问题:
1、 configure: error: Bison version 2.5 or higher must be installed on the system!
执行:bison -V查看版本,如果低于2.5则进行以下操作。
执行:brew install bison 安装最新版本的bison。
之后进入/usr/bin目录下,将mac默认的bison文件移除掉,将通过brew安装的bison拷贝到这里来。
cd /usr/bin
sudo mv bison bison111
sudo cp /usr/local/Cellar/bison/3.4.1/bin/bison ./
2、 sudo “Operation not permitted”
如果你的OX版本过高,会出现使用sudo权限也无法在/usr/bin目录操作的情况,需要首先获取权限,关闭Rootless。尝试关闭Rootless需要先进入恢复模式,在菜单“实用工具”中打开终端,输入:csrutil disable 重启系统即可。
3、 src/thrift/transport/TSSLSocket.cpp:43:10: fatal error: 'openssl/opensslv.h' file not found

记录Mac OS下编译Thrift库

解决方法
安装openssl:
brew install openssl
brew link openssl --force
重新执行configure命令,并添加参数(注意:命令写成一行):
./configure --prefix=/usr/local/ --with-boost=/usr/local --with-libevent=/usr/local LDFLAGS='-L/usr/local/opt/openssl/lib' CPPFLAGS='-I/usr/local/opt/openssl/include'
再次make 以及make install
make完成后会提示如下error:

记录Mac OS下编译Thrift库

make install完成后会提示如下error:

记录Mac OS下编译Thrift库

这些可以忽略…
安装成功后,thrift位于 /usr/local/bin目录下
查看thrift编译器版本:
thrift –version

记录Mac OS下编译Thrift库

查看thrift编译器路径:
which thrift

记录Mac OS下编译Thrift库

Include路径:/usr/local/include/thrift

记录Mac OS下编译Thrift库

Lib路径:/usr/local/lib

记录Mac OS下编译Thrift库

至此,Mac OS上的Thrift编译完成了~

我在Mac OS上使用Thrift C++构建一个Server,主要参照ThriftUsageC++,构建成功了,但是运行二进制执行文件时崩溃了~

记录Mac OS下编译Thrift库

在网上查找资料,尝试来尝试去,百思不得其解啊,哪位大神能给指导分享下,不胜感激!