您的位置:首页 > 其它

vs2010编译thrift之compiler出错的处理方法

2014-12-04 20:11 288 查看
问题描述

在使用visual studio 2010 SP1编译thrift-0.9.1的compiler时,出现:

The command "flex -o "src\\thriftl.cc" src/thriftl.ll

bison -y -o "src\thrifty.cc" --defines="src/thrifty.hh" src/thrifty.yy

问题原因

flex和bison原本是linux下的可执行程序,windows上需要分别安装bison.exe和flex.exe。

解决步骤

1)下载并安装bison

此处下载bison安装程序,安装路径随意,比如我安装在D:\dev_tools\GnuWin32目录下,安装之后GnuWin32目录下将包括:

-GnuWin32/

--bin/

--contrib/

--doc/

--include/

--info/

--lib/

--man/

--manifest/

--share/

--uninstall/

2)下载并安装flex

此处下载flex解压包,flex包内包含bin,contrib,man以及manifest四个目录。这里将包内的所有文件夹复制到GnuWin32目录,比如我就复制:

flex/bin -> GnuWin32/

flex/contrib -> GnuWin32/

flex/man -> GnuWin32/

flex/manifest ->GnuWin32/

3)添加环境变量

将GnuWin32/bin(需要全路径)添加到Windows环境变量中。

4)重启Visual Studio 2010 SP1。如果不重启,此时编译依然会报错。

5)此时编译会报错Cannot open source file: 'src\thriftl.cc': No such file or directory,原因是compiler工程里边的Pre-Build Event有错。

flex-o "src\\thriftl.cc" src/thriftl.ll

bison -y -o "src\thrifty.cc" --defines="src/thrifty.hh" src/thrifty.yy

flex的语法需要-o之后没有空格,所以需要将-o和src之间的空格去掉,即

flex -o"src\\thriftl.cc" src/thriftl.ll

bison -y -o "src\thrifty.cc" --defines="src/thrifty.hh" src/thrifty.yy

6)接着就是最后一个错误了

Cannot open include file: 'unistd.h': No such file or directory

这里会提示找不到unistd.h,unistd.h是linux下的头文件,相当于Windows下的Windows.h。将thriftl.cc中的#include <unistd.h>屏蔽是没有用的,因为这个文件是自动生成的。

在{thrift}/compiler/cpp目录下建立unistd.h空文件,并将compiler工程属性(Properties -> C/C++ -> General -> Additional Include Directories里加入当前目录.即可。

All Done!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: