首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >rtw_android.c错误:函数‘strnicmp’的隐式声明[-Werror=隐式-函数-声明]

rtw_android.c错误:函数‘strnicmp’的隐式声明[-Werror=隐式-函数-声明]
EN

Stack Overflow用户
提问于 2016-01-10 04:52:36
回答 1查看 2.1K关注 0票数 0

我正在尝试为KaliLinux2.0安装我的Alfa AWUS036ACH适配器

我已经修正了先前的错误,但现在我被困在这里了。这是我收到的错误。

os_dep/linux/rtw_android.c:345:3:错误:函数‘strnicmp’的隐式声明-Werror=隐式函数声明if(0 == strnicmp(cmdstr,android_wifi_cmd_strcmd_num,strlen(Android_wifi_cmd_strcmd_num)^

我的编码技能还没有达到标准水平,我还在学习,所以如果能提供任何帮助,我们将不胜感激。

具体的守则如下:

代码语言:javascript
复制
int rtw_android_cmdstr_to_num(char *cmdstr)
{
    int cmd_num;
    for(cmd_num=0 ; cmd_num<ANDROID_WIFI_CMD_MAX; cmd_num++)
        if(0 == strnicmp(cmdstr , android_wifi_cmd_str[cmd_num], strlen(android_wifi_cmd_str[cmd_num])) )
        break;

return cmd_num;
}

我看了其他人对其他问题的答案,我不知道该如何调整这段代码。

EN

回答 1

Stack Overflow用户

发布于 2016-03-29 13:09:01

对你的问题的部分回答:

基于的Kali Linux2.0附带了一个Linux4.x内核。

在最近的Linux版本中,系统调用strnicmp已经被废弃,取而代之的是一个包装器,以允许以后的删除,从而有利于strncasecmp。另见此提交日志

了解系统是否支持这些调用的一种方法是在内核符号表中查找它们的名称,一个包含名称和内存位置的表。此符号表通常由名为System.map的文件表示,位于/boot/中。

Linux 2.6.32的一个示例:

代码语言:javascript
复制
    $ grep -e strnicmp -e strncasecmp /boot/System.map-2.6.32
    ffffffff81298450 T strnicmp
    ffffffff81298540 T strncasecmp
    ffffffff8183a680 r __ksymtab_strncasecmp
    ffffffff8183a6a0 r __ksymtab_strnicmp
    ffffffff8184e0d0 r __kcrctab_strncasecmp
    ffffffff8184e0e0 r __kcrctab_strnicmp
    ffffffff81861153 r __kstrtab_strncasecmp
    ffffffff8186116a r __kstrtab_strnicmp

Linux 4.4.6的一个例子:

代码语言:javascript
复制
    $ grep -e strnicmp -e strncasecmp /boot/System.map-4.4.6
    ffffffff813aaee0 T strncasecmp
    ffffffff81b484a0 R __ksymtab_strncasecmp
    ffffffff81b608c8 r __kcrctab_strncasecmp
    ffffffff81b776e4 r __kstrtab_strncasecmp

要解决您的问题,没有回归,必须将一个反映重命名的子句添加到代码中,在本例中是rtw_android.c

LinuxVersion4.0.0的一个示例diff:

代码语言:javascript
复制
    diff -urN os_dep.orig/linux/rtw_android.c os_dep/linux/rtw_android.c
    --- os_dep.orig/linux/rtw_android.c 2016-03-29 13:53:46.657398453 +0200
    +++ os_dep/linux/rtw_android.c  2016-03-29 13:26:13.871323615 +0200
    @@ -30,6 +30,10 @@
     #endif
     #endif /* defined(RTW_ENABLE_WIFI_CONTROL_FUNC) */

    +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 0, 0))
    +#define strnicmp strncasecmp
    +#endif
    +

     const char *android_wifi_cmd_str[ANDROID_WIFI_CMD_MAX] = {
        "START",
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34702202

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档