我正在尝试使用visual studio professional 2015在windows server 2012中构建hadoop 2.7.1源代码。
winutils项目的生成失败,因为libwinutils.c文件中存在错误。我安装了所需的软件并设置了所有的环境变量。或多或少,我遵循了这里的指示:hadoop on windows building/installation error
我注解掉了一行代码并替换了它,如下所示。基本上,我只是将“wsce\u config\u dir”和“wsce\u config\u file”字符串化,但是我去掉了将字符串转换为宽字符的宏的用法,并且成功了。但我真的很想知道为什么原来的代码不起作用。
# define WIDEN_STRING(x) WIDEN_STRING_(x)
# define WIDEN_STRING_(x) L ## x
# define STRINGIFY(x) STRINGIFY_(x)
# define STRINGIFY_(x) #x
# pragma message("WSCE config is " STRINGIFY(WSCE_CONFIG_DIR) "\\" STRINGIFY(WSCE_CONFIG_FILE))
//const WCHAR* wsceConfigRelativePath = WIDEN_STRING(STRINGIFY(WSCE_CONFIG_DIR)) L"\\" WIDEN_STRING(STRINGIFY(WSCE_CONFIG_FILE));
const WCHAR* wsceConfigRelativePath = STRINGIFY(WSCE_CONFIG_DIR) "\\" STRINGIFY(WSCE_CONFIG_FILE);
如有任何评论,我们将不胜感激。
谨致问候,保罗
3条答案
按热度按时间1zmg4dgp1#
这个问题是一年前发布的。
我不确定问这个问题的人是否解决了这个问题。
然而,对于那些因为同样的错误来到这里的人,我将发布我是如何解决的。
首先,我已经做了步骤什么蒂奥的答案下面的链接。
windows上的hadoop生成/安装错误
然后我改变了libwinutils.c中的代码顺序,如下所示。
(libwinutils.c位于\hadoop common project\hadoop common\src\main\winutils中)
我想用windowsdk7.1cmd构建代码的顺序很重要。
修改:(再修改一个就有意义了)
原件:
我执行了“mvn package-pdist,native win-dskiptests”命令。
gg58donl2#
请按以下方式更改代码(在Windows10中构建hadoop-2.10.0时,它对我有效)
cu6pst1q3#
我刚刚遇到了一个确切的问题,在挖掘之后,这里是解决问题的方法(我正在构建2.7.2,但我假设2.7.1没有太大区别)。最初的问题是没有定义wsce\u config\u dir和wsce\u config\u file。通常,它们来自项目的预处理器定义,值为$(wsceconfigdir)和$(wsceconfigfile),即这些环境变量的副本。在使用.pom构建hadoop时,这些参数由\hadoop-2.7.2-src\hadoop common project\hadoop common\pom.xml根据该文件前面的配置值wsce.config.dir和wsce.config.file设置。pom中的值是../etc/hadoop和wsce-site.xml。为了解决这个问题,我在libwinutils预处理器定义中用这些值替换了$(wsceconfigdir)和$(wsceconfigfile)。