您的位置:首页 > 其它

【thrift】cygwin上编译安装thrift中的坑

2017-06-28 17:59 204 查看
下载了最新的thrift,版本为0.10.0

在cygwin只编译c++版本的thrift

在cygwin上装了

5.4.0-1 cygwin64-gcc-core

5.4.0-1 cygwin64-gcc-g++

5.4.0-1 gcc-core

5.4.0-1 gcc-g++

5.4.0-4 mingw64-i686-gcc-core

5.4.0-4 mingw64-i686-gcc-g++

5.4.0-3 mingw64-x86_64-gcc-core

5.4.0-3 mingw64-x86_64-gcc-g++

1.63.0-1 boost c++ libraries

1.63.0-1 libboost-devel

1.60.0-2 mingw64-i686-boost

1.60.0-2 mingw64-x86_64-boost

flex

bison

libtool

这些库,然后./configure ,开始make,如果configure需要一些特定的配置,可以查看README.md文件

==============================坑 坑 坑 坑========================================

这里是坑:

1. 任何标准库出现问题的时候比如找不到某个函数的定义,把对应层级的Makefile中的-std=c++11 改成 -std=gun++11

2. 任何标准库出现问题的时候比如找不到某个函数的定义,在对应层级的Makefile中加上 -D_GNU_SOURCE

3. 在TOutput.cpp文件中,需要把strerror_r()的返回值改成char *,这是GNUC版本的一个特殊之处,相应的代码:

#else

char* b_error = b_errbuf;

int rv = strerror_r(errno_copy, b_errbuf, sizeof(b_errbuf));

if (rv == -1) {

// strerror_r failed. omgwtfbbq.

return "XSI-compliant strerror_r() failed with errno = "

+ boost::lexical_cast<std::string>(errno_copy);

}

#endif

改成

#elif defined _GNU_SOURCE

char* b_error = b_errbuf;

char* rv
= strerror_r(errno_copy, b_errbuf, sizeof(b_errbuf));

if (rv == NULL) {

// strerror_r failed. omgwtfbbq.

return "XSI-compliant strerror_r() failed with errno = "

+ boost::lexical_cast<std::string>(errno_copy);

}

#else

char* b_error = b_errbuf;

int rv = strerror_r(errno_copy, b_errbuf, sizeof(b_errbuf));

if (rv == -1) {

// strerror_r failed. omgwtfbbq.

return "XSI-compliant strerror_r() failed with errno = "

+ boost::lexical_cast<std::string>(errno_copy);

}

#endif

4. transport/THttpServer.cpp 碰到的strcasestr()找不到定义,参考第1条第2条;

5. concurrency/Mutex.cpp中,PTHREAD_MUTEX_RECURSIVE_NP是一个非GNUlibc中常见的宏,但是偏偏cygwin的GUNC没有,改成PTHREAD_MUTEX_RECURSIVE即可

6. make过程中可以把test目录所有内容都删了,不去编译test程序

7.不知道为何会进入到python目录下尝试调python,所以还要安装一下python。python2即可。

8. 默认的configure编译出来的是静态库a,以及la,如何编译出动态库的方法还没搞清楚,所以在应用程序中只能用静态链接的方式引入thrift

9. make install 某些模块会报错,不需要理会,c++的库都会被拷贝到/usr/local/lib下面
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  thrift