新闻资讯  快讯  焦点  财经  政策  社会
互 联 网   电商  金融  数据  计算  技巧
生活百科  科技  职场  健康  法律  汽车
手机百科  知识  软件  修理  测评  微信
软件技术  应用  系统  图像  视频  经验
硬件技术  知识  技术  测评  选购  维修
网络技术  硬件  软件  设置  安全  技术
程序开发  语言  移动  数据  开源  百科
安全防护  资讯  黑客  木马  病毒  移动
站长技术  搜索  SEO  推广  媒体  移动
财经百科  股票  知识  理财  财务  金融
教育考试  育儿  小学  高考  考研  留学
您当前的位置:首页 > IT百科 > 程序开发 > 编程百科

如何搭建嵌入式linux开发环境?

时间:2019-06-14 10:49:21  来源:  作者:

对于初学者,只需要一台安装有linux操作系统(比如Ubuntu)的PC即可,或者在windows下安装一个虚拟机软件(Vmware),虚拟一个Linux系统的主机,但是我建议还是安装真机,这样会迫使你必须在Linux环境下做任何事情,能让你更快的熟悉Linux操作系统。

那么当我们进入进阶阶段的学习时,需要在硬件设备上跑程序的时候,那我们就需要继续搭建交叉开发环境了。交叉开发模式即编译和运行不在同一台主机上,在PC机上编辑、编译,在目标机(开发板或者产品)上运行程序。

如何搭建嵌入式linux开发环境?

 

在主机上开发完程序,通常使用nfs网络挂载或者tftp将目标代码通过网线下载到目标板进行验证,但是,像我们当前项目的驱动开发,驱动都是集成在内核中的,所以每次都是在Ubuntu上将整个内核代码进行编译,然后通过usb将整个内核镜像产物进行烧写。

gcc(GNU C Compiler),大名鼎鼎的GNU的C/C++/Obj-C编译器

gcc一般Linux系统自带,不用自己安装,下面简单说下gcc编译的过程,GCC的编译流程分为四个步骤:

  1. 预处理(Pre-Processing):gcc -E hello.c -o hello.i
  2. 编译(Compiling):gcc -E hello.c -o hello.i
  3. 汇编(Assembling):gcc -c hello.s -o hello.o
  4. 链接(Linking):gcc hello.o -o hello

链接时有时候会加如下参数:

  • -I: 指定头文件的路径
  • -L: 指定库的路径

安装交叉编译工具链

当我们初学的时候仅仅在Linux主机下编译运行我们的程序,gcc就够了,但是如果交叉运行时,就必须安装交叉编译工具链,交叉编译工具链可以自己制作,但是我还是建议大家通过以下方式安装:

  • 在~目录下创建一个文件夹
如何搭建嵌入式linux开发环境?

 

  • 下载交叉编译工具链gcc-4.6.4.tar.xz(根据你需要的版本下载)cp到toolchain目录下进行解压
如何搭建嵌入式linux开发环境?

 

  • 添加环境变量

修改配置文件/etc/bash.bashrc,在最后一行添加:

export PATH=$PATH:/home/linux/toolchain/gcc-4.6.4/bin/
  • 重启配置文件
source /etc/bash.bashrc
  • 工具链测试
arm-none-linux-gnueabi-gcc -v、

如果可以看到版本号,说明安装配置成功。

tftp服务器的安装及配置

tftp是用来下载远程文件的最简单网络协议,基于UDP来实现的,嵌入式linux的tftp开发环境包括两个方面:

一是linux服务器端的tftp-server支持,二是嵌入式目标系统的tftp-client支持。因为u-boot(bootloader的一种)本身内置支持tftp-client,所以嵌入式目标系统端就不用配置了。

  • 修改文件(/etc/default/tftpd-hapa),开启tftp服务
sudo vi /etc/default/tftpd-hpa

改为:

如何搭建嵌入式linux开发环境?

 

