error: comparison of integers of different signs: ‘int‘ and ‘const u32‘ (aka ‘const unsigned int‘)

在编译第三方 ethtool 工具的时候出现很多以下的错误提示:

external/ethtool/fec.c:204:26: error: comparison of integers of different signs: 'int' and '__u32' (aka 'unsigned int') [-Werror,-Wsign-compare]
        for (offset = 0; offset < regs->len; offset += 4) {
                         ~~~~~~ ^ ~~~~~~~~~
1 error generated.
[ 98% 3672/3714] //external/ethtool:ethtool clang ibm_emac.c
FAILED: out/soong/.intermediates/external/ethtool/ethtool/android_arm_armv7-a-neon_cortex-a15_core/obj/external/ethtool/ibm_emac.o 
PWD=/proc/self/cwd prebuilts/misc/linux-x86/ccache/ccache prebuilts/clang/host/linux-x86/clang-4691093/bin/clang -c -Iexternal/ethtool -mthumb -Os -fomit-frame-pointer -DANDROID -fmessage-length=0 -W -Wall -Wno-unused -Winit-self -Wpointer-arith -no-canonical-prefixes -DNDEBUG -UDEBUG -fno-exceptions -Wno-multichar -O2 -g -fno-strict-aliasing -fdebug-prefix-map=/proc/self/cwd= -D__compiler_offsetof=__builtin_offsetof -Werror=int-conversion -Wno-reserved-id-macro -Wno-format-pedantic -Wno-unused-command-line-argument -fcolor-diagnostics -Wno-expansion-to-defined -Wno-zero-as-null-pointer-constant -fdebug-prefix-map=$PWD/= -ffunction-sections -fdata-sections -fno-short-enums -funwind-tables -fstack-protector-strong -Wa,--noexecstack -D_FORTIFY_SOURCE=2 -Wstrict-aliasing=2 -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Werror=date-time -Werror=format-security -nostdlibinc -msoft-float -march=armv7-a -mfloat-abi=softfp -mfpu=neon -mcpu=cortex-a15 -mfpu=neon-vfpv4 -D__ARM_FEATURE_LPAE=1 -Iexternal/libcxx/include -Iexternal/libcxxabi/include -Ibionic/libc/system_properties/include -Isystem/core/property_service/libpropertyinfoparser/include -Isystem/core/include -Isystem/media/audio/include -Ihardware/libhardware/include -Ihardware/libhardware_legacy/include -Ihardware/ril/include -Ilibnativehelper/include -Iframeworks/native/include -Iframeworks/native/opengl/include -Iframeworks/av/include -isystem bionic/libc/include -isystem bionic/libc/kernel/uapi -isystem bionic/libc/kernel/uapi/asm-arm -isystem bionic/libc/kernel/android/scsi -isystem bionic/libc/kernel/android/uapi -Ilibnativehelper/include_jni -Werror -Wsign-compare -Wno-missing-field-initializers '-DPACKAGE="ethtool"' '-DVERSION="5.3"' -std=gnu11 -target arm-linux-androideabi -Bprebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9/arm-linux-androideabi/bin -fPIE -D_USING_LIBCXX -std=gnu99  -Werror=int-to-pointer-cast -Werror=pointer-to-int-cast -Werror=address-of-temporary -Werror=return-type -Wno-tautological-constant-compare -Wno-null-pointer-arithmetic -Wno-enum-compare -Wno-enum-compare-switch -MD -MF out/soong/.intermediates/external/ethtool/ethtool/android_arm_armv7-a-neon_cortex-a15_core/obj/external/ethtool/ibm_emac.o.d -o out/soong/.intermediates/external/ethtool/ethtool/android_arm_armv7-a-neon_cortex-a15_core/obj/external/ethtool/ibm_emac.o external/ethtool/ibm_emac.c
external/ethtool/ibm_emac.c:253:16: error: comparison of integers of different signs: 'int' and 'u32' (aka 'unsigned int') [-Werror,-Wsign-compare]
        for (i = 0; i < p->tx_count; ++i) {
                    ~ ^ ~~~~~~~~~~~
external/ethtool/ibm_emac.c:259:16: error: comparison of integers of different signs: 'int' and 'u32' (aka 'unsigned int') [-Werror,-Wsign-compare]
        for (i = 0; i < p->rx_count; ++i) {
                    ~ ^ ~~~~~~~~~~~
external/ethtool/ibm_emac.c:265:16: error: comparison of integers of different signs: 'int' and 'u32' (aka 'unsigned int') [-Werror,-Wsign-compare]
        for (i = 0; i < p->rx_count; ++i) {
                    ~ ^ ~~~~~~~~~~~
3 errors generated.

error: comparison of integers of different signs: 'int' and 'u32' (aka 'unsigned int') [-Werror,-Wsign-compare]

其实这条错误是编译器没有忽略warring的错误导致的,直接把warring变成了error。

这里需要在工具下面找到Android.bp

    cflags: [
        "-Wno-missing-field-initializers",
        "-DPACKAGE=\"ethtool\"",
        "-DVERSION=\"5.3\"",
        "-std=gnu11",
    ]

添加  "-Wno-sign-compare",  这个添加其实就有技巧的仔细对比:

[-Werror,-Wsign-compare]

 "-Wno-sign-compare",


-Wsign-compare  ===》 -Wno-sign-compare

    cflags: [
        +"-Wno-sign-compare",
        "-Wno-missing-field-initializers",
        "-DPACKAGE=\"ethtool\"",
        "-DVERSION=\"5.3\"",
        "-std=gnu11",
    ]

这样就忽略了类似的这种编译错误

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值