交叉编译—ARM

交叉编译详解 在嵌入式开发中,经常会提到交叉编译,那么什么是交叉编译?和我们本地编译有什么区别呢?怎么使用交叉编译工具呢?在问题之前,我们先简单说明下编译,用本地编译来对比说明。在程序开发中,使用高级语言编写的代码被称为源代码,比如用C语言编写的后缀名为.c的文件,或者C++编写的后缀名为.cpp的文件。源代码不能被机器执行,必须转换成二进制的机器代码(指令+数据)才能被CPU执行。将源代码转换成机器代码的过程称为编译(Compile),编译的工作需要编译器(Complier)来完成。编译器对源代码进行语法检查,只有没有 阅读详情

交叉编译

来自百度对交叉编译的解释:
https://baike.baidu.com/item/交叉编译/10916911?fr=aladdin

1、交叉编译是什么?

交叉编译:是在一个平台上生成另一个平台上的可执行代码编译
例:
C51的交叉编译发生在keil(集成环境上面)
linux上面编写树莓派的代码,并编译成可执行的代码,如xxx.out,在树莓派上运行

为什么需要交叉编译?

目的平台上不允许或不能够安装我们所需要的编译器:
1、目的平台上的资源贫乏,无法运行我们所需要编译器
2、目的平台还没有建立,连操作系统都没有,根本谈不上运行什么编译器平台

运行至少需要两样东西:bootloader(启动引导代码)以及操作系统核心
宿主机(host) :编辑和编译程序的平台,一般是基于X86的PC机,通常也被称为主机。
目标机(target):用户开发的系统,通常都是非X86平台。host编译得到的可执行代码在target上运行。

交叉编译需要用到工具:交叉编译器、交叉编译工具链

2、交叉编译工具链的安装(tools-master)

cp /mnt/hgfs/share/tool-master.zip .
cd /home/admin_/learn/lessonPi/tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin
pwd:获得路径
echo $PATH
链接:https://pan.baidu.com/s/14GJq6Mb3S__So0NCq1-NaA
提取码:4not
1.共享文件夹复制文件
2.解压安装包,unzip 目标名xxx选择适合自己的版本安装:unzip tool-master.zip
tools-master→arm-bcm2708→gcc-linaro-arm-linux-gnueabihf-raspbian(以X86的linux和ARM的树莓派为例)
3.配置环境变量,否则交叉编译只能在其文件夹下可用
echo $PATH查看当前环境变量的值
pwd:显示当前目录路径
https://github.com/raspberrypi/
方法一:
临时有效
修改PATH环境变量,开启另一个终端将无法使用

export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/admin_/learn/lessonPi/tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin

方法二:
永久有效
1.修改工作目录下的.bashrc隐藏文件,配置命令终端vi /home/admin_/.bash
2.在该脚本下,加入上述环境变量并保存

export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/admin_/learn/lessonPi/tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin

3.然后,source /home/admin_/.bash加载配置文件,马上生效指令

3、补充

1、检查安装包
arm-linux-gnueabihf-gcc -v
使用该命令即可看到安装的版本号等信息,否则未安装成功
**软链接:**软链接不占空间
在这里插入图片描述

2.查看文件信息
file 文件名,可以看到下图中上面的文件适用X86架构的机器,下面的文件适合ARM架构的机器
在这里插入图片描述
3.传输文件
将linux的文件传输到树莓派机器:

scp test pi@192.168.1.104:/home/test
#指令 文件名 开发板用户名@开发板地址:开发板绝对路径

例:

一、交叉编译在树莓派上执行hello world
在这里插入图片描述
1、编辑好hello world代码
2、使用gcc编译
3、查看test_1文件类型为X86-64位型号的系统
4、使用arm-linux-gnueabihf-gcc test.c -o test_2编译ARM架构的
5、查看test_2类型
在这里插入图片描述
6、执行文件
在这里插入图片描述
7、将交叉编译好的test_2拷贝到树莓派上

 scp test_2 pi@192.168.31.6:/home/pi/jiaocha

在这里插入图片描述
查看树莓派端,并成功执行hello world
在这里插入图片描述
二、曾经FTP项目
在这里插入图片描述
将服务器端编译成X86版本
将客户端编译成ARM版本,并下载到树莓派上
在这里插入图片描述
服务器端等待连接
客户端连接服务器
在这里插入图片描述

交叉编译(超详细) 交叉编译 阅读详情

相关推荐

交叉编译概念、配置方法以及使用

目录一、 交叉编译是什么,为什么要交叉编译1、是什么:2、为什么要交叉编译?3、交叉编译需要用到什么工具?二、交叉编译工具链的安装1、临时有效,配置环境变量方法2、永久有效,配置环境变量 一、 交叉编译是什么,为什么要交叉编译 1、是什么: 交叉编译 是在一个平台上生成另一个平台上的可执行代码。 我们再windows上面编写C51代码,并编译成可执行代码,如xx.hex,是在c51上面运行,不是在windows上面运行 我们在ubuntu上面编写树莓派的代码,并编译成可执行代码,如a.out,是在树莓派上面

