遇到HashSet_jni.h错误导致编译中止的问题

在64位ubuntu上编译katkit4.4时经常遇到以下错误导致编译中止,困扰了很长时间才解决此问题,尝试过几种不同的方法,最后总算找到了根本原因。

先看下错误现象,提示HashSet_jni.h error。

错误现象:

In file included from externalromium_org/content/common/android/hash_set.cc:5:0:
out/target/product/xxx/obj/GYPd_intermediates/content/jni/HashSet_jni.h:10:26: error: extra tokens at end of #ifndef directive [-Werror]
out/target/product/xxx/obj/GYPd_intermediates/content/jni/HashSet_jni.h:11:26: error: missing whitespace after the macro name [-Werror]
out/target/product/xxx/obj/GYPd_intermediates/content/jni/HashSet_jni.h:24:20: error: expected initializer before '<' token
out/target/product/xxx/obj/GYPd_intermediates/content/jni/HashSet_jni.h:26:17: error: expected initializer before '<' token
out/target/product/xxx/obj/GYPd_intermediates/content/jni/HashSet_jni.h:29:22: error: expected '{' before '<' token
out/target/product/xxx/obj/GYPd_intermediates/content/jni/HashSet_jni.h:29:22: error: expected unqualified-id before '<' token
externalromium_org/content/common/android/hash_set.cc:30:1: error: expected '}' at end of input
cc1plus: all warnings being treated as errors
make: *** [out/target/product/xxx/obj/STATIC_LIBRARIES/content_content_common_gyp_intermediates/content/common/android/hash_set.o] 错误 1

错误原因:
导致此问题的原因就是在ubuntu每天弹出的更新时选择了默认全部更新,导致原先系统自带的openjdk又安装上了,并且变成了默认的javap。
虽然每次检查java -version都显示是自己配置的java jdk1.6,但没有注意到javap已经改变。后来无意中在网上看到javap,才想起检查自己的默认javap是否正确。

先介绍下javap是什么呢?
javap是JDK自带的反汇编器,可以查看java编译器为我们生成的字节码。通过它,我们可以对照源代码和字节码,从而了解很多编译器内部的工作。
详细介绍请参考: javap(反汇编命令)详解

那么如何修改javap呢?
使用 sudo update-alternatives --config javap 命令即可以查看修改javap使用的默认版本,可以根据提示选择默认的版本。
如果自己安装的jdk的javap不存在,则可以通过以下方法添加javap
sudo update-alternatives --install /usr/bin/javap javap /home/ameyume/jdk1.6.0_45/bin/javap 300
再次执行 sudo update-alternatives --config javap 设置默认的javap即可。注:如果只有一个可选的话,则不会显示列表,即无需处理。

配置javap的命令用法:
sudo update-alternatives --config javap


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值