V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
JustPisces
V2EX  ›  Android

使用 Ubuntu22.04 编译 aosp 的问题,求助大佬

  •  
  •   JustPisces · 44 天前 · 1965 次点击
    这是一个创建于 44 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我在运行. build/envsetup.sh && lunch aosp_hotdog-userdebug && mka bacon 后得到如下错误

    FAILED: ninja: 'Android.bp', needed by 'out/soong/.bootstrap/build.ninja', missing and no known rule to make it

    谷歌之后发现并没有我这类似的错误

    sudo apt-get install libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev g++-multilib sudo apt-get install -y git flex bison gperf build-essential libncurses5-dev:i386 sudo apt-get install tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386 sudo apt-get install git-core gnupg flex bison gperf build-essential sudo apt-get install zip curl zlib1g-dev gcc-multilib g++-multilib sudo apt-get install libc6-dev-i386 sudo apt-get install lib32ncurses5-dev x11proto-core-dev libx11-dev sudo apt-get install libgl1-mesa-dev libxml2-utils xsltproc unzip m4 sudo apt-get install lib32z-dev ccache sudo apt-get install libssl-dev sudo apt-get install libncurses5

    环境依赖装了如上,jkd8 也装了,实在找不到问题所在了 求助大佬们

    第 1 条附言  ·  42 天前
    破案了 不是内存问题, 是因为我对 build_soong 进行了克制化,但是在拉取的时候没发现 manifests 中需要添加 linkfile ,之前一直没出问题是因为我并没有 make clean ,需要的那个 build.ninja 并没有重新编译,所以不报错,这次重装系统后需要 clean 的重新编译才出的问题,感谢各位大佬的回复
    17 条回复    2022-07-01 18:16:31 +08:00
    WebKit
        1
    WebKit  
       44 天前
    现在也不需要安装 jdk 了,你的内存能够吗
    JustPisces
        2
    JustPisces  
    OP
       44 天前
    @WebKit 内存是 16G swap 也分了 16G 之前使用 ubuntu18.04 可以正常编译,被我搞炸了系统后装了 22.04 ,然后就出这问题了
    kaycloud
        3
    kaycloud  
       44 天前
    看是不是内存问题。我开发机 16G 内存,swap 也分配了 16G ,cpu 是 8 核的,但是如果用 make -j8 甚至-j6 都会挂,大概-j4 才能正常编译
    JustPisces
        4
    JustPisces  
    OP
       43 天前
    @kaycloud 我没有加 -j 的参数,,不过我刚搜了一下 ubuntu 22.04 有一个低内存优化的功能,会将占用大量内存的进程给 kill 掉,我估计是那个原因,,晚上回家关掉试试看
    https://answers.launchpad.net/ubuntu/+question/701605
    这种东西是真坑
    encro
        5
    encro  
       43 天前
    经验告诉我们,发行版要低一个 lts 才可靠,比如现在出 22.04 了,用 20.04 就会兼容比较好。
    JustPisces
        6
    JustPisces  
    OP
       43 天前
    @encro 我本来也想用 20.04 的 不过一看 22.04 界面好看,动画酷炫,就忍不住了 哈哈 如果搞不定 就降到 20.04 去了
    encro
        7
    encro  
       43 天前
    @JustPisces

    是的,最近几年 gnome 还是挺给力的,不能用新版本是比较大的损失。
    pagxir
        8
    pagxir  
       43 天前 via Android
    其实你可以把编译环境套在非特权容器里 docker/lxc/lxd 里都可以。这样不影响图形界面也不影响编译。最近,我就最外层用了 alpine ,然后特权容器 archlinux 跑图像界面,然后再跑 kvm 的虚拟机,非特权容器跑编译。图像界面怎么搞,机器也不会启动不起来(外层有一个基本 alpine ,不带图形界面),也不影响编译环境。不过目前问题是,kvm 的 gvt-g 在 8250U 下好像有问题,导致里面的 win10guest 无法正常显卡加速。反而在 10700 能正常工作。
    Buges
        9
    Buges  
       43 天前
    这种事情最好用 docker 、nix 等 deterministic 的环境,再要么就用官方文档完全一致的版本,以避免各种环境问题。
    JustPisces
        10
    JustPisces  
    OP
       43 天前
    @pagxir 看起来好复杂 哈哈 好多东西涉及盲区了 我主要还是编译 rom 给自己用,linux 系统这块不太懂,不然也不会把系统搞炸了
    654656413245
        11
    654656413245  
       43 天前
    要看 lunch aosp_hotdog-userdebug 有没有执行成功

    另外尝试 make 的时候不要指定 target ,直接 make
    JustPisces
        12
    JustPisces  
    OP
       43 天前
    @654656413245 前两步都成功了 死在最后一步上的 make 的时候也没有指定-j 但是根据上面的回复 问题应该是处在 22.04 上新增的低内存优化功能上
    changnet
        13
    changnet  
       43 天前
    Linux 内存不够 kill 进程我记得一直是有的,CentOS 6.5 就有了。如果是这个问题 dmesg 可以看到 kill 的信息
    myki
        14
    myki  
       43 天前
    sudo systemctl disable --now systemd-oomd
    myki
        15
    myki  
       43 天前
    把 oomd 关了之后在编译应该就可以了
    FranzKafka95
        16
    FranzKafka95  
       43 天前 via Android
    首先要确保 repo sync 是完整拉取了整点源,可以通过 repo status 或者 repo info 进行检查,其次编译时第一次尽量全编译(直接 make),不要 m 或者 mmm 等,第三,编译时使用-j 参数,但不要超过你的系统核心限制,如果还不行, make clean 后再进行尝试
    xiiix
        17
    xiiix  
       41 天前
    内存不够的话 可以启用 swap 并保证物理内存加上虚拟内存超过 32G
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   4287 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 42ms · UTC 01:50 · PVG 09:50 · LAX 18:50 · JFK 21:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.