linux的驱动开发——交叉编译器

1.交叉编译器

\qquadARM裸机、Uboot移植、linux移植这些都需要在linux系统上进行编译,编译就需要编译器。在linux系统中,可以使用gcc命令对c语言程序进行编译,但gcc编译器是针对X86架构的,现在需要对ARM架构的代码进行编译。所以我们现在需要一个可以对ARM架构的代码进行编译的gcc编译器,这个编译器被称为交叉编译器。
\qquad交叉编译器具有如下的特点:
\qquad(1)是一个gcc编译器
\qquad(2)运行在X86架构上
\qquad(3)可以编译ARM架构的代码,也就是说编译出来的可执行文件是在ARM芯片上运行的

2.ARM-linux交叉编译器的下载安装

\qquad我下载的是gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz,下载地址:arm-linux交叉编译器4.9.4
\qquad下载完成后,在/usr/local目录下,创建一个arm目录,然后再把gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz拷贝到/usr/loacl/arm目录下,再解压。

sudo mkdir arm  #创建arm目录
sudo cp /home/xiaoming/downloads/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz  /usr/local/arm   #复制
sudo tar xvf gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz

\qquad解压完成之后,还需要把/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin的路径添加到/etc/profile

sudo vim /etc/profile  #打开profile

\qquad在文件最后,添加export PATH=$PATH:/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin
\qquad查看是否安装成功,若安装成功会显示版本号gcc version 4.9.4 (Linaro GCC 4.9-2017.01)

arm-linux-gnueabihf-gcc -v

3.交叉编译器的编译过程

\qquad首先使用arm-linux-gnueabihf-gcc,将.c .s文件编译为.o文件,.s文件是汇编文件,.c文件是c语言文件。
\qquad-g:产生调试信息;-c:编译源文件,但是不链接;-o:制定编译产生的.o文件的名字。

arm-linux-gnueabihf-gcc -g -c .c文件(或者.o文件)  -o  .o文件

\qquad然后把上一步的所有的.o文件链接到一起,并要指定一个链接起始地址,也就是代码运行的起始地址。链接起始地址一般指向RAM地址,RAM 分为内部RAM和外部RAM,外部RAM即DDR。比如:

arm-linux-gnueabihf-ld -Ttext  0X87800000 xxx.o -o xxx.elf

\qquad最后xxx.elf不是最终烧写到单片机sd卡上的可执行文件,我们要烧写的文件是.bin文件,这需要使用arm-linux-gnueabihf-objcopy -O binary -S -g xxx.elf xxx.bin
\qquad其中-O:选择以什么格式输出;binary:以二进制输出;-S:不要复制源文件中的重定位和符号信息;-g:不要复制源文件中的调试信息;

arm-linux-gnueabihf-objcopy -O binary -S -g xxx.elf xxx.bin

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

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

相关文章

【计算机网络复习 物理层】2.1.1 物理层基本概念

物理层基本概念一、基本概念一、基本概念 物理层解决如何在连接各种计算机的传输媒体上传输数据比特流,而不是指具体的传输媒体。 物理层主要任务:确定与传输媒体接口有关的特性 >定义标准 机械特性: 定义物理连接的特性,规定…

江西财经大学第二届程序设计竞赛同步赛 H大时钟 (扩展欧几里得)

链接:https://ac.nowcoder.com/acm/contest/635/H来源:牛客网 时间限制:C/C 1秒,其他语言2秒空间限制:C/C 262144K,其他语言524288K64bit IO Format: %lld题目描述 艾兰岛和沃夫岛的时间算法很不一样&…

为什么数学的用途这么大?

来源:遇见数学翻译:萧福坤译自 Science Digest, August 1985原文:http://210.60.224.4/ct/content/1986/00050197/0008.htm我的父亲是一位物理学家,所以我从小耳濡目染,当他与同事讨论问题时,我坐在桌旁,「…

参数列表和数组的相互转换

使用es6的扩展运算符 ...js var arr [1,2,3]; function add(a,b,c){ return a b c; }// add(arr[0],arr[1],arr[2]) add.apply(null,arr); ## 研究Object1. 这是一个函数(类);2. 该类身上有自身的方法还有原型的方法 ![](./img/1.png)1. O…

数据库基础知识——MySQL服务的启动和停止

文章目录1.数据库的启动1.1 从计算机管理启动1.2 从cmd启动2.数据库的停止1.1 从计算机管理停止1.2 从cmd停止\qquad在登录数据库之前,必须保证数据库已经启动。数据库的启动和停止有两种方式:从计算机管理启动和停止和从cmd启动和停止。1.数据库的启动 …

【计算机网络复习 物理层】2.1.2 数据通信基础知识

