Firefly ROC-Rk3399-PC Android 8.1 源码编译问题解决
从淘宝购买了一块Firefly 的ROC-Rk3399-PC 的板子,下载了他们提供的Android 8.1源码,不知是因为我用的是Ubuntu 22.04(官方教程里是18.04)的原因还是一些软件版本更新导致(已知gcc的版本太新就会出现一个问题,但是问题报错我没有记录下来,接下来的第一个步骤就是解决这个问题),查了几天资料,终于编译成功了,做一下记录,也为同样需要编译这个部分源码的同学提供一点思路,若有同学发现并解决了文中没有提到的问题可以通过邮箱将解决方案发给我2324236464@qq.com,同时请附上你的博客链接,万分感谢。
1. Kernel multiple definition of yylloc。
参照# Ubuntu21.10 编译uboot 出错 `yylloc’解决方法
修改kernel/scripts/dtc/dtc-lexer.l
文件的第41行,在前面添加extern
关键字
extern YYLTYPE yylloc;
参考 https://huaweicloud.youkuaiyun.com/63566bedd3efff3090b5f1f6.html
修改scripts/dtc目录下的dtc-lexer.lex.c_shipped文件中找到
YYLTYPE yyloc这一行,在640行,在之前面加上extern
保存退出,
make 编译
正常编译
2. 提示UTF-8不能加载字符之类的
这类问题需要打开这个文件将这些字符删掉,我遇到的是packages/apps/Camera2/src/com/android/camera/ui/ModelListView.java
文件下的
3. 提示Jack-server 无法启动
试了很多方案都不行,只能将编译时jack-server关掉
修改FFTools/make.sh
的第75行,在make命令后添加 ANDROID_FORCE_JACK_ENABLED=disabled
参数
make -j $MAKE_THREAD ANDROID_FORCE_JACK_ENABLED=disabled
4. flex-2.5.39: loadlocale.c:130:_nl_intern_locale_data: ?? ‘cnt < (sizeof (_nl_value_type_LC_TIME) / sizeof (_nl_value_type_LC_TIME[0]))’ ???
参照flex-2.5.39: loadlocale.c:130: _nl_intern_locale_data: Assertion – 小固件
在~/.bashrc
添加export LC_ALL=C
或执行以下命令:
export LC_ALL=C
注意:执行该命令只在当前终端有效