linux的系统移植——交叉编译器

1.为什么要有交叉编译器?

\qquad一般电脑是X86架构,而单片机一般不是,比如单片机是ARM架构,那么gcc编译生成的程序只能在X86的架构上运行,而不能在ARM架构上运行,所以需要交叉编译器编译生成能在ARM架构上运行的程序。
\qquad查看一个可执行程序,究竟属于哪个架构,可以使用file命令。比如有.c文件hello.c。

gcc hello.c -o hello  #生成可执行文件hello
file hello

\qquad运行结果:

hello: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=bf1698069c3282a51cf380a29c30a8a9062e270e, for GNU/Linux 3.2.0, not stripped

2.安装交叉工具链

\qquad安装过程很简单,就是解压缩的过程。
\qquad第一步:解压到linux标准目录,一般解压到/usr/local/arm/下面。
\qquad第二步:添加环境变量:编辑/etc/environment ,然后添加把交叉工具链的bin目录的绝对路径,注意一定要在原PATH中添加,不要另外起一行,然后source;如果要是使用时,采用绝对路径,可以不用第二步添加环境变量。

sudo vim /etc/environment
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/usr/local/arm/gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabi/bin"
source /etc/environment

3.使用

\qquad 3.1使用的简单方式,需要添加环境变量。当时当有多个编译器时,可能会出现问题

arm-linux-gnueabi-gcc hello.c -o hello

\qquad 3.2 使用绝对路径方法,使用比较复杂,但是准确

/usr/local/arm/gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi-gcc hello.c -o hello

4.添加32位lib

\qquad交叉编译器是在32位系统上制作的,所以需要用到32位的lib;如果我们的linux系统是64位的,可以有时候会出现无法找到交叉编译器命令的问题,这个问题有可能是使用简单交叉编译器命令而没有添加环境变量,也有可能是没有添加32位的lib。下面介绍如何添加32位lib。
\qquadUbuntu12.04以前的版本:sudo apt-get install ia32-libs
\qquadubuntu12.04以后的版本:sudo apt-get install libc6:i386 sudo apt-get install lib32z1

5.查看交叉编译器版本和使用

\qquad查看版本:arm-linux-gnueabi-gcc -v
\qquad目录下有一个hello.c文件,我们使用交叉编译器编译,然后使用file命令查看,程序运行的架构。

arm-linux-gnueabi-gcc hello.c -o hello  #编译
file hello

\qquad运行结果:hello: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.3, for GNU/Linux2.6.32,BuildID[sha1]=20ab9e34b81a80b48ed4a048a4db4bb2d09378e2, with debug_info, not stripped

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/483489.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【计算机网络复习 数据链路层】3.5.5 CSMA-CA协议

CSMA-CA协议CSMA/CA协议一、CSMA/CA协议二、CSMA/CD 与 CSMA/CACSMA/CA协议 一、CSMA/CA协议 载波监听多点接入/碰撞避免 CSMA/CA(carrier sense multiple access with collision avoidance) 发送数据前,先检测信道是否空闲。 空闲则发出…

实验四3

#include "stdafx.h" #include "stdio.h"int main(int argc, char* argv[]) {char a[81];int i;int num0,word0;char c;gets(a);for(i0;(ca[i])!\0;i)if(c )word0;else if(word0){word1;num;}printf("%d\n",num);return 0; } 转载于:https://www…

3 个问题:MIT专家论述关于阻碍AutoML发展的障碍

来源:ScienceAI编译:萝卜皮研究人员希望更多用户友好的机器学习系统将使非专家能够分析大数据——但这样的系统能完全自主吗?麻省理工学院计算机科学家 Kalyan Veeramachaneni 分享了他对自动化机器学习 (AutoML)现状、…

linux的系统移植——交叉编译工具集

1.交叉编译工具集 \qquad在我们安装交叉工具集时,不仅安装了arm-linux-gnueabi-gcc ,还安装了很多工具,它们共同构成交叉编译工具集。 arm-linux-gnueabi-addr2line arm-linux-gnueabi-gcov-tool arm-linux-gnueabi-ar arm-linux…

【计算机网络复习 数据链路层】3.6.1 局域网

局域网基本概念和体系结构局域网基本概念和体系结构一、局域网二、局域网拓扑结构三、局域网介质访问控制方法四、局域网的分类五、MAC子层和LLC子层局域网基本概念和体系结构 一、局域网 局域网 (Local Area Network):简称LAN,…

佐治亚理工学院发文:不要迷信可解释性,小心被误导

来源:AI科技评论编译:王晔校对: 琰琰可解释性对人工智能发展来说至关重要,但在可解释系统的可信度方面,理解其可能带来的负面效应亦同等重要。近日,佐治亚理工学院研究团队发表最新研究,重点讨论了可解释人工智能系统&…