L132455的博客 4128

ARM交叉编译

编译与执行,编译与执行必须在同一个平台才可以进行正确的执行,我们常见的硬件平台为X86、ARM、MIPS等, 一般我们将嵌入式设备称为目标机,我们自己的电脑称为宿主机,这里就涉及一个问题,目标机(一般为ARM)与宿主机(一般为x86)的硬件平台是不同的,因此涉及到在宿主机上编译目标机上可执行的程序,这就涉及到交叉编译,即在宿主机上编译,在目标机上执行。为何需要交叉编译,在目标机上编译执行不可以吗,当然可以,只不过对于嵌入式设备,一般为基于arm的嵌入式设备,但是嵌入式设备的资源较少,ram与flash等资源

weixin_43708235的博客 2511

Ubuntu下ARM交叉编译环境

Ubuntu下ARM交叉编译环境 初次接触ARM开发版,才知道开发版需要ARM 1.准备编译基础环境 因为ARM是32位,而Ubuntu是64位的,所以先安装一些32位的库。 sudo apt-get install lib32ncurses5 lib32z1 lib32stdc++6 2.下载ARM-Linux-gcc 友善之臂官网下载:ARM-Linux GCC 4.4.3 3.解...

宁静致远's 博客 6481

arm交叉编译

交叉编译链基础学习

weixin_42427637的博客 2335

arm交叉编译perl,arm交叉编译openssl,arm交叉编译poco

arm交叉编译perl,arm交叉编译openssl,arm交叉编译poco 编译Perl 下载Perl https://www.perl.org/get.html,直接下载Unix版本的源码,不要通过wget下载 下载好后打开目录 tar -xzf perl-5.26.2.tar.gz cd perl-5.26.2 查看Cross/config,里面的ARCH = arm,OS...

u011045248的专栏 1965

python交叉编译移植到ARM

以下内容没有经过语言的整理,但是是我真实的移植过程,仅供参考 源码下载地址:https://www.python.org/ 参考: https://blog.youkuaiyun.com/yyw794/article/details/78059102 https://www.cnblogs.com/pengdonglin137/p/6604471.html 本次移植的是Python-3.6.9 后...

cyd411的专栏 2918

arm交叉编译 扫盲贴 ARM交叉编译工具链

为什么要用交叉编译器? 交叉编译通俗地讲就是在一种平台上编译出能运行在体系结构不同的另一种平台上的程序, 比如在PC平台(X86 CPU)上编译出能运行在以ARM为内核的CPU平台上的程序,编译得到的程序在X86 CPU平台上是不能运行的,必须放到ARM CPU平台上才能运行,虽然两个平台用的都是Linux系统。 arm交叉编译器 交叉编译工具链是一个由编译器、连接器和解释器组成的...

nicholas_duan的博客 5754

Ubuntu 搭建 ARM 交叉编译环境

Ubuntu 搭建 ARM 交叉编译环境准备环境配置 ARM解压配置环境变量使环境变量生效并验证编译测试 准备环境 环境:Ubuntu16.04X64 下载:arm-linux-gcc-4.4.3.tar.gz 注意: arm-linux-gcc-4.4.3.tar.gz是32位,如果使用的系统是Ubuntu 32bit。则可以直接进行环境搭建。如果 系统是Ubuntu 64bit,需要给系统安装32bit的依赖库: sudo apt-get install libc6:i386 sudo apt-g

wzfgd的博客 4372

NGINX 交叉编译 arm32

NGINX 交叉编译 arm32

编程之道在明明德在亲民在止于至善 2261

arm-linux的gdb交叉编译,arm的gdb移植

