记录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 ...
随机推荐
- pugixml 读取
xml <?xml version="1.0" encoding="utf-8" ?> <ROOT> <COMPANY>Te ...
- IDEA中的模板文件设置
idea中的设置 Settings>Editor>File and code Templates>Includes>File Header 中粘贴下面的表达格式 /** * @ ...
- 论文阅读笔记五十九:Res2Net: A New Multi-scale Backbone Architecture(CVPR2019)
论文原址:https://arxiv.org/abs/1904.01169 摘要 视觉任务中多尺寸的特征表示十分重要,作为backbone的CNN的对尺寸表征能力越强,性能提升越大.目前,大多数多尺寸 ...
- 11/9 <Stack> 155 232 225
155. Min Stack class MinStack { int min = Integer.MAX_VALUE; Stack<Integer> stack = new Stack& ...
- DIV+CSS+JS实现色彩渐变字体
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
- 求数组前K个大的数
我们举例,假若从10000万个数里选出前100个最大的数据. 首先我们先分析:既然要选出前100个最大的数据,我们就建立一个大小为100的堆(建堆时就按找最大堆的规则建立,即每一个根节点都大于它的子女 ...
- 【插件】【idea】JRebel mybatisPlus extension是JRebel热部署插件的扩展支持mybatis的xml文件热部署
和JRebel一起使用,修改mybatis的mapper.xml文件不用重启项目 File->Settings->Plugs
- Mybatis成为Java互联网时代首选持久框架的原因
持久层可以将业务数据存储到磁盘,具备长期存储能力,只要磁盘不损坏(大部分的重要数据都会有相关的备份机制),在断电或者其他情况下,重新开启系统仍然可以读取这些数据.一般执行持久任务的都是数据库系统.持久 ...
- Java并发之原子性,可见性,有序性
原子性 原子性指的是一个或者多个操作在 CPU 执行的过程中不被中断的特性 在多线程情况下,线程会被操作系统调度进行任务切换,占有CPU时间片段的就执行,否则就阻塞 java中对基础类型的变量赋值是 ...
- Swagger 自定义UI界面
Swagger 自定义UI界面 Swagger简单介绍 如何使用Swagger 添加自定义UI界面 使用swagger-ui-layer Swagger ui 的原生UI界面如下: 个人感觉原生UI显 ...