flutter_engine 交叉编译【自定义编译器(最新)】

本文围绕Flutter编译展开,先介绍准备编译环境,包括确定sysroot并备份、创建clang软连接;接着说明编译步骤,如生成ninja编译脚本、进行ninja编译;最后针对编译报错,如找不到依赖、不识别参数等给出解决办法,助力完成Flutter编译。

1. 前言

flutter的下载参考前一篇文章,flutter源码下载
源码下载结束后,最好使用gclient切换stable版本,比较稳定,这样使用自定义编译器修改的缺陷最少。

2. 准备编译环境

2.1 确定sysroot

sysroot是指你的编译器的sysroot,编译器的sysroot可以通过命令打印出来:

arm-linux-gnueabihf-gcc --print-sysroot

到时候编译不过,可能需要在sysroot路径的下的lib中新增内容,这里不建议直接修改sysroot,影响原生编译器运行,所以拷贝一份sysroot进行备份。

cp `arm-linux-gnueabihf-gcc --print-sysroot` ~/sysroot/arm-linux-gnueabihf

如果你的编译器运行 使用参数--print-sysroot没有打印,可以使用 -v找找--sysroot=dir对应的dir,如果还是没有,可以直接找到编译器的安装目录,去查找类似linux根目录(路径下包含bin, lib, usr等目录)的路径。如编译器gcc-linaro-12.0.1-2022.02-x86_64_arm-linux-gnueabihf.tar.gz,我安装在toolchains(相对路径)目录,那么他的sysroot就是:toolchains/gcc-linaro-12.0.1-2022.02-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc.

2.2 创建clang软连接

直接修改 src/build/toolchain/custom/BUILD.gn最终还是编译不过,使用软连接方式即可
直接修改 src/build/toolchain/custom/BUILD.gn最终还是编译不过,使用软连接方式即可
直接修改 src/build/toolchain/custom/BUILD.gn最终还是编译不过,使用软连接方式即可
要么直接创建clang/clang++的软连接

ln -sf \
toolchains/gcc-linaro-12.0.1-2022.02-x86_64_arm-linux-gnueabih/bin/arm-linux-gnueabihf-gcc \
toolchains/gcc-linaro-12.0.1-2022.02-x86_64_arm-linux-gnueabih/bin/clang

ln -sf \
toolchains/gcc-linaro-12.0.1-2022.02-x86_64_arm-linux-gnueabih/bin/arm-linux-gnueabihf-g++ 
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值