环境:     需要交叉编译的芯片型号: xlinx ZYNQ XC7Z010     交叉编译的环境:ubuntu 安装文件:     1、ncurses-5.9.tar.gz(下载网址:http://linux.softpedia.com/get/Programming/Libraries/Ncurses-6097.shtml#download)     2、gdb-5.2.1.ta...

Zpeg的博客 4042

arm交叉编译器简单介绍

交叉编译器命名规则:交叉编译工具链的命名规则为:arch [-vendor] [-os] [-(gnu)eabi] arch - 体系架构,如ARM,MIPS vendor - 工具链提供商 os - 目标操作系统 eabi - 嵌入式应用二进制接口(Embedded Application Binary Interface)

onlyshi的专栏 6298

arm交叉编译相关经验

arm交叉编译相关经验

IT菜鸟 1705

在Visual Studio中使用ARM GCC进行交叉编译进行ARM开发

然后,我们配置了Visual Studio以使用ARM GCC进行编译,并创建了一个简单的ARM项目。最后,我们编写了ARM代码在Visual Studio中使用ARM GCC进行交叉编译进行ARM开发。然后,我们配置了Visual Studio以使用ARM GCC进行编译,并创建了一个简单的ARM项目。在本文中,我们将探讨如何在Visual Studio中使用ARM GCC进行交叉编译,以便进行ARM开发。在右侧窗格中,找到"附加包含目录"选项,并添加ARM GCC工具链的头文件目录。

HdData_Science的博客 2217

qemu交叉编译arm内核_linux-ARM交叉编译

我已经在x86 Ubuntu12.04 linux上安装了ARM交叉编译器工具链.现在我有arm-linux-gnueabi-gcc交叉编译器.我已经将简单的hello world程序编写为如下代码#include int main(){printf("hello world");return 0;}我交叉使用arm-linux-gnueabi-gcc -o a -c -static编译后的二进制...

weixin_39835158的博客 586

在Ubuntu上进行ARM交叉编译

首先,您需要安装适用于ARM架构的交叉编译工具链。在Ubuntu上,有几个不同的交叉编译工具链可供选择,如arm-linux-gnueabi、arm-linux-gnueabihf等。如果您需要在x86架构的Ubuntu系统上开发或编译适用于ARM架构的应用程序,您需要进行ARM交叉编译。您需要安装适合的交叉编译工具链,并使用该工具链编译ARM应用程序。然后,您可以将生成的可执行文件拷贝到ARM设备上,并在该设备上运行。现在,您可以将生成的可执行文件拷贝到ARM设备上,并在该设备上运行。

HackWhisper的博客 2653

AI辅助发明专利撰写实战:30分钟高效生成高质量技术专利文档

在技术专利撰写领域,尤其是软件、算法或系统架构相关的发明专利,如何将创新的技术构思快速、规范地转化为符合《专利法》要求的申请文件,是许多开发者和技术团队面临的共同挑战。传统的人工撰写方式不仅耗时耗力,对撰写人的法律和技术双重背景要求极高,还容易因格式或术语不规范导致审查意见增多。本文将分享一套利用 AI 辅助工具,系统化、高效率地完成一篇高质量发明专利说明书撰写的实战流程。通过清晰的步骤拆解、可复制的提示词(Prompt)工程以及关键注意事项,即使是首次接触专利撰写的开发者,也能在短时间内掌握从技术方案梳理

子夜轻风 952

ros2交叉编译 x86到arm

ros2交叉编译方法

weixin_45174417的博客 7174

高功率半导体叠阵激光准直

摘要:研究针对高功率半导体激光器叠阵的光束整形问题,通过Zemax软件模拟5个巴条(间隔1.81mm)的LD阵列(总功率300W)。采用非序列模式建立模型,设置慢轴/快轴发散角分别为5°和19.5°,并配置包含19个发光点的巴条结构。通过S-TIH53材质的快轴准直镜(焦距0.6mm)和慢轴准直镜(焦距2.88mm)进行光束整形,有效降低了快慢轴发散角。仿真结果表明该方法能显著改善叠阵激光的光束质量,为高亮度光纤耦合提供了解决方案。

Zhaxibamao的博客 915

交叉编译ARM版 Qt

交叉编译ARM版 Qt (qt-everywhere-opensource-src-4.7.3) . 分类: QT2011-12-29 10:03 261人阅读 评论(0) 收藏 举报   因实际项目需求,需将Qt编译成LINUX-ARM版,以下为整个操作过程,使用Qt编写的程序已在实际开发板上运行,在此贴出,但愿能为需要的朋友提供上帮助。   准备工作: Lin

听风的雨滴 2174

python基于pingouin统计分析:rm_corr计算两个变量之间的重复测量相关性(Repeated measures correlation、plot_rm_corr函数可视化重复测量相关性图

python基于pingouin包进行统计分析:使用rm_corr函数计算两个变量之间的重复测量相关性(Repeated measures correlation)、plot_rm_corr函数可视化重复测量相关性图

statistics+insight+vista+power 680

【SpringBoot 4.x 第2节】夯爆了,学习 Spring Boot 4.x 前,需要具备哪些 Java 基础?

🏆 本文收录于 《滚雪球学 Spring Boot 4.x》 专栏。 本专栏面向 有一点 Java 基础,但没有系统学过 Spring Boot 的读者,采用“滚雪球式学习法”:先跑通、再理解、再重构、再上线,最终带你从第一个 Hello API 一路完成一个可部署、可监控、可扩展的后端项目。

**My Coding Family** 4568

linux安装ARM交叉编译环境,一套完整的ARM交叉编译环境的搭建过程

在网上查看了不少资料,参考别人的,在加上一些自己遇到的问题结合的,内容直接转载过来了,给和我一样,刚入门ARM的新手的。虽然网上很多现成的,但是自己动手做作,还是很好的。编译环境:内核名称:Linux内核发行版: 3.3.0-4.fc16.x86_64内核版本:#1 SMP Tue Mar 20 18:05:40 UTC 2012硬件架构名称: x86_64硬件平台:x86_64操作系统:GNU/...

weixin_35617554的博客 1880

解决com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 60027, active 20, maxActive 20错误

全网详细解决com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 60027, active 20, maxActive 20, creating 0, createErrorCount 24的错误

念兮为美 417
上一篇: SecureCRT SSH远程登入connection was reset
下一篇: Java—Eclipse环境配置
admin_小小怪
博客等级 码龄7年 32粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值