公司有个通讯 是用的 thrift ,thrift 是个什么都东西,可以类比 webservice 吧,比 webservice 高效些,不管是啥,搞他!

先在 mac 上搞本地开发环境

网上一搜 貌似依赖 boost、libevent

boost 是 c/c++ std 的拓展,一些 list、vector 等等啥的,好像还有些比 std 更高级的功能,旁边搞c 的同事说太重了,他一般不用,不管了,下下来

libevent 是 c/c++ 的网络通讯框架,类似java 下的 nio ?也下下来

按网上的步骤安装 boost,发现依赖 高版本的 bison(2.6,系统自带的是2.4),这个 bison 是干啥的?“语法分析器生成器” ,是类似语法检查的?就是说标准的 c/c++ gcc 来检查,拓展的 boost 的语法由 bison 来检查?我先这样理解吧

libevent 依赖 openssl,直接编译会报错 "<openssl/bio.h> not found"

一、安装bison

wget http://ftp.gnu.org/gnu/bison/bison-2.6.4.tar.gz
tar -zxvf bison-2.6.4.tar.gz
cd bison-2.6.4
./configure
./configure && make -j $(getconf _NPROCESSORS_ONLN) && make install
# -j 意思好像是一共是几核几线程,加速 make 的速度的
bison -V
# 如果不行,就退出 Terminal 再启动试试

二、安装 boost

tar -zxvf boost_1_66_0.tar.gz
./bootstrap.sh —prefix=PATH_TO_BOOST
sudo ./b2 threading=multi address-model=64 variant=release stage install

三、安装openssl

#先用 brew 安装
# ---------------------------------------------------------------------------------------------------
brew install openssl
#安装到了 /usr/local/Cellar/openssl/1.0.2n/bin 下 直接 openssl version 肯定是不行的
sudo mv /usr/bin/openssl /usr/bin/openssl_old
sudo mv /usr/local/Cellar/openssl/1.0.2n/bin/openssl /usr/bin/openssl
# macOS Sierra 下 /usr/bin 是没有权限修改的,需要进入安全模式
# 1、重启 2、开机按下 commond +r 3、进入terminal 敲入 csrutil disable
# 但是 mv 了 也还是不行,不能安装 libevent 估计是 依赖的静态类库 或者 动态类库,没拷贝,只拷贝了 二进制可执行程序
brew link openssl
# 是不是把 lib 也拷贝过去了呢,好像也不行,算了换源码安装
# ---------------------------------------------------------------------------------------------------
tar -zxvf openssl-1.0.2l.tar
cd openssl-1.0.2l
sudo ./config --prefix=/usr/local/openssl
make
make install
# 在安装 libevent 的时候还是不行,缺少依赖的 openssl 的类库 "<openssl/bio.h> not found"
# 后来拷贝了头文件,使得编译通过
cp -R /usr/local/Cellar/openssl/1.0.2n/include/ /Users/carl/Downloads/libevent-2.1.8-stable

四、安装 libevent

cd libevent-2.0.21-stable
./configure --prefix=/usr/local
make clean
make && make install

五、安装 thrift

cd thrift-0.9.3
./bootstrap.sh
./configure --prefix=/usr/local/ --disable-static --with-boost=/usr/local --with-libevent=/usr/local --without-python --without-csharp --without-ruby --without-perl --without-php --without-haskell --without-erlang
make
make install
完成 thrift 安装
thrift --version
可以看到其版本号码
编写 thrift 的 demo_server、demo_client 的 hello world 程序时,却发现在mac 系统下并没有 其没有生产对应的类库
编译不报错,但运行 demo_server 时报错了
错误是
dyld: Symbol not found: _GENERAL_NAME_free
Referenced from: /usr/local/lib/libthrift-0.9.3.dylib
Expected in: flat namespace
in /usr/local/lib/libthrift-0.9.3.dylib
Abort trap: 6
这个搞半天,比如 在 thrift configure 之后,make 之前加上
export CXXFLAGS="-std=c++11"
#直接导致 thrift 无法生成了
发现 貌似是 Mac 的 gcc 是用的 llvm + clang ,这两货应该就是 linux 下的 gcc 的 mac 版本,就是说不是普通的 gcc 了,貌似上述问题都是由于 mac 导致的,不管了,先在centos 虚拟机下面配置,如果可行的话,在把 gcc 给换了

centos 下的 thrift 安装

步骤大同小异

只是 默认 centos 6.5 下 cmake 都没有

在编译 demo 程序时,安装都 cmake 版本还要求比较高,高版本的 cmake 还需要高版本的 gcc一路升级吧

# 先 gcc 升级 到最新版本,是 4.8,找到一个 yum 的升级方法
cd /etc/yum.repos.d
wget http://people.centos.org/tru/devtools-2/devtools-2.repo
yum install devtoolset-2-gcc
yum install devtoolset-2-binutils
yum install devtoolset-2-gcc-gfortran
yum install devtoolset-2-gcc-c++
source /opt/rh/devtoolset-2/enable

