如何在Windows平台下Build Avro C接口
来源:互联网 发布:linux 退出编辑模式 编辑:程序博客网 时间:2024/06/05 06:35
最近有人问我,如何使用Cygwin,Mingw编译Avro的C接口。正好前一段时间一个项目要用到Avro的C接口,而且是在Windows平台。由于用Cygwin编译出来的dll,在windows上运行的时候需要cygwin.dll运行库的支持,而Mingw则是生成出来的二进制文件可以直接运行,只依赖于C的动态运行库(msvcrt.dll)。所以本文只介绍使用Mingw32编译出Windows平台下的Avro的C接口(Cygwin是类似的,只是前面的一些步骤不同而以)。
首先Mingw32的安装,去sourceforge的网站下载,网址:http://sourceforge.net/projects/mingw/;按照提示安装就可以了。
Apache Avro Build Instructions
REQUIREMENTS
The following packages must be installed before Avro can be built:
- Java: JDK 1.6
- PHP: php5, phpunit, php5-gmp
- Python: 2.5 or greater, python-setuptools for dist target
- C: gcc, autoconf, automake, libtool, asciidoc, source-highlight
- C++: cmake,g++, flex, bison, libboost-dev
- Ruby: ruby 1.86 or greater, ruby-dev, gem, rake, echoe, yajl-ruby
- Apache Ant 1.7
- Apache Forrest 0.8 (for documentation)
- md5sum, sha1sum, used by top-level dist target
以上是Build不同的Avro接口的要求,主要看下C接口的要求,一般Mingw安装好后,要求的包基本都安装好了,如果没安装相应的包,编译时会有提示。
安装好Mingw32和相应的包后,去apache的Avro的svn站点上把,Avro C的源代码下载下来,网址:http://svn.apache.org/viewvc/avro/trunk/lang/
将下载下来的Avro C的源代码,拷贝到home目录下,启动Mingw,切换到Avro C源代码的目录,执行编译命令 ./build.sh dist',这时会有编译出错,我记得好像是char型变量赋值给int 变量,修该代码(我改成强制转化就好了)重新执行编译命令 ./build.sh dist';这时会出现链接错误,我们先不用管它,等它编译完,会有一堆的链接错误提示。没有提示编译错误,说明没有编译问题,就所有的C文件都编译没出错,链接问题是编译器将.C文件生成的.O中间文件链接成二进制的dll文件是出的错误,这个错误困扰了我两天,后来看它的编译脚本时才知道,原来是官网上提供的编译Make脚本本身就有问题,没有链接libjansson库,导致链接时会出很多jansson函数找不链接的错误,本人也不怎么会写Make脚本,索性就用来个笨办法,自己手动将.O中间文件链接成二进制的dll文件。方法如下:
首先将如下的.o文件拷贝到同一个文件夹下(方法在Build目录下搜索*.o文件就能找到这些文件),其中有两个dump.o文件,我将其中一个该为dump1.o,文件名如下:
dump1.o hashtable.o load.o strbuffer.o utf.o value.o allocation.o datum_json.o datum_write.o resolver.o consumer.o datum_read.o dump.o schema.o datafile.o datum_size.o encoding_binary.o schema_equal.o datum.o datum_skip.o errors.o st.o datum_equal.o datum_validate.o io.o
将这些文件拷贝到了同一个文件夹下后,切换到该目录,执行如下命令:
gcc -shared dump1.o hashtable.o load.o strbuffer.o utf.o value.o allocation.o datum_json.o datum_write.o resolver.o consumer.o datum_read.o dump.o schema.o datafile.o datum_size.o encoding_binary.o schema_equal.o datum.o datum_skip.o errors.o st.o datum_equal.o datum_validate.o io.o -o libavro.dll
这样就生成了libavro.dll,Avro C在Windows下的接口了。
通过libavro.dll,使用lib命令就可以生成导出文件libavro.lib文件了,然后拷贝出Avro中的头文件就可以使用Avro了!
给懒人提供一个我已经编译好了的Avro C接口库:
- 如何在Windows平台下Build Avro C接口
- 如何在windows平台下造字
- 如何在Windows平台下安装Memcached
- 如何在Windows平台下实现进程隐藏
- 如何在windows平台下的ActiveTcl中设置环境变量
- 如何在windows平台下编译比特币bitcoin客户端
- 如何在Windows平台下学习Poco自带例程
- 如何在Windows平台下安装或卸载Apache服务
- 如何在windows平台下编译比特币bitcoin客户端
- 如何在Windows平台下安装配置Memcached
- 如何在Windows平台下安装或卸载Apache服务
- 在windows下build好的NiFi如何迁移到linux下正常运行
- Windows平台下搭建Obcject-C平台
- 如何在windows下用CodeBlock编译Objective-C代码
- 如何在Windows系统下使用vim进行c开发
- windows如何在命令行下编译C/C++程序
- 在C:\WINDOWS\system32>下如何进入命令提示符
- 如何在Windows下编译连接C程序
- AC24V逆变器
- Android 不使用布局文件,动态地生产布局显示
- 圆形区域的半透明填充
- struts2 property调用静态方法
- RPM for Installing Oracle on RHEL4.6&4.8
- 如何在Windows平台下Build Avro C接口
- android布局及常见布局属性
- windows延缓写入失败怎么办
- sql 生成8位字母数字组合不重复随机码
- Citrix XenApp 下载及一年 developer license 获取
- 15款优秀jQuery 图片展示插件(slideshow)整理
- 详细讲解提高数据库查询效率的实用方法
- uft-8编码识别
- zend studio 8 及xdebug php调试环境搭建