我在运行. 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
WebKit 2022-06-29 09:20:32 +08:00
现在也不需要安装 jdk 了,你的内存能够吗
|
2
JustPisces OP @WebKit 内存是 16G swap 也分了 16G 之前使用 ubuntu18.04 可以正常编译,被我搞炸了系统后装了 22.04 ,然后就出这问题了
|
3
kaycloud 2022-06-29 09:48:24 +08:00
看是不是内存问题。我开发机 16G 内存,swap 也分配了 16G ,cpu 是 8 核的,但是如果用 make -j8 甚至-j6 都会挂,大概-j4 才能正常编译
|
4
JustPisces OP @kaycloud 我没有加 -j 的参数,,不过我刚搜了一下 ubuntu 22.04 有一个低内存优化的功能,会将占用大量内存的进程给 kill 掉,我估计是那个原因,,晚上回家关掉试试看
https://answers.launchpad.net/ubuntu/+question/701605 这种东西是真坑 |
5
encro 2022-06-29 10:10:25 +08:00
经验告诉我们,发行版要低一个 lts 才可靠,比如现在出 22.04 了,用 20.04 就会兼容比较好。
|
6
JustPisces OP @encro 我本来也想用 20.04 的 不过一看 22.04 界面好看,动画酷炫,就忍不住了 哈哈 如果搞不定 就降到 20.04 去了
|
7
encro 2022-06-29 11:02:25 +08:00
|
8
pagxir 2022-06-29 11:38:47 +08:00 via Android
其实你可以把编译环境套在非特权容器里 docker/lxc/lxd 里都可以。这样不影响图形界面也不影响编译。最近,我就最外层用了 alpine ,然后特权容器 archlinux 跑图像界面,然后再跑 kvm 的虚拟机,非特权容器跑编译。图像界面怎么搞,机器也不会启动不起来(外层有一个基本 alpine ,不带图形界面),也不影响编译环境。不过目前问题是,kvm 的 gvt-g 在 8250U 下好像有问题,导致里面的 win10guest 无法正常显卡加速。反而在 10700 能正常工作。
|
9
Buges 2022-06-29 11:58:59 +08:00
这种事情最好用 docker 、nix 等 deterministic 的环境,再要么就用官方文档完全一致的版本,以避免各种环境问题。
|
10
JustPisces OP @pagxir 看起来好复杂 哈哈 好多东西涉及盲区了 我主要还是编译 rom 给自己用,linux 系统这块不太懂,不然也不会把系统搞炸了
|
11
654656413245 2022-06-29 13:33:43 +08:00
要看 lunch aosp_hotdog-userdebug 有没有执行成功
另外尝试 make 的时候不要指定 target ,直接 make |
12
JustPisces OP @654656413245 前两步都成功了 死在最后一步上的 make 的时候也没有指定-j 但是根据上面的回复 问题应该是处在 22.04 上新增的低内存优化功能上
|
13
changnet 2022-06-29 14:40:50 +08:00
Linux 内存不够 kill 进程我记得一直是有的,CentOS 6.5 就有了。如果是这个问题 dmesg 可以看到 kill 的信息
|
14
myki 2022-06-29 18:52:26 +08:00
sudo systemctl disable --now systemd-oomd
|
15
myki 2022-06-29 19:03:57 +08:00
把 oomd 关了之后在编译应该就可以了
|
16
FranzKafka95 2022-06-29 23:31:08 +08:00 via Android
首先要确保 repo sync 是完整拉取了整点源,可以通过 repo status 或者 repo info 进行检查,其次编译时第一次尽量全编译(直接 make),不要 m 或者 mmm 等,第三,编译时使用-j 参数,但不要超过你的系统核心限制,如果还不行, make clean 后再进行尝试
|
17
xiiix 2022-07-01 18:16:31 +08:00
内存不够的话 可以启用 swap 并保证物理内存加上虚拟内存超过 32G
|