aarch64-linux-gnu-gcc交叉编译链工具

2023-05-16

aarch64-linux-gnu-gcc交叉编译工具链

  • 安装
  • 编译可执行文件
  • 交叉编译

自己记录学习所用。

安装

按下 CTRL +ALT+T打开控制台,输入如下指令安装。

// 安装.c转二进制文件的交叉编译链工具
sudo apt-get install gcc-aarch64-linux-gnu

// 安装.cpp转二进制文件的交叉编译链工具
sudo apt-get install g++-aarch64-linux-gnu

编译可执行文件

建立一个.c文件和.cpp文件,可以通过vscode等文件建立,也可以通过下面的指令建立。

vim hello.c

建立一个hello.c文件并进入,按i进入插入模式。
写一个简单的程序。

#include <stdio.h>

int main(void)
{
	printf("Hello World!-c \n");
}

再按ESC键,并键入:wq保存并退出。

同样,建立.cpp文件

vim hello.cpp

输入程序

#include <iostream>
using namespace std;
int main()
{
    cout << "Hello, world!" << endl;
    return 0;
}

输入ls查看当前文件夹下文件,输入ls -l命令查看当前文件夹下文件的详细信息,由于建立的新文件夹,所以当前只有两个文件。
文件显示
尝试运行,发现错误。

./hello.c

bash: ./hello.c: 权限不够

显示权限不够。
输入下面的命令给与权限。

chmod 777 hello.c hello.cpp

再运行还是出错,这是因为.c和.cpp文件并不能直接运行,需要先编译为可执行文件,命令如下。

//编译.c文件,-o后面的是编译后文件的名字
gcc -o hello_c hello.c
//编译.cpp文件,-o后面的是编译后文件的名字
g++ -o hello_cpp hello.cpp

编译结果如下图所示:
编译结果
运行结果如下图所示:
运行编译后的可执行文件
但这只是我们的系统能运行,无法在ARM中运行,因此需要进行交叉编译链工具进行交叉编译。

交叉编译

代码如下所示:

// 编译.c到2进制
aarch64-linux-gnu-gcc hello.c -o 2_hello_c

// 编译.cpp到2进制
aarch64-linux-gnu-g++ hello.cpp -o 2_hello_cpp

显示如下:
交叉编译
现在编译就完成了,可以将2进制文件发送给开发板。

若安装,但显示未找到相应命令,则需要添加环境变量,临时添加可以直接在中断中输入下面命令。/usr/bin是安装时存放的命令位置。

#export PATH=$PATH:/usr/bin

推荐在home目录处的终端中使用下面的命令,修改profile文件,添加环境变量。

vim /etc/profile

i进入插入模式。在文件最下面输入下面一行:

expert PATH=$PATH:/bin:usr/bin

不同环境位置处用:隔开。按ESC退出插入模式,输入:wq保存退出。
若无法保存应该使用下面的命令,以管理员权限进入profile文件。

sudo vim /etc/profile

若未生效,可以在终端中输入下面的命令立即生效。

#source /etc/profile
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