数据通信基础知识一、典型的数据通信模型二、数据通信相关术语三、三种通信方式四、两种数据传输方式一、典型的数据通信模型 二、数据通信相关术语 通信的目的是传送消息。 数据:传送信息的实体,通常是有意义的符号序列。 信号:数据的电气…

无线网络未来十年十大产业趋势

来源:华为编辑:蒲蒲5G的发展速度非常之快,截止2021年9月,全球已经部署了有176张5G商用网络,超过150万5G站点。5.2亿5G用户的感官体验,也迎来全面升级焕新:高清视频的时长占比提升到了80%;流行的短视频APP已…

git入门(廖雪峰老师)

根据廖雪峰老师的git教程进行学习总结; 1、之前上班用的都是svn进行管理,那么svn和git有什么区别呢? svn是集中式的版本控制系统,而git是分布式版本控制系统,那么集中式和分布式版本控制系统有什么区别呢? …

linux基础知识——进程相关概念

1 什么是程序? \qquad程序,是经过编译完成的二进制文件,程序存储在磁盘上,并不占用系统资源。 2 什么是进程? \qquad进程,是一个抽象概念,进程是程序动态的描述,它在内存中执行&…

【计算机网络复习 物理层】2.1.3 码元、波特、速率、带宽

码元、波特、速率、带宽一、码元二、速率一、码元 码元是指用一个固定时长的信号波形(数字脉冲),代表不同离散值的基本波形,是数字通信中数字信号的计量单位,这个时长内的信号称为k进制码元,而该时长称为码…

智慧竞赛正在升温

来源:混沌巡洋舰原文:摘自 edge 系列图书 《那些最重要的科学新发现》迈克斯泰格马克(MaxTegmark):麻省理工学院物理系终身教授,平行宇宙理论研究专家,未来生命研究所创始人;著有《生命3.0》《穿越平行宇宙…

LeetCode算法

一日一题! 转载于:https://www.cnblogs.com/weibo-blog/p/10779370.html

linux基础知识——CPU相关知识

1.CPU处理程序过程 \qquad在存储介质中,从下至上是进程的时间加载的先后顺序,也是存储空间大小的顺序。 2.MMU(内存管理单元) \qquadMMU是位于CPU内部的一个物理器件。在程序运行时,会产生进程,同时产生虚拟内存空间&#xff0c…

【计算机网络复习 物理层】2.1.4 奈氏准则和香农定理

奈氏准则和香农定理一、失真1.1 失真的一种现象 —— 码间串扰二、奈氏准则三、香农定理四、如何区分一、失真 影响失真程度的因素:1、码元传输速率 2、信号传输距离 3、噪声干扰 4、传输媒体质量 1.1 失真的一种现象 —— 码间串扰 码间串扰:接收端收到…

虚拟在左,真实在右:德国学者用AI合成一亿像素逼真3D图像,可任意旋转

来源:AI科技评论编译:杏花编辑:青暮近日,来自德国埃尔兰根-纽伦堡大学的学者提出了一种新颖的神经网络方法,用于3D图像的场景细化和新视图合成。只需要输入点云和相机参数的初始估计,就可以输出由任意相机角度合成的图像&#xff…

phpmyadmin登陆错误:The requested URL /phpmyadmin was not found on this serve

解决方法: 首先,重新安装apache2: sudo dpkg-reconfigure -plow phpmyadmin 配置时记得选择apache2 如果仍然无法登陆,再对phpmyadmin和apache服务器软链接 sudo ln -s /etc/phpmyadmin/apache.conf /etc/apache2/ssites-enabled/…

linux基础知识——环境变量

1.什么是环境变量? \qquad环境变量,即操作系统中的一些可以设置的参数,用于设置操作系统运行环境。 2.环境变量的特征 \qquad本质就是字符串; \qquad有统一的格式:名值[:值] \qquad值用来描述进程环境信息。 3.常用的…

【计算机网络复习 物理层】2.1.5 编码与调制

编码与调制一、基带信号与宽带信号二、编码与调制三、数字数据编码为数据信号一、基带信号与宽带信号 信道:信号的传输媒介。一般用来表示向某一个方向传送信息的介质,因此一条通信线路往往包含一条发送信道和一条接收信道。 按照传输信号分&#xff1…

MLOps是构建在一个谎言上的吗?

来源:AI前线作者:Mateusz Kwaśniak译者:王强策划:刘燕在一些 MLOps 项目的背景介绍中,都会提及“87% 的数据科学项目以失败告终”的论点。这个数据具体出自何处,是否准确测定?本文作者通过相关…

Intel格式与Motorola格式的区别

Intel低字节在前Motorola高字节在前 在进行CAN总线通信设计或者测试过程中,经常看到CAN总线信号的编码格式有两种定义:Intel格式与Motorola格式。究竟两种编码格式有什么样的区别呢?设计者、dbc文件编辑者或者测试人员又该如何判断两种格式,并进行有效正…