cmake 3.11 安装

./bootstrap --prefix=/usr
make
make install

终于可以运行 thrift 的 demo 了

C 小白的 thrift 环境搭建的更多相关文章

  1. Mac OS X 下搭建thrift环境

    1.概述 thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发.它结合了功能强大的软件堆栈和代码生产引擎,以构建在 C++, Java, Python, PHP, Ruby, Erlang, ...

  2. Appium+python自动化环境搭建(小白适用)

    写在前面: 没开始搭建前听好多人说,学习appium80%的人都死于环境搭建,所以一开始很紧张,在搭建环境中也确实遇到了好几个问题,由于之前本人使用app测试经验很少,所以相当于app小白,因此有的问 ...

  3. 小白的springboot之路(一)、环境搭建、第一个实例

    小白的springboot之路(一).环境搭建.第一个实例 0- 前言 Spring boot + spring cloud + vue 的微服务架构技术栈,那简直是爽得不要不要的,怎么爽法,自行度娘 ...

  4. 小白学习VUE第二课:环境搭建 VUE Node.js VSCode template模板

    环境搭建 VUE Node.js VSCode template模板: 首先安装node:http://www.runoob.com/nodejs/nodejs-install-setup.html ...

  5. 【Java学习系列】第1课--Java环境搭建和demo运行

    本文地址 分享提纲: 1. java环境的搭建 2. java demo代码运行 3.参考文档 本人是PHP开发者,一直感觉Java才是程序的王道(应用广,科班出身),所以终于下决心跟一跟. 主要是给 ...

  6. Android开发环境搭建相关文章列表(转载)

    Android开发虽然有所了解,但是一直没有搭建开发环境去学习,Android的更新速度比较快了,Android1.0是2008年发布的,截止到目前为止Android已经更新Android5.0.1, ...

  7. 《OD大数据实战》Hue环境搭建

    官网: http://archive.cloudera.com/cdh5/cdh/5/hue-3.7.0-cdh5.3.6/ 一.Hue环境搭建 1. 下载 http://archive.cloude ...

  8. 《OD大数据实战》Hive环境搭建

    一.搭建hadoop环境 <OD大数据实战>hadoop伪分布式环境搭建 二.Hive环境搭建 1. 准备安装文件 下载地址: http://archive.cloudera.com/cd ...

  9. 【原创】史上最全的Android开发环境搭建

    开始学习Android了 看着眼花缭乱的教程真心无奈...So  无耻的来了个大综合 自己充当了小白鼠.. (PS 若文章中链接失效 请留言反馈me会尽快修复) 开始的开始 java运行环境还是很必要 ...

随机推荐

  1. Forget Guava: 5 Google Libraries Java Developers Should Know

    Forget Guava: 5 Google Libraries Java Developers Should Know Published on 2016 7 13 Somenath PandaFo ...

  2. JavaScript与jQuery关于鼠标点击事件

    即实现鼠标点击其中一个菜单发生样式的改变,当点击下一个菜单时,当前菜单样式改变,其他菜单均变为之前样式. 用JavaScript,jQuery都可以实现,只是后者是封装的JavaScript库,具有s ...

  3. 剑指Offer_编程题_20

    题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印.   /* struct TreeNode { int val; struct TreeNode *left; struct TreeN ...

  4. solr的域

    solrhom相当于存放数据的地方,里面一个个文件相当于数据库,每个数据库里面有两个文件夹,一个data,一个conf,conf下有一个schema.xml文件,配置域,相当于表的字段. solr中内 ...

  5. 调用腾讯、百度翻译API,实现游戏机翻通用程序

    最近玩了款steam独立游戏,没中文,只能自己汉化了,用腾讯跟百度的API实现了一个通用的机翻程序(只需要导入JSON文本), 同样,比较懒,还没写,先占坑

  6. Ubuntu18.04问题记录

    1. pip install 包时偶然间碰上了如下问题: Could not install packages due to an EnvironmentError: [Errno 13] 权限不够: ...

  7. PL/SQl编程 基本语法

    /*输出hello world*/ DECLARE BEGIN DBMS_OUTPUT.PUT_LINE('Hello World'); END; --set serveroutput on; /** ...

  8. POJ 2031 Building a Space Station (计算几何+最小生成树)

    题目: Description You are a member of the space station engineering team, and are assigned a task in t ...

  9. Tomcat zabbix监控、jmx监控、zabbix_java_gateway

    几种方式监控tomcat,如标题. 下面就是参考的网上的连接.自己可以试一下. 由于牵扯到jvm的很多东西, 在这里就只是粘贴处连接参考. http://www.cnblogs.com/chrisDu ...

  10. Docker镜像保存save、加载load(外网转移至内网)

    (1)查看要要保存的镜像的ID [root@localhost docker]# docker images (2)保存镜像 [root@localhost docker]# docker save  ...