aarch64-linux-gnu-gcc交叉编译链工具 的相关文章

  • 使用 sh 运行 bash 脚本

    我有 bash 脚本 它需要 bash 另一个人尝试运行它 sh script name sh 它失败了 因为 sh 是他的发行版中 dash 的符号链接 ls la bin sh lrwxrwxrwx 1 root root 4 Aug
  • 有谁知道在哪里定义硬件、版本和序列号。 /proc/cpuinfo 的字段?

    我想确保我的 proc cpuinfo 是准确的 目前它输出 Hardware am335xevm Revision 0000 Serial 0000000000000000 我可以在代码中的哪里更改它以给出实际值 这取决于 Linux 的
  • Linux 中什么处理 ping?

    我想覆盖 更改 linux 处理 ping icmp echo 请求数据包的方式 这意味着我想运行自己的服务器来回复传入的 icmp 回显请求或其他 数据包 但为了使其正常工作 我想我需要禁用 Linux 的默认 ping icmp 数据包
  • 要求编译器发出无分支/恒定时间代码

    在密码学中 任何依赖于秘密数据 例如私钥 的代码都必须在恒定时间内执行 以避免侧信道定时攻击 https en wikipedia org wiki Timing attack 目前最流行的架构 x86 64 和 ARM AArch64 都
  • 为arm构建WebRTC

    我想为我的带有arm926ej s处理器的小机器构建webrtc 安装 depot tools 后 我执行了以下步骤 gclient config http webrtc googlecode com svn trunk gclient s
  • docker容器大小远大于实际大小

    我正在尝试从中构建图像debian latest 构建后 报告的图像虚拟大小来自docker images命令为 1 917 GB 我登录查看尺寸 du sh 大小为 573 MB 我很确定这么大的尺寸通常是不可能的 这里发生了什么 如何获
  • 多处理:仅使用物理核心?

    我有一个函数foo它消耗大量内存 我想并行运行多个实例 假设我有一个有 4 个物理核心的 CPU 每个核心有两个逻辑核心 我的系统有足够的内存来容纳 4 个实例foo并行但不是 8 个 此外 由于这 8 个核心中的 4 个是逻辑核心 我也不
  • Linux 上有关 getBounds() 和 setBounds() 的 bug_id=4806603 的解决方法?

    在 Linux 平台上 Frame getBounds 和 Frame setBounds 的工作方式不一致 这在 2003 年就已经有报道了 请参见此处 http bugs java com bugdatabase view bug do
  • 如何使用 GOPATH 的 Samba 服务器位置?

    我正在尝试将 GOPATH 设置为共享网络文件夹 当我进入 export GOPATH smb path to shared folder I get go GOPATH entry is relative must be absolute
  • CoAP数据包的大小是多少?

    我是这项技术的新手 有人可以帮助我了解一些疑问吗 Q 1 CoAP数据包的大小是多少 我知道有 4 字节固定标头 但是包括标头 选项和负载在内的最大大小限制是多少 Q 2 有像MQTT那样的Keep Alive的概念吗 它在UDP上工作 它
  • 是否可以创建一个脚本来保存和恢复权限?

    我正在使用 Linux 系统 需要对一组嵌套文件和目录进行一些权限实验 我想知道是否没有某种方法可以保存文件和目录的权限 而不保存文件本身 换句话说 我想保存权限 编辑一些文件 调整一些权限 然后将权限恢复到目录结构中 将更改的文件保留在适
  • 需要一些建议来开始在 ARM(使用 Linux)平台上编程

    我 也许 很快就会在托管 Linux 发行版的 ARM 平台上工作 我不知道哪个发行版 我知道该项目涉及视频流 但我无法告诉你更多信息 其实我只收到通知 还没见到任何人 我从来没有在这样的平台上工作过 所以我的想法是在项目开始之前进行测试
  • 如何减去两个 gettimeofday 实例?

    我想减去两个 gettimeofday 实例 并以毫秒为单位给出答案 这个想法是 static struct timeval tv gettimeofday tv NULL static struct timeval tv2 gettime
  • 为什么 GCC 不对无法访问的代码发出警告?

    为什么 GCC 4 6 3 没有给我任何警告无法访问的代码在下面的例子中 include
  • 子目录中的头文件(例如 gtk/gtk.h 与 gtk-2.0/gtk/gtk.h)

    我正在尝试使用 GTK 构建一个 hello world 其中包括以下行 include
  • 确定我可以向文件句柄写入多少内容;将数据从一个 FH 复制到另一个 FH

    如何确定是否可以将给定数量的字节写入文件句柄 实际上是套接字 或者 如何 取消读取 我从其他文件句柄读取的数据 我想要类似的东西 n how much can I write w handle n read r handle buf n a
  • 如何构建任务“gems:install”

    我正在将 Rails 应用程序部署到 Linux 服务器 并且缺少一些 rake 任务 包括 rake gems install 和 rake db 我正在运行来自 GEM 的 Rails 2 3 4 为什么是这样 我该如何解决 我可以以某
  • Fortran gfortran linux 中的“分段错误(核心转储)”错误

    我正在创建一个程序 该程序将分析目录中的文件 fits 然后它将在另一个目录中创建另一个文件 txt 它只是一个转换器 当我尝试执行该程序 编译正常 时 它给了我一条错误消息 程序收到信号 SIGSEGV 分段错误 无效的内存引用 此错误的
  • 高效的内存屏障

    我有一个多线程应用程序 其中每个线程都有一个整数类型的变量 这些变量在程序执行期间递增 在代码中的某些点 线程将其计数变量与其他线程的计数变量进行比较 现在 我们知道在多核上运行的线程可能会无序执行 一个线程可能无法读取其他线程的预期计数器
  • PyQt5 - 无法使用 QVideoWidget 播放视频

    from PyQt5 QtWidgets import from PyQt5 QtMultimedia import from PyQt5 QtMultimediaWidgets import from PyQt5 QtCore impor