【计算机网络复习 数据链路层】3.6.2 以太网

以太网一、以太网概述二、以太网提供无连接、不可靠的服务三、以太网传输介质与拓扑结构的发展四、10BASE-T以太网五、适配器与MAC地址六、以太网MAC帧七、高速以太网一、以太网概述 以太网(Ethernet)指的是由Xerox公司创建并由Xerox、Intel和DEC公司联…

软件开发冲刺1

站立会议: 分配好任务,在队长的带领下开始了为期十天的软件开发冲刺,我们做的是一款聊天无课表软件有了目标就有了动力。我们先对我们的产品做了一个详细的规划,指定每天的任务量,调试好开发环境,做好一切准…

linux的系统移植——【PC-开发板】的环境搭建

1.主机数据如何传递到开发板? \qquad普通uboot kernel传递到开发板,一般会使用网络接口tftp; 2.环境搭建:台式机环境搭建 \qquad第一种情况是:路由器环境。把电脑和开发板利用网线都连接到同一个路由器上;…

一文了解机器人伺服系统

来源:传感器技术工业机器人有4大组成部分,分别为本体、伺服、减速器和控制器。而其中,工业机器人电动伺服系统的一般结构为三个闭环控制,即电流环、速度环和位置环。一般情况下,对于交流伺服驱动器,可通过对…

zookeeper学习入门

使用dubbo,要使用zookeeper,在为了解到这个中间件时,我什么也不知道,好在安装很容易,于是安装上,通过命令行体验了一把。最开始的感觉就是建立一个类似于树的存储结构,然后存取数据,…

linux的系统移植——uboot常用命令

1.uboot的常用命令 1.1 print \qquad查看uboot的环境变量 1.2 setenv、saveenv \qquad用法:setenv 变量名 变量值 功能:修改或者增加一个变量名的变量值 \qquad用法:setenv 变量名 功能:删除一个变量 \qquad用法:sav…

【计算机网络复习 数据链路层】3.6.5 PPP、HDLC

PPP协议和HDLC协议PPP协议和HDLC协议一、广域网二、PPP协议2.1 PPP协议的特点2.2 PPP协议应满足的要求2.3 PPP协议无需满足的要求2.4 PPP协议的三个组成部分2.5 PPP协议的帧格式三、HDLC协议3.1 HDLC的站3.2 HDLC的帧格式四、PPP协议 & HDLC协议PPP协议和HDLC协议 一、广域…

李彦宏:用“工程思维”做自动驾驶

来源:央广网10月23日,北京大学新工科国际论坛正式召开,大会以“新时代、新挑战、新工科”为主题,旨在进一步推动新工科建设,深化全球交流,推进国际合作。百度创始人、董事长兼CEO李彦宏受邀出席并发表题为“…

ansible配置zabbix自动化安装和配置

安装   推荐yum安装     RHEL(CentOS)5版本:       rpm -Uvh http://mirror.pnl.gov/epel/5/i386/epel-release-5-4.noarch.rpm     RHEL(CentOS)6版本:       rpm -Uvh http://ftp.…

linux的系统移植——内核启动

1.uImage zImage Image bzImage的区别 \qquaduImage既包括内核数据,又包括和uboot的衔接数据;zImage Image bzImage本质是一样的,但是数据压缩的格式不同,只包含内核内容。 2.uboot内核启动条件 \qquad启动参数;文件系…

爬取Github Web API 并存入Mysql数据库

写在前面 本文内容为爬取GitHub的Web API并存入mysql数据库,内容为华为鸿蒙OS相关的代码。 WEB API Web API是网络应用程序接口。它包含了广泛的功能,网络应用通过API接口,可以实现存储服务、消息服务、计算服务等能力。Web API最主要的功能…

Facebook 正在研究新型 AI 系统,以自我视角与世界进行交互

来源:AI科技大本营(ID:rgznai100)编译:禾木木你是否能想象 AI 以第一人称视角来理解世界是什么样的呢?未来,以第一人称视角理解世界的 AI 可以开启沉浸式体验的新时代。增强现实(AR)…

浏览器窗口尺寸clientHeight / scrollHeight / offsetHeight / innerHeight

https://www.cnblogs.com/nanshanlaoyao/p/5964730.html clientHeight:元素客户区的大小,指的是元素内容及其边框所占据的空间大小(经过实践取出来的大多是视口大小)scrollHeight: 滚动大小,指的是包含滚动内容的元素大…

linux的驱动开发——下载地址

1.gcc下载地址 \qquadgcc下载地址 \qquadgcc依赖下载地址 2.linux内核下载地址 \qquadlinux内核下载地址 3.交叉工具链下载地址 \qquad交叉工具链下载地址 4.uboot下载地址 \qquaduboot下载地址 5.secureCRT和secureFX双软件下载地址和安装参考 \qquadsecure双软件下载地址…