windows8 vs2012 编译hadoop2.6

       最近想用C++访问HDFS的文件,因为是在windows上做开发,但apache并没有编译出windows版本的C++开发包,因此决定自己在windows上做编译,在编译过程中遇到一些问题,特此记录下来。目前已经编译好的hadoop安装包,需要的可以下载使用

http://download.csdn.net/detail/for_onxx/8838933


       进入正题,本次编译环境为windows8.1 64位,VS2012,hadoop2.6.编译步骤如下:


   1.下载hadoop2.6源码,下载地址:

        http://hadoop.apache.org/releases.html

    2.把源码解压到某目录,解压时最好放到根目录,如 D:\hd,因为hadoop源码的目录非常深,如果不放到根目录下,可能超过windows目录长度的限制导致解压失败。

       打开源码目录下的 BUILDING.txt 文件,里面有windows编译的介绍,如下图:

      

       

       可以看到,要编译的话必需安装 JDK1.6以上(最好不用1.8)、MAVEN3.0以上、Protobuf2.5(其它版本不行),findbugs、cmake(越新越好)、cgwin和zlib,

       这些东西的安装方法,我不具体一一介绍了,大家到网上搜索一下,需要注意的是,安装完之后要在path环境变量中添加相应的路径:


       JDK:             添加JAVA_HOME环境变量,并把%JAVA_HOME%\bin添加到PATH环境变量末尾。

       MAVEN:       添加MAVEN_HOME环境变量,并把%MAVEN_HOME%\bin添加到PATH环境变量末尾。

       Protoubuf: 下载源码后,用VS编译出来protoc.exe,并把protoc.exe所在目录添加到PATH环境变量末尾。

       findbugs:      添加FINDBUGS_HOME环境变量,并把%FINDBUGS_HOME%\bin添加到PATH环境变量末尾。

       cmake:         添加CAMKE_HOME环境变量,并把%CMAKE_HOME%\bin添加到PATH环境变量末尾。

       cgwin:          添加CYGWIN_HOME环境变量,并把%CYGWIN_HOME%\bin添加到PATH环境变量末尾


       以上写得有点罗嗦,除了JAVA_HOME必须增加环境变量以外,其它的只需要把bin目录或exe目录增加到PATH就可以了,为了方便我是把相应的环境变量也加上去了。


    3. 因为使用的是native-win编译,因此需要msbuild,windows sdk或者vs2010 Professional,官方说不能使用express版本的VS,因为它不能编译x64的程序。

        同样不能用VS2012,其实是因为它的pom.xml文件写死了是用VS2010版本。当然,如果安装了windows sdk的话,也可以不使用VS进行编译。

        我的电脑上只安装了VS2012,所以懒得安装其它的东西了,直接用它编译


  4.  第2步做完后,用管理员身份打开VS2012命令行工具,切换到hadoop目录下,

       设置编译64位:

       set Platform=x64

       设置zlib目录

       set ZLIB_HOME=D:\zlib-1.2.8

       开始编译:

        mvn package -Pdist,native-win -DskipTests -Dtar


      因为用的是VS2012进行编译,不出意料的话,在编译过程会出现2处错误,编译的时候我没截图,就文字说明了:

    

      错误1:

                 是编译 hadoop-common-project 的时候,看错误描述是没找到VC100编译器,因为默认生成了VS2010的项目,但我没装.

     解决方法:

                在源码目录下搜索 *.sln,搜索到native.sln和winutils.sln,用VS2012打开,升级为2012的项目,再编译一次,OK.

                本来是想在pom.xml看它在哪里指定了生成vs2010的sln,但竟然没找到。。。


    错误2:

              这个错误是编译 hadoop-hdfs-project 的时候,这个错误描述很扯,我当时找不到是什么问题,重新编译几次,错误提示竟然不一样。

              后来发现还是VS版本的问题。为了避免这个错误发生,可以提前修改hadoop源码目录下的 hadoop-hdfs-project\hadoop-hdfs\pom.xml文件,

             大概是579行最右边,把 -D ‘Visual Studio 10 Win64’

              改成如下图所示:

            

       

           再次编译,不出意外的话,一路畅通,最后编译成功。


          用同样的方法,只要是安装了VS2010以后的版本,都应该是可以编译通过的。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值