首页
社区
课程
招聘
[求助]nexus5重新编译手机内核,手机WiFi无法正常使用
发表于: 2019-9-14 17:20 3532

[求助]nexus5重新编译手机内核,手机WiFi无法正常使用

2019-9-14 17:20
3532
打开WiFi,一直是:正在搜索WLAN网络...
没刷自己编译的内核前,可以正常使用WiFi。刷回官方boot.img,也可以正常使用WiFi。

手机是nexus5,代号hammerhead,系统:安卓 6.0.0_r1。
系统是自己用源码编译的,正常使用无任何问题。
然后下载内核源码,只改动了一个错误,防止编译出错。
内核源码链接:https://aosp.tuna.tsinghua.edu.cn/kernel/msm.git
我下载的分支:origin/android-msm-hammerhead-3.4-marshmallow-mr3
手机原本内核信息:
Linux version 3.4.0-g2aa165e (android-build@wped19.hot.corp.google.com) (gcc version 4.8 (GCC) ) #1 SMP PREEMPT Thu Aug 20 06:07:34 UTC 2015

初步怀疑是我下载的内核有问题,可能它本身WiFi就有问题。
各位大佬们,我该怎么确定哪个版本的内核适合我的手机,可以正常使用呢?求指点


内核修改内容:

报错(编译结束却没有生成文件,就是报错!!!):

Can't use 'defined(@array)' (Maybe you should just omit the defined()?) at kernel/timeconst.pl line 373.
/home/xmhwws/Android/AndroidKernal/msm/kernel/Makefile:129: recipe for target 'kernel/timeconst.h' failed
make[1]: *** [kernel/timeconst.h] Error 255
Makefile:950: recipe for target 'kernel' failed
make: *** [kernel] Error 2

其实,提示的错误信息已经明确告诉你了,你应该省略defined().

这里,我们打开 kernel/timeconst.pl

@val = @{$canned_values{$hz}};

if (!defined(@val)) {

@val = compute_values($hz);

}

output($hz, @val);

将if (!defined(@val)) 改为if (!(@val)),即将第373行的defined删除,再次编译就可以通过了。

查了一下更新,发现其中有一项是perl版本升级到了 v5.22.1,然后查了perl官方文档,发现官网因为一个bug,该版本将defined(@array)去掉了。可以直接使用数组判断非空。



[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2019-9-14 17:29 被xmhwws编辑 ,原因:
收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 6266
活跃值: (1276)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
用了android-msm-hammerhead-3.4-marshmallow,WiFi正常。
猜测是正确的,android-msm-hammerhead-3.4-marshmallow-mr3本身WiFi就有问题。
2019-9-14 18:36
1
雪    币: 6369
活跃值: (1693)
能力值: ( LV4,RANK:156 )
在线值:
发帖
回帖
粉丝
3
看看内核日志?反正我是直接看官方固件里面的内核版本分支,切过去编译的
2019-9-14 23:35
0
雪    币: 9479
活跃值: (757)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
其实很简单,看一下官方内核的版本号,直接用那个就没有问题。
2019-9-15 01:22
0
雪    币: 18
活跃值: (861)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
5
我刷了也是同样的问题,此处是不能正常使用DHCP模式,需要手动指定wifi IP即可连接网络。
2019-9-17 01:36
0
游客
登录 | 注册 方可回帖
返回
//