-l:以standalone/listen 模式启动TFTP服务,而不是从inetd启动 ,standalone/listen模式是一次启动,运行期间一直驻留在内存中,优点是反应快,缺点是损耗了一定的系统资源,通常用于对实时性要求较高的地方,inetd启动方式相反,只在外部发出连接请求时才调用tftp进程,不占用系统资源。

-c:可创建新文件,默认情况下,TFTP只允许覆盖原有文件,不能创建新文件。

-s:改变TFTP启动的根目录,加了-s之后,客户端端在使用TFTP时,不再需要输入指定的目录。

  • 重启tftp服务器
sudo service tftpd-hpa restart
  • 创建/tftpboot目录(在根目录下创建),并修改权限
sudo mkdir tftpbootsudo chmod 777 tftpboot
  • 登录本机进行测试
tftp localhost //登录tftp > get xxx //xxx为你想要从服务器(/tftpboot目录)下载的文件tftp > put xxx //xxx为你想要往服务器(/tftpboot目录)发送的文件tftp > q //q表示退出

如果采用烧写整个Linux kernel镜像的方法,通常使用usb将主机和目标板连接,然后根据不同的芯片厂商提供的烧写工具进行烧写,比如高通芯片使用Qfile工具进行烧写。
 



Tags:开发   点击:()  评论:()
声明:本站部分内容来自互联网,内容观点仅代表作者本人,如有任何版权侵犯请与我们联系,我们将立即删除。
▌相关评论
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
▌相关推荐
大概每个人在学生时代开始就使用Java了,我们一直在学习Java,但Java中总有一些概念含混不清,不论是对初级还是高级程序员都是如此。所以,这篇文章的目的就是弄清楚这些概念。读完本文你会对这些概念有更深入的了解,还能弄清...【详细内容】
2019-11-27   开发  点击:(0)  评论:(0)  加入收藏
作为一个Java开发人员,有些常用的Linux命令必须掌握。即使平时开发过程中不使用Linux(Unix)或者mac系统,也需要熟练掌握Linux命令。因为很多服务器上都是Linux系统。所以,要和服...【详细内容】
2019-11-26   开发  点击:(4)  评论:(0)  加入收藏
开发者要想为自己的小程序添加更多的实用功能,就必须要了解并且正确调用各种小程序开发api接口,下面我就给大家介绍一下,开发者必须了解的常用小程序开发api接口都有哪些。开发...【详细内容】
2019-11-26   开发  点击:(7)  评论:(0)  加入收藏
php的api接口在实际工作中,使用PHP写api接口是经常做的,PHP写好接口后,前台就可以通过链接获取接口提供的数据,而返回的数据一般分为两种情况,xml和json,在这个过程中,服务器并不...【详细内容】
2019-11-26   开发  点击:(2)  评论:(0)  加入收藏
Android是一个基于Linux的免费和开源移动操作系统,用户基数很大,很多企业在进行app开发的时候,都会选择开发安卓版本的app,下面我就给大家简单介绍一下,企业最常用到的安卓app开...【详细内容】
2019-11-21   开发  点击:(6)  评论:(0)  加入收藏
注意:在windows环境下开发flutter应用建议采用win10,因为有win7下缺少开发依赖的组件1、到flutter官网下载安装文件,https://flutter.dev/docs/get-started/install2、下载完成...【详细内容】
2019-11-21   开发  点击:(2)  评论:(0)  加入收藏
正如我们所知, React 是 JavaScript 库,用于构建精彩的用户界面。然而,并不是每个人都在使用相同的工具或知道有这么一些出色的工具,可以让 Reacat 开发体验变得更加有趣和积极...【详细内容】
2019-08-27   开发  点击:(1)  评论:(0)  加入收藏
图片来源 chuttersnap 网站 Unsplash不论你是专业的React开发者,还是刚刚接触这方面的新手,你肯定想让开发过程尽可能简单。但想要跟上整个React生态系统的最新趋势却很不容易...【详细内容】
2019-11-20   开发  点击:(3)  评论:(0)  加入收藏
今天小编要跟大家分享的文章是关于Web前端开发应该必备的编码原则。HTML已经走过了20几年的发展历程,它几乎见证了整个互联网的发展。但是,即便到现在,有很多基础的概念和原则...【详细内容】
2019-11-19   开发  点击:(4)  评论:(0)  加入收藏
微信小程序是一个诞生于2017年的,基于微信运行的手机应用。由于是基于微信运行,所以在小程序的背后蕴藏着巨大的流量红利,因此很多企通过小程序获得了巨大的收益。但仍有一部...【详细内容】
2019-11-15   开发  点击:(8)  评论:(0)  加入收藏
前言之所以把扫码和带参数跳转放到一起是因为这两个都涉及到页面间传参。1. 小程序之扫码在现在的移动互联网中,扫码是一个非常重要的应用场景。在眼查查中也得到广泛应用,从...【详细内容】
2019-11-13   开发  点击:(6)  评论:(0)  加入收藏
本篇要介绍的是开始学习爬虫之前必会的技能 - 浏览器自带的开发者工具,学会了浏览器开发者工具,才能更好的分析出网页相应的内容结构,以及如何使用开发者工具来找出网站中信息...【详细内容】
2019-11-13   开发  点击:(7)  评论:(0)  加入收藏
图源Unsplash用Python编代码体验极佳,并随着新版本的发布越来越好!对于我而言,Python提供的大量免费函数库、高可读性的程序和新引入的类型注释让我沉迷其中无法自拔。然而,数据...【详细内容】
2019-11-11   开发  点击:(11)  评论:(0)  加入收藏
各位,关于编译器和集成开发环境这两个名称,我们平时一直在说,但这二位究竟有什么区别和联系呢,今天就跟大家简单聊一聊。 我们平时所说的程序,是指双击后就可以直接运行的程序,这...【详细内容】
2019-11-11   开发  点击:(11)  评论:(0)  加入收藏
加密解密在开发中经常用到,比如登录密码加密解密、消息传输加密解密等。但是很多人只会使用不理解其中的原理,这篇文章就带领大家快速学习加密解密的原理和使用...【详细内容】
2019-11-11   开发  点击:(14)  评论:(0)  加入收藏
在章节《企业对C/C++程序员的技能要求》中,我们已经了解到企业需要的C程序员至少有70%以上是基于Linux开发的环境,基于Windows开发环境的职位实在太少。Windows多容易,多么的好...【详细内容】
2019-11-08   开发  点击:(12)  评论:(0)  加入收藏
APT一直以其"高级""持续"的特点名列网络病毒系列榜首。其攻击对象高级,持续时间长,通常以年为单位。以下是各国情报和军事部门的网络安全部门列出的最危险,伤害力最强,最"臭名昭...【详细内容】
2019-11-08   开发  点击:(16)  评论:(0)  加入收藏
今天我利用这篇文章给大家讲解一下 C# 中的序列化与反序列化。这两个概念我们在开发中经常用到,但是我们绝大部分只用到了其中的一部分,剩下的部分很多开发人员并不清楚,伸着可以说是不知道。因此我希望通过这篇文章能让...【详细内容】
2019-11-06   开发  点击:(8)  评论:(0)  加入收藏
无论是否持有信用卡,持有几张,看完这份指南,有干货会让卡友有所启发。...【详细内容】
2019-10-24   开发  点击:(6)  评论:(0)  加入收藏
原理概述关于LeakCanary的原理,官网上已经给出了详细的解释。翻译过来就是:1.LeakCanary使用ObjectWatcher来监控Android的生命周期。当Activity和Fragment被destroy以后,这些...【详细内容】
2019-11-04   开发  点击:(2)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条