【OP-TEE 3.8.0学习】001_运行环境的搭建及编译

本文详细介绍了如何在Ubuntu 20.04上搭建OP-TEE 3.8.0开发环境,包括安装必要的依赖库、配置git、获取OP-TEE源代码、同步源代码、编译工具链及QEMU等步骤。同时提供了常见问题解决方案,如编译错误和网络问题处理方法。

 

一、OP-TEE开发环境搭建(Ubuntu-20.04 & op-tee 3.8.0)

1. OP-TEE开发环境需要使用各种依赖库

sudo apt-get install android-tools-adb android-tools-fastboot autoconf automake bc \
bison build-essential cscope curl device-tree-compiler expect flex ftp-upload gdisk \
iasl libattr1-dev libc6:i386 libcap-dev libfdt-dev libftdi-dev libglib2.0-dev \
libhidapi-dev libncurses5-dev libpixman-1-dev libssl-dev libstdc++6 libtool \
zlib1g zlib1g:i386 libtool-doc gfortran make mtools netcat python-crypto nzip \
uuid-dev xdg-utils xterm xz-utils python3-pip python3-pyelftools texinfo texlive \

2. git配置

git config --global user.email "you@example.com"
git config --global user.name "Your Name"

3. 安装repo

$ wget https://mirrors.tuna.tsinghua.edu.cn/git/git-repo
$ sudo chmod 777 git-repo
$ sudo mv git-repo /usr/bin/repo

4. 获取OP-TEE源代码

repo init -u https://github.com/OP-TEE/manifest.git -m qemu_v8.xml --repo-url=https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -b 3.8.0

获取op-tee源代码时出现如下异常:

 /usr/bin/env: ‘python’: No such file or directory

针对上述异常的解决办法:

5. sync OP-TEE源代码

repo sync -c -j16

sync后op-tee工程目录如下:

如果在执行repo sync时出现“remote:Repository not found”的报错提示,则需要修改open-tee/.repo目录中的manifest.xml文件,将该文件中所有project域中的“.git”删除,也可以通过如下指令进行修改:

sed -i "s/\.git//g" .repo/manifest.xml

修改完成之后,重新执行repo sync来获取OP-TEE的代码。

6. 获取编译OP-TEE的toolchain

$ cd build
$ make -f toolchain.mk toolchains

查看toolchain.mk文件可知,执行make指令之后,系统会去下载toolchains的tar包,包括32位和64位的编译链接工具,下载完成后会进行解压操作。

define dltc
        @if [ ! -d "$(1)" ]; then \
                mkdir -p $(1); \
                echo "Downloading $(3) ..."; \
                # 下载
                curl -s -L $(2) -o $(TOOLCHAIN_ROOT)/$(3).tar.xz; \
                # 解压
                tar xf $(TOOLCHAIN_ROOT)/$(3).tar.xz -C $(1) --strip-components=1; \
        fi
endef

如果执行“make -f toolchain.mk toolchains”命令后,一直卡在“Downloading xxx ...”那。

手动到https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-a/downloads下载指定toolchain(toolchain.mk指定了AARCH32_GCC_VERSION和AARCH64_GCC_VERSION)。

这里下载的是gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf.tar.xzgcc-arm-8.3-2019.03-x86_64-aarch64-linux-gnu.tar.xz

将下载的toolchain的tar包放到op-tee源代码的根目录下的toolchains目录,并进行解压

$ tar xf gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf.tar.xz -C aarch32 --strip-components=1
$ tar xf gcc-arm-8.3-2019.03-x86_64-aarch64-linux-gnu.tar.xz -C aarch64 --strip-components=1

7. 编译QEMU

$ cd build
$ make -f qemu_v8.mk all

编译时报出来的问题1:

Traceback (most recent call last):
  File "scripts/pem_to_pub_c.py", line 61, in <module>
    main()
  File "scripts/pem_to_pub_c.py", line 24, in main
    from Crypto.PublicKey import RSA
ModuleNotFoundError: No module named 'Crypto'
make[1]: *** [mk/subdir.mk:162: out/arm/core/ta_pub_key.c] Error 1
make[1]: Leaving directory '/home/xiaolinwu/xiaolin/op-tee/optee_os'
make: *** [common.mk:396: optee-os-common] Error 2
Traceback (most recent call last):
  File "out/arm/export-ta_arm32/scripts/sign_encrypt.py", line 258, in <module>
    main()
  File "out/arm/export-ta_arm32/scripts/sign_encrypt.py", line 131, in main
    from Cryptodome.Signature import pss
ModuleNotFoundError: No module named 'Cryptodome'
make[1]: *** [ta/arch/arm/link.mk:101: out/arm/ta/avb/023f8f1a-292a-432b-8fc4-de8471358067.ta] Error 1
make[1]: Leaving directory '/home/xiaolinwu/xiaolin/op-tee/optee_os'
make: *** [common.mk:396: optee-os-common] Error 2

