目录

编译需求

环境准备

JDK安装(1.8)

Maven安装(3.5.2)

Findbugs(3.0.1) 

CMake安装(3.7.0)

Protobuf安装(2.5.0)

ZLIB安装

GIT安装(2.17)

window 10 sdk下载和安装

VS2015安装(社区版)

源码编译

编译错误解决

编译

问题


编译需求

----------------------------------------------------------------------------------

Building on Windows

----------------------------------------------------------------------------------
Requirements:

* Windows System
* JDK 1.7+
* Maven 3.0 or later
* Findbugs 1.3.9 (if running findbugs)
* ProtocolBuffer 2.5.0
* CMake 2.6 or newer
* Windows SDK 7.1 or Visual Studio 2010 Professional
* Windows SDK 8.1 (if building CPU rate control for the container executor)
* zlib headers (if building native code bindings for zlib)
* Internet connection for first build (to fetch all Maven and Hadoop dependencies)
* Unix command-line tools from GnuWin32: sh, mkdir, rm, cp, tar, gzip. These
  tools must be present on your PATH.

Unix command-line tools are also included with the Windows Git package which
can be downloaded from http://git-scm.com/download/win.

If using Visual Studio, it must be Visual Studio 2010 Professional (not 2012).
Do not use Visual Studio Express.  It does not support compiling for 64-bit,
which is problematic if running a 64-bit system.  The Windows SDK 7.1 is free to
download here:

http://www.microsoft.com/en-us/download/details.aspx?id=8279

The Windows SDK 8.1 is available to download at:

http://msdn.microsoft.com/en-us/windows/bg162891.aspx

Cygwin is neither required nor supported.

上面是从Hadoop2.7.4源码包BUILDING.txt文件中截取的对在Windows系统下编译的要求说明

环境准备

JDK安装(1.8)

Maven安装(3.5.2)

Findbugs(3.0.1) 

下载地址:http://findbugs.sourceforge.net/downloads.html

环境变量设置

FINDBUGS_HOME=F:\devTools\BigData\findbugs-3.0.1

%FINDBUGS_HOME%\bin配到path中

C:\Users\caimh>findbugs -version                --检查findbugs是否安装成功
3.0.1

CMake安装(3.7.0)

下载地址:https://cmake.org/files/  (各个版本都有)

环境变量设置

CMAKE_HOME=F:\devTools\BigData\cmake-3.7.0

%CMAKE_HOME%\bin追加大path变量

C:\Users\caimh>cmake -version            --检查CMake是否安装成功
cmake version 3.7.0
CMake suite maintained and supported by Kitware (kitware.com/cmake).

Protobuf安装(2.5.0)

  1. protobuf-2.5.0.tar.gz
  2. protoc-2.5.0-win32.zip

下载地址:https://github.com/protocolbuffers/protobuf/releases/tag/v2.5.0 ,不同的版本点击tag进行选择

安装参考:https://blog.csdn.net/weixin_38023225/article/details/100577281

ZLIB安装

下载地址:http://zlib.net/zlib128-dll.zip

解压到指定目录:F:\devTools\BigData\zlib128-dll

配置环境变量:在path后面添加ZLIB路径:F:\devTools\BigData\zlib128-dll

GIT安装(2.17)

window 10 sdk下载和安装

下载地址:https://developer.microsoft.com/zh-cn/windows/downloads/windows-10-sdk

VS2015安装(社区版)

VS2015 专业版下载链接
http://download.microsoft.com/download/B/8/9/B898E46E-CBAE-4045-A8E2-2D33DD36F3C4/vs2015.pro_chs.iso

VS2015 社区版下载链接
http://download.microsoft.com/download/B/4/8/B4870509-05CB-447C-878F-2F80E4CB464C/vs2015.com_chs.iso

VS2015 企业版下载链
http://download.microsoft.com/download/B/8/F/B8F1470D-2396-4E7A-83F5-AC09154EB925/vs2015.ent_chs.iso

安装参考:https://blog.csdn.net/childbor/article/details/81286534

安装时注意勾选C++

源码编译

编译错误解决

1.由于VS版本原因,官方默认使用Visual Studio 2010 Professional(前面要求文档已经有说明),我们使用的是VS2015版本,因此对于生成失败的项目,需要用Visual Studio 2015重新打开,升级项目至Visual Studio 2015版本即可:

F:\devTools\BigData\Hadoop\hadoop-2.7.4-src\hadoop-common-project\hadoop-common\src\main\winutils\winutils.sln
F:\devTools\BigData\Hadoop\hadoop-2.7.4-src\hadoop-common-project\hadoop-common\src\main\native\native.sln

1)打开F:\devTools\BigData\Hadoop\hadoop-2.7.4-src\hadoop-common-project\hadoop-common\src\main\winutils\winutils.sln

工程打开后,会出现下图所示的对话框,点击“确认”进行升级。

2)在winutils项目上右键->生成

会出现下图所示的错误,不用管它。

3)打开F:\devTools\BigData\Hadoop\hadoop-2.7.4-src\hadoop-common-project\hadoop-common\src\main\native\native.sln

重复上面1)2)步骤

2. 打开文件F:\devTools\BigData\Hadoop\hadoop-2.7.4-src\hadoop-hdfs-project\hadoop-hdfs\pom.xml`,
    将    'Visual Studio 10 Win64’    修改为  'Visual Studio 14 2015 Win64'

编译

1.首先以管理员身份打开VS2015的MSBuild命令提示符

2.进入源码目录下F:\devTools\BigData\Hadoop\hadoop-2.7.4-src,执行命令

mvn clean package -Pdist,native-win -DskipTests -Dtar -Dmaven.javadoc.skip=true -e

F:\devTools\BigData\Hadoop\hadoop-2.7.4-src>set Platform=x64
F:\devTools\BigData\Hadoop\hadoop-2.7.4-src>set ZLIB_HOME=F:\devTools\BigData\zlib128-dll\include
F:\devTools\BigData\Hadoop\hadoop-2.7.4-src>mvn clean package -Pdist,native-win -DskipTests -Dtar -Dmaven.javadoc.skip=true -e

3.编译成功

编译成功的基于Windows平台的文件将会存放在根目录下的hadoop-dist\target目录

问题

编译过程中出现过以下问题

1.Cannot run program "msbuild" (in directory "D:\hadoop-3.0.2-src\hadoop-common-project\hadoop-common"): CreateProcess error=2, 系统找不到指定的文件

解决方法:把msbuild可执行文件的绝对路径添加到path里(C:\Program Files (x86)\MSBuild\14.0\Bin)

2.Caused by: org.apache.tools.ant.BuildException: exec returned: 1

查看报错文件 F:\devTools\BigData\Hadoop\hadoop-2.7.4-src\hadoop-hdfs-project\hadoop-hdfs\target\antrun\build-main.xml

发现里面是一个cmake命令,在命令窗口执行了这个命令

查看报错信息,查看资料

引起这个错误的原因是 CMake 找不到 C++ 的编译器,检查 VS 的安装目录是否有 cl.exe 以及 rc.exe 和 rcdll.dll。

如果没有 cl.exe,那么可能是只安装了VS,没有安装 VC 编译器,打开VS,选择 VC 安装即可。

如果没有 rc.exe 和 rcdll.dll,这是编译资源用的,可能安装在 Windows SDK(win10 sdk) 中,直接复制这两个文件到 VC/bin 目录下即可。

再次执行Cmake命令,OK

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