【鸿蒙专题】交叉编译器 aarch64-linux-gnu 的使用

歇菜了一年多,猴子小编回归了!

看过猴子小编其他原创文章的都知道,全文干货,保姆级教程!


如何在Linux中使用交叉编译器 aarch-linux-gnu

第一步:下载安装交叉编译器

从gitcode下载交叉编译器(aarch-linux-gnu)猴子小编已经为猴友编译好可执行文件等libs可以直接使用

SSH方式:

git clone git@gitcode.com:xioayu/aarch64-linux-gnu.git

HTTPS方式

git clone https://gitcode.com/xioayu/aarch64-linux-gnu.git

将aarch64-linux-gnu放到linux 某路径下,猴子小编直接放在了 /opt 目录下,如下图:


第二步:配置aarch64-linux-gnu的编译环境

猴子小编直接写好了shell脚本供猴友使用

#!/bin/bash

T_PATH=/opt/aarch64-linux-gnu/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu

C_PATH=${T_PATH}/libexec/gcc/aarch64-linux-gnu/7.5.0

export PATH=${T_PATH}/bin:${C_PATH}:$PATH

export CC=${T_PATH}/bin/aarch64-linux-gnu-gcc
export CXX=${T_PATH}/bin/aarch64-linux-gnu-g++
export AS=${T_PATH}/bin/aarch64-linux-gnu-as
export AR=${T_PATH}/bin/aarch64-linux-gnu-ar
export RANLIB=${T_PATH}/bin/aarch64-linux-gnu-ranlib
export STRIP=${T_PATH}/bin/aarch64-linux-gnu-strip
export CROSS_COMPILE=${T_PATH}/bin/aarch64-linux-gnu-                                                  

编译环境配置脚本(aarch64-linux-toolchain.sh)如图:


第三步:编写测试案例:

#include <iostream>

int main(int argc, char** argv)
{
        std::cout << "hello aarch64-linux tool-chain" << std::endl;

        return 0;
}

第四步:使用aarch64-linux-gnu编译测试案例

执行脚本 aarch64-linux-toolchain.sh 导出环境变量:

source aarch64-linux-gnu.sh

查看 环境变量是否设置成功:


开始编译测试案例:  咦,出错了,噗噗

解释: 由于 as 链接的是  /bin/x86_64-linux-gnu-as* 而 x86_64-linux-gnu-as* 就没有 '-EL' 编译选项,

需要重新给 as 进行软链接到 aarch64-linux-gnu-as, 如图见真相:

现在可以顺利编译了, 如图:

$CXX hello.cpp -o hello  

成功编译出可执行文件,但这个可执行文件是没法跑在 x86 cpu的,可以使用file查看 可执行文件的架构依赖库等信息, 如图:

可以看到是关于 arm64架构的

第五步:拷贝到开发板并运行测试案例

到此还没有结束,拷贝到开发板上运行还会直接报错,请看:

是不是很疑惑? 可执行文件 hello 明明就在当前目录下,为啥还报错 hello文件不存在?

问题就在于:  需要依赖  /lib/ld-linux-aarch64.so.1


解决: 找到 ld-linux-aarch64.so.1  所在的位置,拷贝到开发板 /lib 目录

aarch64-linux-gnu/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/libc/lib/ld-linux-aarch64.so.1 


现在就可以成功的运行 测试案例 'hello' , 如图:

到此,交叉编译器 aarch64-linux-gnu 测试成功,学费了嘛


猴子小编创作不易,点个关注再走呗

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不会爬树的猴子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值