安装pycrypto、pycryptodomex

$ sudo pip3 install pycrypto
$ sudo pip3 install pycryptodomex

编译时报出来的问题2:卡住此处

install libcrypto.pc -> /home/xiaolinwu/xiaolin/op-tee/out-br/target/usr/li
<think>我们正在安装spaCy语言模型,用户指定了版本:spaCy3.8.7对应的zh_core_web_sm-3.8.0和en_core_web_sm-3.8.0。根据引用[1]中的信息,我们可以通过离线安装的方式,但需要找到对应版本的模型。官方模型发布在GitHub:https://github.com/explosion/spacy-models/releases步骤:1.确认需要安装的模型文件名:-中文:zh_core_web_sm-3.8.0-英文:en_core_web_sm-3.8.02.下载链接:-中文:https://github.com/explosion/spacy-models/releases/download/zh_core_web_sm-3.8.0/zh_core_web_sm-3.8.0.tar.gz-英文:https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-3.8.0/en_core_web_sm-3.8.0.tar.gz3.下载后,使用pip安装本地文件。4.注意:用户要求spaCy版本是3.8.7,而模型要求spaCy版本>=3.8.0,<3.9.0,所以兼容。操作步骤:方法一:在线安装(推荐,如果网络允许)由于模型版本明确,可以直接使用pip安装:pip installzh_core_web_sm==3.8.0pipinstall en_core_web_sm==3.8.0方法二:离线安装(如果在线安装慢)1.下载模型文件(从上述链接)2.使用pip安装下载的压缩包:pipinstall path/to/zh_core_web_sm-3.8.0.tar.gzpipinstall path/to/en_core_web_sm-3.8.0.tar.gz验证安装:importspacynlp= spacy.load("en_core_web_sm")nlp2 =spacy.load("zh_core_web_sm")注意:安装模型前请确保已安装spaCy3.8.7。如果没有,请先安装:pipinstall spacy==3.8.7因此,完整的步骤:1.安装spaCy3.8.7:pip installspacy==3.8.72.安装语言模型(在线方式):pipinstall zh_core_web_sm==3.8.0pip installen_core_web_sm==3.8.0如果在线安装模型遇到网络问题,则使用离线方式。另外,中文模型可能需要额外的依赖,如Jieba(spaCy中文模型使用Jieba进行分词),但通常模型包会包含依赖,安装时会自动安装。如果遇到权限问题,可以尝试在命令前加上`sudo`(Linux/Mac)或以管理员身份运行(Windows)。引用[1]中提到离线安装的方法,我们也可以采用,但注意引用中安装的是旧版本(3.7.3),而我们需要3.8.0。因此,我们按照上述步骤进行。</think>### 安装 spaCy 3.8.7 对应的语言模型 以下是安装中文和英文语言模型的完整步骤: #### 1. 安装 spaCy 3.8.7 首先确保安装正确版本的 spaCy: ```bash pip install spacy==3.8.7 ``` #### 2. 安装语言模型 **方法一:在线安装(推荐)** ```bash # 安装英文模型 pip install en_core_web_sm==3.8.0 # 安装中文模型 pip install zh_core_web_sm==3.8.0 ``` **方法二:离线安装(适用于网络受限环境)** 1. 从官方仓库下载模型: - 英文模型:[en_core_web_sm-3.8.0.tar.gz](https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-3.8.0/en_core_web_sm-3.8.0.tar.gz) - 中文模型:[zh_core_web_sm-3.8.0.tar.gz](https://github.com/explosion/spacy-models/releases/download/zh_core_web_sm-3.8.0/zh_core_web_sm-3.8.0.tar.gz) 2. 本地安装: ```bash pip install /path/to/en_core_web_sm-3.8.0.tar.gz pip install /path/to/zh_core_web_sm-3.8.0.tar.gz ``` #### 3. 验证安装 ```python import spacy # 验证英文模型 nlp_en = spacy.load("en_core_web_sm") print("英文模型版本:", nlp_en.meta["version"]) # 验证中文模型 nlp_zh = spacy.load("zh_core_web_sm") print("中文模型版本:", nlp_zh.meta["version"]) ``` 预期输出: ``` 英文模型版本: 3.8.0 中文模型版本: 3.8.0 ``` #### 注意事项 1. 模型兼容性:`zh_core_web_sm-3.8.0` 和 `en_core_web_sm-3.8.0` 要求 spaCy 版本 `>=3.8.0,<3.9.0`[^1] 2. 中文依赖:中文模型会自动安装 `jieba` 分词依赖包 3. 磁盘空间:每个模型约需 50-100MB 空间 4. 权限问题:Linux/macOS 如遇权限错误,在命令前加 `sudo` > 安装过程通常需要 1-5 分钟,具体取决于网络速度。若下载超时,可尝试切换 pip 源:`pip install -i https://pypi.tuna.tsinghua.edu.cn/simple [package]`[^1]
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值