[心得]Mac下编译thrift踩坑总结

thrift 0.8.0

安装8的时候会遇到如下问题,并按如下解决:

Osx 10.10 是比较新的系统, 从这个版本开始, 系统默认编译器从GCC 改为 Clang(gcc -v 一下, 给的是clang 的提示). 

Thrift 0.8  代码相对又比较老, 在新的编译器上遇到了下列一些问题.

问题1 :多个源码文件报错 # include , file not found, 改为 # include  解决.

需要修改以下文件:

lib/cpp/src/concurrency/ThreadManager.h  line:24
lib/cpp/src/async/TAsyncChannel.h line:23
lib/cpp/src/async/TAsyncChannel.cpp line:21
lib/cpp/src/async/TAsyncProcessor.h line:23
lib/cpp/src/async/TAsyncBufferProcessor.h line:23
 原因:  在我试验的环境下, 此头文件有后缀名/usr/local/include/boost/ tr1/functional.hpp

问题2: cpp 测试代码 test/Benchmark.cpp 编译失败,  shared_ptr  ambigous , 用 boost::shared_ptr 替换 shared_ptr,

错误消失.

原因: Clang 支持 C++ 11, 其 标准库自带 shared_ptr(std::shared_ptr, 参考 http://zh.cppreference.com/w/cpp/memory/shared_ptr) 

故需显式指定名字空间.

 三:测试

下面编写一个HelloWorld.thrift 来测试一下,内容如下:

namespace java com.xx.mobile.hotel.sc.demo

service HelloWorldService {
     string sayHello(1:string username)
}

执行:thrift -gen java HelloWorld.thrift 将在同级目录下生成gen-java/com/xx/mobile/hotel/sc/demo/HelloWorldService.java文件。

你可能感兴趣的:(技术笔记)