记录Mac OS下编译Thrift库
方法一: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

解决方法:
安装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:

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

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

查看thrift编译器路径:
which thrift

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

Lib路径:/usr/local/lib

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

在网上查找资料,尝试来尝试去,百思不得其解啊,哪位大神能给指导分享下,不胜感激!
记录Mac OS下编译Thrift库的更多相关文章
- MAC OS下编译apple跨平台的libevent库 (可延申到其它第三库)
apple下的跨平台是指不同设备上的苹果系统以及同一系统在不同cpu体系的不同版本. 前面一篇介绍如何用ndk编译android跨平台的第三库,那样的方法却不能应用在apple上. 网上可以找到这么一 ...
- 在mac os下编译android -相关文章
1. Mac OS X下编译Android源码 http://blog.csdn.net/bulreed/article/details/22783467 2.MAC OS 编译 Android源代码 ...
- Mac OS下 Redis2.6.14部署记录
Mac OS下 Redis2.6.14部署记录 部署一个Redis作为缓存进行验证,记录部署过程. 官网:http://redis.io/,目前最近稳定版为2.6.14 解压,进入目录.按照READ ...
- 在 Mac OS 上编译 FFmpeg
本文转自:在 Mac OS 上编译 FFmpeg | www.samirchen.com 安装 Xcode 和 Command Line Tools 从 App Store 上安装 Xcode,并确保 ...
- Mac OS下编写对拍程序
介绍 对拍是信息学竞赛中重要的技巧,它通过一个效率低下但正确率可以保证的程序,利用庞大的随机生成数据来验证我们的高级算法程序.对拍最大的优势在于可以通过人力所不能及的速度和数量达到验证的效果.下面我们 ...
- wget Mac OS 下安装
wget是一个从网络上自动下载文件的自由工具,支持通过HTTP.HTTPS.FTP三个最常见的TCP/IP协议下载,并可以使用HTTP代理. 下面介绍如何在Mac OS 下安装Wget 下载最新版的 ...
- mac os 下搭建android开发环境
mac os 下搭建android开发环境 周银辉 mac os 下搭建android环境比较方便, 如下几个步骤: 1,安装jdk 先搞清楚自己是否已经安装,在命令行下:java -version, ...
- mac os 下的sublime --- 快捷键
mac os 下的sublime ---列模式 http://www.oschina.net/question/249672_161413 触控板也可以的:左手同时按住 Option 和触控板左下角 ...
- MAC OS下免费下载YouTube
YouTube上有很多不错的视频,你感兴趣的视频除了可以加入自己播放列表之外,还可以将其下载到本地收藏起来.推荐这款软件“Xilisoft Download YouTube Video for Mac ...
随机推荐
- E03 【餐厅】Can I book a table for two for this evening,please?
核心句型 Can I book a table for two for this evening,please? 我能预定一张今晚的双人桌吗? What time do you want to hav ...
- 【Oracle】Windows启动
cd D:\app\Administrator\product\\dbhome_1\BIN D: sqlplus /nolog conn sys/system as sysdba startup pf ...
- WordPress隐藏后台左侧菜单如何操作
前面我们讲了wordpress后台添加左侧边栏菜单如何操作,反过来如果想要隐藏一些菜单怎么实现呢?我们可以通过remove_menu_page()函数来完成,将如下代码加入到当前主题function. ...
- CF1076D Edge Deletion 最短路树
问题描述 Codeforces 洛谷(有翻译) 题解 最短路树,是一棵在最短路过程中构建的树. 在\(\mathrm{Dijkstra}\)过程中,如果最终点\(y\)是由点\(x\)转移得到的,则在 ...
- AOP的理解与实现
AOP:面向切面编程,在不破坏原有代码的情况下,提供新的功能.可以使用AOP添加通用功能,比如事务.日志.权限.异常.缓存... 常见的AOP:MVC中的过滤器.HttpModule... 如何实现A ...
- 0x00 Wechall writeup
目录 0x00 Wechall writeup Training: Get Sourced Training: ASCII Encodings: URL Training: Stegano I Tra ...
- java的GUI之SWT框架 配置开发环境(包含但不限于WindowBuilder完整教程,解决Unknown GUI toolkit报错,解决导入SWT包错误)
官网(资料挺多的,API文档截图以及示例都有):https://www.eclipse.org/swt/ 克隆官方仓库 git clone --depth=1 git://git.eclipse.or ...
- android 完全退出实现
实现方法是在application中定义一个集合存储所有的Activity对象,在Activity创建时添加进集合中,在程序退出时,finish掉所有的Activity即可. 步骤如下: 1.自定义A ...
- java导出标题多行且合并单元格的EXCEL
场景:项目中遇到有需要导出Excel的需求,并且是多行标题且有合并单元格的,参考网上的文章,加上自己的理解,封装成了可自由扩展的导出工具 先上效果,再贴代码: 调用工具类进行导出: public st ...
- oracle--DG查询同步
查询归档历史: SELECT FIRST_TIME,FIRST_CHANGE#,NEXT_CHANGE#, SEQUENCE# FROM V$LOG_HISTORY; 检查归档文件路径和创建信息 SE ...