ubuntu16.04 交叉编译 mbedtls

在为客户交叉编译项目时需要依赖 mbedtls, 客户的机器是 arm64 的 ubuntu 16.04, 交叉编译过程中遇到几个问题。

首先, mbedtls 需要依赖 python, 在 cmake 的过程中, 如果不是使用系统默认的 cmake 可能会导致,mbedtls 在执行 cmake 的过程中选择与预期不符的 python 版本,导致安装的 jinja2 和 jsonschema 在以安装的情况下仍然找不到

另外一个问题是, ubuntu 16.04 上默认的版本是 python 3.5 ,而这个版本是不支持 jsonschema 的,所以需要安装 python 3.6。

首先安装交叉编译工具链

复制代码
$ apt-get update
$ apt-get install gcc-aarch64-linux-gnu

安装 python 3.6

复制代码
$ cd /opt
$ wget https://www.python.org/ftp/python/3.6.3/Python-3.6.3.tgz
$ tar -xvf Python-3.6.3.tgz
$ cd Python-3.6.3
$ ./configure
$ make 
$ make install

检查 python3.6 是否安装成功

复制代码
$ python3.6 -V
Python 3.6.3

安装 jinja2 和 jsonschema, 此处注意需要使用 pip3.6 安装

复制代码
pip3.6 install jsonschema
pip3.6 install jinja2

mbedtls 交叉编译

复制代码
$ git clone https://github.com/Mbed-TLS/mbedtls.git && cd mbedtls &&  git checkout tags/v3.3.0
$ mkdir build && cd build
$ cmake  -DCMAKE_C_COMPILER=aarch64-linux-gnu-gcc  -DENABLE_TESTING=OFF -DCMAKE_INSTALL_PREFIX=/opt/  ..
$ make && make install

note: cmake 执行的过程中需要关注下找到的 python 的版本,需要是 3.6 才能保证正常的交叉编译

相关推荐
今天也想躺ping13 天前
linux系统移植pjsua库实现sip通话功能
linux·sip·交叉编译
想你依然心痛1 个月前
Buildroot快速构建——根文件系统与内核裁剪实战
交叉编译·根文件系统·包管理·启动优化·busybox·buildroot·内核裁剪
花花少年2 个月前
Ubuntu系统下交叉编译gpac
交叉编译·gpac
nnnnichijou2 个月前
Qt 6.9 嵌入式 Linux 交叉编译全栈填坑指南(以树莓派5 AArch64 为例
qt·嵌入式·交叉编译·qml·树莓派5
小鳄鱼爱吃薯片2 个月前
MbedTLS库完全指南:从GitHub下载到嵌入式移植
mbedtls
jrrz08282 个月前
Apollo OSQP库交叉编译
vscode·apollo·交叉编译·mpc·osqp
六点的晨曦4 个月前
OpenCV 4.3 交叉编译 AArch64 完整指南(x64 Ubuntu 20.04)
opencv·交叉编译·ubuntu20.04·aarch64
seaside20035 个月前
ggml交叉编译安卓部署大模型
安卓·交叉编译·ggml
特立独行的猫a7 个月前
鸿蒙PC生态三方命令行软件移植:XZ压缩工具移植到鸿蒙PC平台的完整指南
华为·harmonyos·移植·命令行·交叉编译·xz命令