【问题标题】:Hadoop build Failing in Windows: zconf.h is missing from native.sln?Hadoop 构建在 Windows 中失败:native.sln 中缺少 zconf.h?
【发布时间】:2017-03-18 00:57:51
【问题描述】:

我正在尝试在装有 Windows 10 家庭版的开发计算机上构建以下 hadoop 版本

hadoop-2.7.3-src

以下是关于我的本地开发环境的详细信息:

-Windows 10 家庭版

-Intel Core i5-6200U CPU @2.30GHz

-RAM 16 GB

-64 位操作系统,基于 x64 的处理器

-Microsoft Visual Studio Community 2015 版本 14.0.25431.01 更新 3

-还将 MSBUILD 位置作为 C:\Program Files (x86)\MSBuild\14.0\Bin\amd64 添加到 Windows 系统环境变量路径

-.NET 框架 4.6.01586

-cmake 3.7.2版

-CYGWIN_NT-10.0 LTPBCV82DUG 2.7.0(0.306/5/3) 2017-02-12 13:18 x86_64 Cygwin

-java版本“1.8.0_121”

-Java(TM) SE 运行时环境(内部版本 1.8.0_121-b13)

-Java HotSpot(TM) 64 位服务器 VM(内部版本 25.121-b13,混合模式)

-Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-10T11:41:47-05:00)

-Google 协议缓冲区 protoc --version libprotoc 2.5.0

另外,我创建了一个名为 Platform 的系统环境变量并将其设置为 x64

我打开了 Visual Studio 2015 (VS2015) 的开发人员命令提示符

c:\hadoop\hadoop-2.7.3-src> mvn package -Pdist,native-win -DskipTests -Dtar -X

很遗憾,我收到以下错误:

 [C:\hadoop\hadoop-2.7.3-src\hadoop-common-project\hadoop-common\src\main\native\native.vcxproj]
  ZlibDecompressor.c
c:\hadoop\hadoop-2.7.3-src\hadoop-common-project\hadoop-common\src\main\native\src\org\apache\hadoop\io\compress\zlib\org_apache_hadoop_io_compress_zlib.h(36): fatal error C1083: Cannot open include file: 'zlib.h': No such file or directory [C:\hadoop\hadoop-2.7.3-src\hadoop-common-project\hadoop-common\src\main\native\native.vcxproj]
Done Building Project "C:\hadoop\hadoop-2.7.3-src\hadoop-common-project\hadoop-common\src\main\native\native.vcxproj" (default targets) -- FAILED.
Done Building Project "C:\hadoop\hadoop-2.7.3-src\hadoop-common-project\hadoop-common\src\main\native\native.sln" (default targets) -- FAILED.

Build FAILED.

"C:\hadoop\hadoop-2.7.3-src\hadoop-common-project\hadoop-common\src\main\native\native.sln" (default target) (1) ->
"C:\hadoop\hadoop-2.7.3-src\hadoop-common-project\hadoop-common\src\main\native\native.vcxproj" (default target) (2) ->
(ClCompile target) ->
  c:\hadoop\hadoop-2.7.3-src\hadoop-common-project\hadoop-common\src\main\native\src\org\apache\hadoop\io\compress\zlib\org_apache_hadoop_io_compress_zlib.h(36): fatal error C1083: Cannot open include file: 'zlib.h': No such file or directory [C:\hadoop\hadoop-2.7.3-src\hadoop-common-project\hadoop-common\src\main\native\native.vcxproj]
  c:\hadoop\hadoop-2.7.3-src\hadoop-common-project\hadoop-common\src\main\native\src\org\apache\hadoop\io\compress\zlib\org_apache_hadoop_io_compress_zlib.h(36): fatal error C1083: Cannot open include file: 'zlib.h': No such file or directory [C:\hadoop\hadoop-2.7.3-src\hadoop-common-project\hadoop-common\src\main\native\native.vcxproj]

    0 Warning(s)
    2 Error(s)

Time Elapsed 00:00:02.49

上述错误与 zlib 工具有关。

网上研究后,有人说需要在Visual Studio中成功构建以下Visual Studio解决方案文件:

....\hadoop-2.7.3-src\hadoop-common-project\hadoop-common\src\main\native\native.sln

在管理员模式下使用Visual Studio 2015,打开native.sln文件,立即看到一个错误:

enter image description here

有人可以告诉我必须采取哪些步骤来解决上述错误吗?

【问题讨论】:

  • 你能分享一下你项目的 pom.xml 文件中的exec-maven-plugin 配置吗?
  • @nullpointer 感谢愿意提供帮助。我从 pom.xml 粘贴了 exec-maven-plugin 配置
  • 还将 MSBUILD 位置添加为 C:\Program Files (x86)\MSBuild\14.0\Bin\amd64 到 Windows 系统环境变量路径,但仍然抛出错误
  • 如果你打算使用多个配置文件,而不是使用-Pdist,native-win,我相信正确的语法是-Pdist -Pnative-win

标签: java c++ maven hadoop visual-studio-2015


【解决方案1】:

因此,为了解决这些问题,我必须采取很多步骤。

在 ....\hadoop-2.7.3-src\hadoop-common-project\hadoop-common\src\main\winutils 目录中,我在 Visual Studio 2015 中打开了以下解决方案:

winutils.sln

在 .....\hadoop-2.7.3-src\hadoop-common-project\hadoop-common\src\main\winutils\libwinutils.c 中,我注释掉了以下代码行,并做了一个修改后的副本如下所示:

//const WCHAR* wsceConfigRelativePath = WIDEN_STRING(STRINGIFY(WSCE_CONFIG_DIR)) L"\\" WIDEN_STRING(STRINGIFY(WSCE_CONFIG_FILE));

const WCHAR* wsceConfigRelativePath = WIDEN_STRING("../etc/hadoop") L"\\" WIDEN_STRING("wsce-site.xml");

另外,在 winutils 解决方案的属性窗口中,我必须将平台值设置为 x64,如下图所示:

接下来,我打开 Dos 命令提示符,并检查了我的 Windows 操作系统的确切版本:

版本

Microsoft Windows [版本 10.0.14393]

另外,我打开了 libwinutils 项目的属性窗口,并确保以下快照中标记的属性具有正确的值:

另外,我对 winutils 项目的属性采取了相同的步骤:

(抱歉,stackoverflow 不允许我放置另一个图片快照,但您基本上需要做的就是确保正确设置了 winutils 项目的属性)

我下载了 zlib 1.2.11 版本的源代码。使用 VS2015 (Visual Studio 2015) 的开发人员命令提示符我使用 cmake 从 zlib 版本 1.2.11 源代码构建 zlib

c:\zlib\zlib-1.2.11>cmake  -G "Visual Studio 14 2015" -A x64 c:\zlib\zlib-1.2.11\
-- The C compiler identification is MSVC 19.0.24215.1
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/x86_amd64/cl.exe
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/x86_amd64/cl.exe -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Looking for sys/types.h
-- Looking for sys/types.h - found
-- Looking for stdint.h
-- Looking for stdint.h - found
-- Looking for stddef.h
-- Looking for stddef.h - found
-- Check size of off64_t
-- Check size of off64_t - failed
-- Looking for fseeko
-- Looking for fseeko - not found
-- Looking for unistd.h
-- Looking for unistd.h - not found
-- Configuring done
-- Generating done
-- Build files have been written to: C:/zlib/zlib-1.2.11

最后,使用 cmake 运行构建

c:\zlib\zlib-1.2.11>cmake --build .

在 Windows 系统变量中,我定义了以下变量:

ZLIB_HOME 设置为 C:\zlib\zlib-1.2.11

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多