rock960 android box compiling!

本文详细介绍了在Ubuntu16.04 64位环境下为ROCK960开发板构建Android Open Source Project (AOSP)的全过程。从搭建编译环境、下载源码到编译u-boot、内核及AOSP,直至生成可刷写镜像,涵盖了所有关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

refer: https://www.96boards.org/documentation/consumer/rock/build/aosp.md.html

Build AOSP for ROCK960

Build environment setup

Recommend build host is Ubuntu 16.04 64bit, for other hosts, refer official Android documents Establishing a Build Environment.

$ mkdir -p ~/bin
$ wget 'https://storage.googleapis.com/git-repo-downloads/repo' -P ~/bin
$ chmod +x ~/bin/repo

Android’s source code primarily consists of Java, C++, and XML files. To compile the source code, you’ll need to install OpenJDK 8, GNU C and C++ compilers, XML parsing libraries, ImageMagick, and several other related packages.

$ sudo apt-get update
$ sudo apt-get install openjdk-8-jdk android-tools-adb bc bison build-essential curl flex g++-multilib gcc-multilib gnupg gperf imagemagick lib32ncurses5-dev lib32readline-dev lib32z1-dev libesd0-dev liblz4-tool libncurses5-dev libsdl1.2-dev libssl-dev libwxgtk3.0-dev libxml2 libxml2-utils lzop pngcrush rsync schedtool squashfs-tools xsltproc yasm zip zlib1g-dev

Configure the JAVA environment

$ export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
$ export PATH=$JAVA_HOME/bin:$PATH
$ export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar

Download source code

$ mkdir rock960-android
$ cd rock960-android

Then run:

$ ~/bin/repo init -u https://github.com/96rocks/manifests.git -b rock960-box-7.1 -m rock960_box_7.1_release.xml
$ repo sync -j$(nproc) -c

It might take quite a bit of time to fetch the entire AOSP source code(around 86G)!

Build u-boot

$ cd u-boot
$ make rk3399_box_defconfig
$ ./mkv8.sh
$ cd ..

The generated images are rk3399_loader_v_xxx.bin and uboot.img

Building kernel

$ cd kernel
$ make rockchip_defconfig
$ make rk3399-rock960-model-ab.img -j$(nproc)
$ cd ..

The generated images are kernel.img and resource.img:

  • kernel.img, kernel with rkcrc checksum
  • resource.img, contains dtb and boot logo, Rockchip format resource package

Building AOSP

$ source build/envsetup.sh
$ lunch rk3399_box-userdebug
$ make -j$(nproc)

源码编译报错

ubuntu 18.04 和 android 8.1

flex-2.5.39: loadlocale.c:130: _nl_intern_locale_data: Assertioncnt < (sizeof (_nl_value_type_LC_TIME) / sizeof (_nl_value_type_LC_TIME[0]))' failed.
Aborted (core dumped)

解决

export LC_ALL=C

LC_ALL=C 去除所有本地化的设置,或者LC_ALL=en_US.utf-8

It takes a long time, take a break and wait…

Generate images

$ ln -s RKTools/linux/Linux_Pack_Firmware/rockdev/ rockdev
$ ./mkimage.sh

The generated images under rockdev/Image-rk3399_box are

boot.img    MiniLoaderAll.bin  parameter.txt        pcba_whole_misc.img  resource.img  trust.img
kernel.img  misc.img           pcba_small_misc.img  recovery.img         system.img    uboot.img

They can be flashed with fastboot or Rockchip upgrade_tool.

Pack all partitions into one image.

$ cd rockdev
$ ln -s Image-rk3399_box Image
$ ./mkupdate.sh
Start to make update.img...
Android Firmware Package Tool v1.62
------ PACKAGE ------
Add file: ./package-file
Add file: ./Image/MiniLoaderAll.bin
Add file: ./Image/parameter.txt
Add file: ./Image/trust.img
Add file: ./Image/uboot.img
Add file: ./Image/misc.img
Add file: ./Image/resource.img
Add file: ./Image/kernel.img
Add file: ./Image/boot.img
Add file: ./Image/recovery.img
Add file: ./Image/system.img
Add CRC...
Make firmware OK!
------ OK ------
********RKImageMaker ver 1.63********
Generating new image, please wait...
Writing head info...
Writing boot file...
Writing firmware...
Generating MD5 data...
MD5 data generated successfully!
New image generated successfully!
Making update.img OK.

update.img is the packed image with all partitions.

Proceed to Installation Instructions

