交叉编译环境搭建

14 篇文章 0 订阅

交叉编译环境搭建

一、安装交叉编译工具链和QEMU

sudo apt install gcc-5-aarch64-linux-gun
sudo apt install g++-5-aarch64-linux-gun
sudo apt install gdb-multiarch
sudo apt install qemu-user-static
sudo apt install qemu-system-mips

二、下载最小文件系统

下载地址(清华源)

下载地址(其它)

wget –no-check-certificate https://mirrors.tuna.tsinghua.edu.cn/ubuntu-cdimage/ubuntu-base/releases/16.04.6/release/ubuntu-base-16.04.6-base-arm64.tar.gz
解压根文件系统
mkdir CrossSysroot
sudo tar -zxvf ubuntu-base-16.04.6-base-arm64.tar.gz -C CrossSysroot
修改根文件系统

cp -b 或 --backup 删除、覆盖目的文件先备份,备份的文件或目录亦建立为符号链接,并指向源文件或目录链接的源文件或目录。假如没有加上这个参数,在复制过程中若遇到符号链接,则会直接复制源文件或目录

# 准备网络
sudo cp -b /etc/resolv.conf CrossSysroot/etc/resolv.conf
# 准备qemu
sudo cp /usr/bin/qemu-aarch64-static CrossSysroot/usr/bin/
进入根文件系统
sudo chroot ubuntu

# 可以更换国内源,然后update,然后安装拟安装的包
apt update
apt install git vim ...

三、设置toolchain.cmake

设置了CMAKE_SYSTEM_NAME变量后CMAKE_CROSSCOMPILING 会自动被设置为 TRUE,此时 cmake就会“知道“现在执行的是交叉编译

# 操作系统名称,必需(Linux,QNX,WindowsCE,Android)
# 如果没有操作系统,那么就写 Generic
set(CMAKE_SYSTEM_NAME Linux)
# 操作系统处理器架构
set(CMAKE_SYSTEM_PROCESSOR aarch64)
# cmake 无法自动获取目标机器信息,因此需要显式指明编译工具
set(CMAKE_C_COMPILER aarch64-linux-gnu-gcc-5)
set(CMAKE_CXX_COMPILER aarch64-linux-gnu-g++-5)
# 一般设置为工具链的sysroot目录 
set(CMAKE_SYSROOT ${CMAKE_CURRENT_LIST_DIR})
## set(CMAKE_FIND_ROOT_PATH path1 path2 path3 ...)
# NEVER:不会在指定的目录中寻找
# ONLY:只会从指定的目录中寻找
# BOTH:优先从指定的目录中寻找,再从默认的目录中寻找
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)

set(CMAKE_PREFIX_PATH ${CMAKE_SYSROOT}/yourPath)
set(ENV{PKG_CONFIG_LIBDIR} ${CMAKE_SYSROOT}/usr/lib/aarch64-linux-gnu/pkgconfig)

常见问题

  • 绝对路径该相对路径
  • 软链接重新链接

参考文档

ubuntu16.04最小根文件系统制作及集成安装ros-kinetic-ros-base及遇到的各种坑

ros-kinetic-ros-base及遇到的各种坑](https://blog.csdn.net/u012572552/article/details/104408372)

【原创】从Ubuntu-base构建ubuntu rootfs系统(以x86_64和arm为例)

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值