问下编译 Android 内核 clang 的选择 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
liyafe1997
V2EX    Android

问下编译 Android 内核 clang 的选择

  •  
  •   liyafe1997 2024 年 6 月 12 日 7979 次点击
    这是一个创建于 608 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我看很多教程里用的都是这个 https://android.googlesource.com/platform/prebuits/clang/host/linux-x86/,这个 Google 官方的 Pre-built binary ,甚至还有给每个安卓版本的分支,比如我编译的是 android12 的内核最好是不是用 android12-gsi 这个分支的编译器?

    之前试了下,用 Ubuntu22.04 源里的 clang 10.0.0 似乎没有问题,编译的内核正常。但是后来换到另一台 debian 环境的机器,上面 PATH 里的 clang 是 16.0.5 的,编译出来的内核能 boot 到锁屏界面,但是不出几秒钟之后就死机,然后自动重启。

    反复编译测试了几次都是如此,确认所有 source ,defconfig ,脚本,流程等等都一模一样,就是环境&编译的区别,编译过程也没有报错或报 warning 。看来编译器玄学/bug/来带 bug 是可能的。因此想问一下,最佳实践是用哪的编译器比较好,有没有一个“官方御用 clang binary”之类的东西?虽然 clang 10.0.0 或者那个 Google 的 git 里的也许看起来没问题,但是不知道会不会有其它隐性 bug....

    5 条回复    2024-06-14 17:02:01 +08:00
    hejinliangsb
        1
    hejinliangsb  
       2024 年 6 月 13 日 via Android
    你用什么手机刷机的
    liyafe1997
        2
    liyafe1997  
    OP
       2024 年 6 月 13 日 via Android
    @hejinliangsb K30p ,不过这不重要吧?这应该是一个通用的问题。
    rev1si0n
        3
    rev1si0n  
       2024 年 6 月 14 日
    是的,有的,都在 repo 里,最好是完全匹配官方用的,有时候可能差一个版本都能给你搞出问题来。最常见的,是给你整个编译不通过,这还好你还能知道错。编译安卓内核不要用外部的任何东西,用官方 repo 里的,并且版本分支要匹配,你用外面的编译器,能编译出来 kernel 文件也是佩服。
    liyafe1997
        4
    liyafe1997  
    OP
       2024 年 6 月 14 日
    @rev1si0n 我试了下,在开启一些 defconfig 之后官方那个 clang ( android12-gsi 分支)有个头文件会不停地报 Warning 最后编译的内核启不来,倒是我 ubuntu22.04 源里的那个 clang 没问题,这个 clang 似乎是不管什么情况都是最好使的,给我整不会了。
    rev1si0n
        5
    rev1si0n  
       2024 年 6 月 14 日
    @liyafe1997 没必要卡死 gsi 分支啊,试试 android-12.1.0_r27 ,最新最旧来回切换二分法,总归能找到,其次,你要得确定你编译的安卓 12 的内核,因为事实上,安卓 11 的内核塞到 12 里也不是不能运行,很多定制 rom 没有内核源码就是这么干的。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4478 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 02:14 PVG 10:14 LAX 18:14 JFK 21:14
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86