<think>好的,用户遇到了在VSCode中按F6键时出现“Error compiling!”的问题,需要解决这个问题。首先,我需要分析可能的原因和解决方案,然后按照用户的要求组织回答。 首先,我应该考虑常见的编译错误原因。可能的问题包括代码语法错误、编译器配置问题、路径设置不正确、插件冲突或者快捷键配置错误。接下来需要一步步引导用户检查这些方面。 用户的问题可能与编译环境有关,比如编译器是否安装正确,环境变量是否配置。例如,如果用户使用C/C++,可能需要检查gcc或clang是否正确安装,并且在VSCode的终端中可以访问。此外,检查tasks.json配置文件是否正确,因为F6可能触发了特定的编译任务,如果任务配置有误,会导致编译失败。 另外,用户可能安装了某些插件,比如Code Runner,这些插件可能会影响编译过程。需要确认插件配置是否正确,或者是否存在冲突。例如,Code Runner的executorMap设置可能需要调整,或者用户是否有权限执行编译命令。 还有可能是文件路径中包含特殊字符或空格,导致编译器无法正确解析路径。需要检查项目路径是否含有空格或特殊符号,并建议用户更改为简单路径。 另外,查看具体的错误日志非常重要。用户可能没有注意到详细的错误信息,需要指导他们打开终端或输出面板,查看具体的错误信息,从而定位问题所在。 权限问题也是一个可能性,尤其是在Linux或Mac系统中,如果没有足够的权限,可能导致编译失败。例如,用户可能尝试在受保护的目录中编译,或者编译器本身没有执行权限。需要提醒用户检查文件权限,并使用chmod或sudo命令解决。 最后,快捷键冲突的可能性也不能排除。用户可能自定义了F6键,或者与其他插件冲突,导致按下F6时没有执行预期的编译命令。需要检查键盘快捷键设置,确认F6绑定的命令是否正确。 在组织回答时,需要分步骤说明,结构清晰,逐步排除可能的原因。同时,根据用户提供的引用内容,可能涉及权限问题(引用3提到Permission denied),编译配置路径问题(引用2提到路径修改),以及编译过程中的终止操作(引用1中的make过程)。这些引用内容可以结合起来,帮助用户检查他们的配置和权限设置。 例如,引用3中的权限问题提示用户需要检查编译输出目录的权限,或者是否在正确的路径下执行编译。引用2中的路径修改示例可以类比到VSCode的tasks.json中的路径配置是否正确,是否有绝对路径或相对路径的问题。 总结起来,回答需要涵盖以下几个步骤: 1. 检查代码语法错误。 2. 验证编译器安装和环境变量。 3. 检查VSCode的编译任务配置(tasks.json)。 4. 查看错误日志定位问题。 5. 检查文件路径和权限。 6. 排除插件或快捷键冲突。 每个步骤需要详细说明如何操作,例如如何打开终端,如何查看输出面板,如何修改tasks.json文件等。同时,结合用户提供的引用内容,强调权限和路径配置的重要性,可能引用3中的Permission denied问题需要特别注意。 最后,生成相关问题,帮助用户深入理解可能的相关问题,例如调试配置、环境变量设置、插件使用等。</think>### 解决VSCode中按F6键出现“Error compiling!”的步骤 #### 1. **检查代码语法错误** - **现象**:编译错误最常见的原因是代码中存在语法错误(如缺少分号、括号不匹配等)。 - **操作**: 1. 打开VSCode的“问题面板”(`View > Problems` 或快捷键 `Ctrl+Shift+M`)查看具体错误位置。 2 在终端中手动运行编译器命令(如`gcc main.c -o main`)验证是否报错[^3]。 #### 2. **验证编译器安装与环境变量** - **现象**:如果编译器未正确安装或环境变量未配置,VSCode无法调用编译器。 - **操作**: 1. 在终端输入编译器命令(如`gcc --version`或`python --version`)检查是否安装。 2. 若未安装,需安装对应语言的编译工具链(如GCC、Python、JDK等)。 3. 若已安装但终端无法识别,需配置系统环境变量(如将`/usr/bin`添加到`PATH`)[^2]。 #### 3. **检查VSCode编译任务配置** - **现象**:F6可能绑定了自定义编译任务,若`tasks.json`配置错误会导致失败。 - **操作**: 1. 打开VSCode的编译任务配置:`Terminal > Configure Default Build Task`。 2. 确认`tasks.json`中`command`和`args`字段指向正确的编译器路径和参数。例如: ```json { "version": "2.0.0", "tasks": [{ "label": "Build", "type": "shell", "command": "gcc", "args": ["main.c", "-o", "main"] }] } ``` 3. 注意路径中避免空格或特殊字符(参考引用[2]的路径修改示例)[^2]。 #### 4. **查看错误日志定位问题** - **操作**: 1. 打开VSCode的“输出面板”(`View > Output` 或快捷键 `Ctrl+K Ctrl+H`)。 2. 选择与编译相关的输出通道(如`Tasks`或`C/C++`),查看具体错误信息。例如: ``` main.c:5:1: error: expected ';' before '}' token ``` 3. 根据日志调整代码或配置。 #### 5. **检查文件路径与权限** - **现象**:权限不足或路径错误会导致编译中断(如引用[3]的`Permission denied`)。 - **操作**: 1. 确保项目目录有读写权限(Linux/Mac使用`chmod 777 /path`临时开放权限)。 2. 避免路径包含中文或特殊符号(如`C:\Users\张三\project`改为`C:\project`)。 #### 6. **排除插件或快捷键冲突** - **现象**:其他插件可能覆盖了F6的功能。 - **操作**: 1. 打开快捷键设置:`File > Preferences > Keyboard Shortcuts`。 2. 搜索`F6`键绑定的命令,确认是否与编译任务冲突。 3. 临时禁用插件(如Code Runner)测试是否为插件冲突。 --- ### 示例修复流程 假设错误为**权限问题**: 1. 终端输入`gcc main.c -o main`,若显示`Permission denied`。 2. 检查输出文件目录权限:`ls -l /path/to/project`。 3. 修改权限:`sudo chmod 755 /path/to/project`。 4. 重新按F6编译。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值