随机推荐

  • ESP-01S烧录及使用,连接本地MQTT服务器

    网上的教程大多无法正常烧录与使用 xff0c 因此在这里进行总结 1 ESP 01S烧录 固件烧录建议使用专用的烧录器 xff0c 十分省心 本文讨论的是使用普通的CH340串口模块进行烧写 必须使用的工具 xff1a 杜邦线 CH340串
  • Qt学习笔记(2)——添加串口程序与调试

    1 串口调试程序总体布局 Qt版本大于5 1 1 1 在pro文件内添加serialport QT 43 61 serialport 1 2 在 h文件内添加库文件 include lt QtSerialPort gt 1 3 添加实例 h
  • AES CBC和CTR加解密实例

    AES xff08 Advanced Encryption Standard xff0c 高级加密标准 xff09 又叫Rijndael加密法 xff0c 用来替代DES算法 常见AES加密模式有ECB CBC CFB OFB和CTR等五种
  • 关于vuex使用常量替代 Mutation 事件类型的好处

    官方文档有说常量的好处 xff0c 但是的确没用过 xff0c 也不怎么懂 xff0c 就我目前有用的了解来说 在后面项目中使用了常量有如下好处 1 常量更容易避免程序出现错误 如果把一个值赋给程序中的一个常量 xff0c 而该常量已经有一
  • 多传感器融合及其应用

    后续会更新部分算法详细内容 多传感器融合及其应用 1 引言 现代雷达信息处理技术 现代雷达信息处理技术分为三个层次 xff1a 雷达信号处理与目标检测 但不雷达数据处理和多部雷达系统数据融合 有时也分别称为雷达信息一次处理 雷达信息二次处理
  • 《结构化编程》— LED灯为例

    你有过看很久以前项目代码看不太懂的情况吗 xff1f 你有过做一个项目就要从零重构代码的烦恼吗 xff1f 你有过那种遇到项目后无从入手编写的困扰吗 xff1f 诸君且看 xff0c 我是如何用一个LED灯代码去做结构化编程的 xff0c
  • 《FPGA学习》->点亮一颗LED灯

    x1f34e 与其担心未来 xff0c 不如现在好好努力 在这条路上 xff0c 只有奋斗才能给你安全感 你若努力 xff0c 全世界都会为你让路 大家刚开始接触硬件编程的话 xff0c 我想大多都是从点亮一颗LED灯开始 xff0c 学习
  • 《FPGA学习》->流水灯设计

    x1f34e 与其担心未来 xff0c 不如现在好好努力 在这条路上 xff0c 只有奋斗才能给你安全感 你若努力 xff0c 全世界都会为你让路 用verilog HDL语言设计一个FPGA的流水灯程序 xff0c 要求时序满足下图所示
  • 《FPGA学习》->多个按键控制LED灯

    x1f34e 与其担心未来 xff0c 不如现在好好努力 在这条路上 xff0c 只有奋斗才能给你安全感 你若努力 xff0c 全世界都会为你让路 本次项目任务 xff0c 利用开发板上的4个按键KEY1 xff0c KEY2 xff0c
  • 《FPGA学习》->呼吸灯

    x1f34e 与其担心未来 xff0c 不如现在好好努力 在这条路上 xff0c 只有奋斗才能给你安全感 你若努力 xff0c 全世界都会为你让路 呼吸灯 xff0c 简而言之就像人类呼吸一样 xff0c 有节奏的让LED灯从 xff1a
  • 《FPGA学习》->蜂鸣器播放

    x1f34e 与其担心未来 xff0c 不如现在好好努力 在这条路上 xff0c 只有奋斗才能给你安全感 你若努力 xff0c 全世界都会为你让路 蜂鸣器的发声原理由振动装置和谐振装置组成 xff0c 而蜂鸣器又分为无源他激型与有源自激型
  • 基于STM32的语音控制电机

    号外号外 单片机项目实战课程又更新了 炸弹 大家好 我是 朽木自雕i 一个闲暇时间用来敲敲代码 画画板子 焊焊电路 玩玩单片机 搞搞Linux 写写Blog记录成长的技术人er 很高兴再次见
  • ESP32单片机入门篇

    目录 一 ESP32单片机的基本概念 1 双核架构 2 Wi Fi和蓝牙功能 3 集成多种外设 4 支持多种操作系统 二 开发环境 1 Arduino IDE 2 ESP IDF 三 开发语言 四 注意事项 五 代码例程 xff08 1 x
  • 什么是死锁,产生死锁的原因及必要条件

    什么是死锁 xff1f 所谓死锁 xff0c 是指多个进程在运行过程中因争夺资源而造成的一种僵局 xff0c 当进程处于这种僵持状态时 xff0c 若无外力作用 xff0c 它们都将无法再向前推进 因此我们举个例子来描述 xff0c 如果此
  • ESP32红外控制舵机

    目录 一 ESP32红外解码 二 ESP32舵机控制 三 ESP32红外控制舵机 结语 ESP32作为一款功能强大的单片机 xff0c 常被应用于物联网 智能家居 智能硬件等领域 与其他单片机相比 xff0c ESP32具有更高的运行速度和
  • ESP32 OTA升级

    目录 一 ESP32 OTA升级原理 1 ESP32固件编译 2 固件的远程传输 二 基于ESP32HTTPUpdate库的OTA升级 1 硬件准备 2 软件实现 三 注意事项 1 升级文件大小限制 2 WiFi稳定性 3 固件版本号 结语
  • 基于ESP32的温湿度环境监测

    目录 一 传感器介绍 二 设计思路 三 电路连接 四 项目代码 五 注意事项 一 传感器介绍 SCH30 是一款温湿度一体化数字传感器 xff0c 采用CMOSens 技术 xff0c 提供出色的性能 可靠性和稳定性 它还具有超低能耗 xf
  • 小觅相机SDK安装与报错解决

    目录 安装小觅相机SDK1 下载SDK2 准备依赖3 编译代码出现问题 xff1a 报错 xff1a 原因 xff1a 解决方案 xff1a 4 编译安装ROS版本ROS的安装 5 配置 bashrc文件6 运行相机 最后顺利完成SDK安装
  • 基于51单片机和物联网的智能家居系统(ESP8266物联网模块)

    前言 该智能家居系统以 STC89C52单片机为控制核心 xff0c 结合 LCD1602 液晶显示屏 L298N电机驱动模块 光敏电阻 xff0c ESP8266WiFi模块 xff0c DS18B20温度计设计并实现了自动感光窗帘与居室
  • aarch64-linux-gnu-gcc交叉编译链工具

    aarch64 linux gnu gcc交叉编译工具链 安装编译可执行文件交叉编译 自己记录学习所用 安装 按下 CTRL 43 ALT 43 T打开控制台 xff0c 输入如下指令安装 span class token comment