lizongbo at 618119.com 工作,生活,Android,前端,Linode,Ubuntu,nginx,java,apache,tomcat,Resin,mina,Hessian,XMPP,RPC

2008年07月18日

cygwin环境下调试thrift的例子

Filed under: RPC — 标签:, , — lizongbo @ 18:41
thift是facebook的rpc调用框架,和google protobuf相比,额外多提供了rpc server和client的框架。
1.下载

http://www.cygwin.com/setup.exe

来源 http://www/cygwin.com
2.双击setup.exe
3.按照安装提示“下一步”
4.选择从“互联网”安装:
5.选择安装的路径为d:\Cygwin,选择本地临时目录d:\Cygwindown,用于存放下载的软件;选择连接互联网的方式,选“直接连接”。
6.选择下载源,直接在URL里输入http://www.cygwin.cn/pub/,点 Add
7.根据安装提示,选择需要安装的软件包,需要选择:
  • Cygwin or MinGW
  • GNU build tools (autoconf 2.60, automake 1.10, libtool 1.5.24)
  • boost 1.33.1+
  • g++ 4.0+
  • bison 2.3-1
  • boost 1.33.1-4
  • boost-devel 1.33.1-4
  • flex 2.5.33-1
  • pkgconfig
  • libtool
(参考:http://wiki.apache.org/thrift/ThriftInstallationWin32
在devel目录下选择这些包,
另外还需要选 make (the GNU version of ‘make’ utility ),
否则在最后执行 make的时候回被提示错误:
bash: make: command not found)
完成安装。
( D:\cygwindown\http%3a%2f%2fwww.cygwin.cn%2fpub%2f\release 下面一共有以下文件夹
aalib
alternatives
apache2
apr1
aprutil1
ash
audiofile
autoconf
automake
autotrace
base-files
base-passwd
bash
binutils
bison
boost
bzip2
cmake
coreutils
cpio
crypt
curl
cygutils
cygwin
cygwin-doc
db
diffutils
docbook-xml412
docbook-xsl
e2fsprogs
editrights
esound
expat
expect
fcgi
file
findutils
flac
flex
fontconfig
freeglut
gawk
gcc
gcc-mingw
gdbm
gettext
ghostscript
glib
gmp
GNOME
gnutls
GraphicsMagick
grep
groff
gtk2-x11
guile
gzip
icu
ImageMagick
jasper
jbigkit
jpeg
lapack
lcms
less
libao
libEMF
libfpx
libgcrypt
libglade2
libgpg-error
libiconv
liblzo2
libmcrypt
libmng
libogg
libpng
libsmi
libssh2
libtasn1
libtextcat
libtool
libungif
libvorbis
libwmf
libxml2
libxslt
login
lzma
m4
make
man
ming
mingw-runtime
minires
ncurses
neon
opencdk
openjade
OpenSP
openssl
pango
patch
pcre
perl
pkg-config
pkgconfig
plotutils
popt
postgresql
pstoedit
python
qhull
readline
rebase
run
sed
speex
sqlite3
t1lib
tar
tcltk
tcp_wrappers
termcap
terminfo
tetex
texinfo
tiff
tzcode
unzip
util-linux
uw-imap
w32api
wget
which
X11
xdelta
xerces-c
zlib
_obsolete
_update-info-dir)
9.-20080411p1.tar.gz
下载地址在: http://developers.facebook.com/thrift/download_thrift.php
10.解压到D:\Java\thrift-20080411p1
11.启动cygwin
$ cd d:/Java/thrift-20080411p1
转到thrift目录。
12.运行

./bootstrap.sh
运行结果为:
lizongbo@lizongbo-pc /cygdrive/d/Java/thrift-20080411p1
$ ./bootstrap.sh
configure.ac: warning: missing AC_PROG_AWK wanted by: test/Makefile:133
configure.ac: warning: missing AC_PROG_RANLIB wanted by: test/Makefile:196
configure.ac:7: installing `./install-sh'
configure.ac:7: installing `./missing'
compiler/cpp/Makefile.am: installing `./depcomp'
configure.ac: installing `./ylwrap'
lizongbo@lizongbo-pc /cygdrive/d/Java/thrift-20080411p1
$
13.运行
./configure
耐心等待命令执行完成。
14.开始make,
$ cd compiler/cpp/
lizongbo@lizongbo-pc /cygdrive/d/Java/thrift-20080411p1/compiler/cpp
$ make
(要先装make包,否则会提示make: command not found)
耐心等待编译完成。
生成编译器文件在:

D:\Java\thrift-20080411p1\compiler\cpp\thrift.exe

14.用文本编辑器打开
D:\Java\thrift-20080411p1\tutorial下的\tutorial.thrift和shared.thrift,
将tutorial.thrift第一行的#!/usr/local/bin/thrift -cpp -java -py -php -xsd -perl
改成#!/cygdrive/d/Java/thrift-20080411p1/compiler/cpp/thrift.exe -cpp -java -py -php -rb -perl -erl -xsd -r
shared.thrift的第一行#!/usr/local/bin/thrift -cpp -java -py -php -xsd -perl
改成#!/cygdrive/d/Java/thrift-20080411p1/compiler/cpp/thrift.exe  -cpp -java -py -php -xsd -perl
保存文件。
15.cygwin下转到tutorial目录.
cd /cygdrive/d/Java/thrift-20080411p1/tutorial
16.分别运行
./shared.thrift
和./tutorial.thrift
生成相关代码。
17.在D:\Java\thrift-20080411p1\lib\java下面运行ant.生成libthrift.jar
18.编辑D:\Java\thrift-20080411p1\tutorial\java\build.xml。
<property name=”cpath” location=”/usr/local/lib/libthrift.jar” />
改成
<property name=”cpath” location=”../../lib/java/libthrift.jar” />
19.
D:\Java\thrift-20080411p1\tutorial\java\下运行ant。
生成class文件。
20.在D:\Java\thrift-20080411p1\tutorial\java\下面启动Server。
java -cp ./tutorial.jar;../../lib/java/libthrift.jar JavaServer
然后再启动客户端:
java -cp ./tutorial.jar;../../lib/java/libthrift.jar JavaClient
服务端可以看到输出信息:
Starting the server…
ping()
add(1,1)
calculate(1, {4,1,0})
calculate(1, {2,15,10})
getStruct(1)
客户端的输出为:
ping()
1+1=2
Invalid operation: Cannot divide by 0
15-10=5
Check log: 5

一条评论 »

  1. 您好,能不能把那个编译好的编译器发给我一下啊.
    我在cygwin下面编译不过去,perl发生错误…
    egmkang#gmail.com

    谢谢

    Reply

    评论 by egmkang — 2009年11月27日 @ 14:02

RSS feed for comments on this post. TrackBack URL

Leave a comment

Powered by WordPress