NVIDIA Tegra
DRIVE 5.0 Linux 开源软件

构建指南
5.0.10.3 版本


 
构建 交叉工具链
本主题介绍此 SDK 版本中存在的交叉工具链,以及如何构建交叉工具链。
交叉工具链是指在主机(x86 或 x86_64)上执行,但为 ARM 架构生成代码的编译器、链接器和目标 C 库。C 库用于链接编译后的代码以创建目标应用程序。
SDK 中提供的工具链(<top>/toolchains 目录)在下表中描述。
目录
组件
工具链的使用场景
aarch64-linux-android-4.8
GCC - 4.8
Binutils - 2.24
库 - 无
来源 - Android 代码
构建 64 位可信操作系统
arm-eabi-4.8
GCC -4.8
Binutils - 2.23.2
库 - 无
来源 - Android 代码
为可信操作系统构建 32 位模块
tegra-4.8.5-nv-softp-adsp
GCC - 4.8.5
Binutils - 2.23.2
库 - eglibc-2.18
来源 - Yocto 1.8
用于 ADSP 固件和 ADSP 插件编译
tegra-4.9-nv
GCC - 4.9.4
Binutils - 2.24
库 - glibc-2.21
来源 - Yocto 1.8
将 guest PCT 绑定到 hypervisor,构建 64 位 Quickboot,以及构建用户空间组件
arm-none-eabi-4_8-2014q3-20140805
GCC - 4.8.4 20140725
Binutils - 2.23.2.20140731
库 - Newlib 2.1.0,带有主线反向移植
来源 - Linaro
为 SPE 和 SCE 构建 32 位 ARM 代码。这也用于设置 CROSS32CC 以构建刷写内核。
有关重建 GCC 工具链的说明,请参阅 SDK 中提供的 How-to-build-toolchain.pdf,路径为
<top>/drive-t186ref-foundation_src/linaro/
或以下网站
https://launchpad.net/gcc-arm-embedded/4.8/4.8-2014-q3-update
先决条件
1. 设置运行 Ubuntu 14.04 或更高版本的 Linux 主机系统。
2. 使用以下命令安装所需的软件包
sudo apt-get install gawk wget git-core diffstat
unzip texinfo gcc-multilib build-essential chrpath socat libsdl1.2-dev xterm make xsltproc docbook-utils fop dblatex xmlto realpath
3. 安装 Linux 运行文件
<top>/drive-t186ref-linux-5.0.10.3-<build>-oss-src.run
<top>/drive-t186ref-linux-5.0.10.3-<build>-oss-minimal-pdk.run
<top>/drive-t186ref-linux-5.0.10.3-<build>-nv-minimal-pdk.run
构建 NVIDIA tegra-4.9-nv 工具链
1. 使用以下命令更改到主机系统上的构建目录
cd <top>/drive-t186ref-linux_src/yocto
其中 <top> 是 release 安装在主机上的目录。
2. 使用以下命令解压 nvidia-layer.tgz 的内容
tar xzf nvidia-layer.tgz
3. 导出 TEMPLATECONF 以使用 meta-vib4 layer 中的模板,使用以下命令
export TEMPLATECONF=$PWD/layers/meta-vib4/conf
4. 使用以下命令初始化 Yocto Project 构建环境
source oss/genivi-7/poky/oe-init-build-env
5. Bitbake 工具链
bitbake meta-toolchain
6. 使用以下命令生成工具链
./layers/scripts-vib4/create_toolchain.sh $PWD
7. 执行 yocto 构建步骤后,构建的工具链位于
<top>/drive-t186ref-linux_src/yocto/build/install
更新 NVIDIA tegra-4.9-nv 工具链
1. 更改到工具链目录
cd <top>/toolchains
2. 备份现有工具链
mv tegra-4.9-nv tegra-4.9-nv-original
3. 将构建的工具链复制到其位置
mkdir tegra-4.9-nv
mv <top>/drive-t186ref-linux_src/yocto/build/install/* tegra-4.9-nv
构建 ADSP 工具链
1. 更改到主机系统上的构建目录
cd <top>/drive-t186ref-linux_src/yocto
2. 解压 nvidia-layer.tgz 的内容
tar xzf nvidia-layer.tgz
3. 导出 MACHINE、KERN_DIR 并启动构建
cd layers/scripts-vib3
export MACHINE=”<system_name>”
export KERN_DIR=$(realpath ../../../kernel)
rm -f ../meta-tegra/recipes-kernel/linux/kernel-tegra-early-boot.bb
rm -f ../meta-tegra/recipes-core/systemd/systemd_%.bbappend
 
./build_yocto.sh -c toolchain -t all
 
其中 <system_name> 代表机器名称。
4. 工具链已构建并部署在当前目录中名为 install 的目录中。
注意
建议在单独的 shell 中构建工具链。
删除 <top>/drive-t186ref-linux_src/yocto/ 中任何现有的 build 目录,以避免配置混淆。
 
提示
如果 bitbake 期间发生 python locale 错误,请使用以下命令作为解决方法
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
export LANGUAGE=en_US.UTF-8