A partial answer to your question:
Kali Linux 2.0, based on Debian Jessie, comes with a Linux 4.x kernel.
In recent Linux versions, the system call strnicmp has been deprecated and replaced by a wrapper, to allow later removal, in favour of strncasecmp. See also this commit log.
One way to find out if your system supports these calls, is to look for their names in the kernel symbol table, a table with names and their memory locations. This symbol table is usually represented by a file named System.map, and located in /boot/.
An example for Linux 2.6.32:
$ 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
An example for Linux 4.4.6:
$ 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
To fix your problem, without regression, a clause that reflects the renaming will have to be added to the code, in this case rtw_android.c.
An example diff for Linux version 4.0.0:
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",
#includethe correct header, or that's not the correct function name. The case-insensitive string compare functions are not standardized, so different implementations have different names for the function, e.g.strncasecmp. - user3386109