目录

  • 背景
  • 开发环境的搭建
    • 1.交叉编译工具的安装
    • 2.开发工具和依赖库的安装
      • 2.1. 必需部分
      • 2.2.可选部分
  • ubuntu20.04.1 64位配置和编译Linux3.0内核

背景

市面上的嵌入式linux开发板厂商提供给客户的开发环境往往是低版本的ubuntu,因为他们没有精力去测试每个版本的ubuntu,一旦某个版本调通了,这个版本就用一直用下去,不会换新的,这主要是考虑到人力成本。

理论上,高版本的ubuntu也是可以搭建好嵌入式linux开发环境的,只不过相比低版本的ubuntu,可能会做更多一些的工作,但总的来说也没有多少内容。

选择高版本的ubuntu的好处是什么呢?答案是,可以更好地支持其他软件或库,比如高版本的opencv就需要高版本的ubuntu才能支持。

开发环境的搭建

搭建嵌入式linux开发环境,主要包含两部分内容:

  1. 交叉编译工具的安装。
  2. 开发工具和依赖库的安装,包括必需的和可选的。

这里先说下我的linux源码和交叉编译工具的来源:这两个都是由迅为开发板厂商提供,交叉编译工具包是arm-2009q3.tar.bz2,linux内核版本为3.0。

我的ubuntu20.04.1 64位是运行在 vmware workstation pro 15 上的虚拟机。

1.交叉编译工具的安装

本质上就是把交叉编译工具解压到某个目录下,然后在PATH环境变量中添加此目录下的bin目录,以便其他应用程序找到交叉编译工具的可执行文件,最后修改linux源码根目录的Makefile里的CROSS_COMPILE变量,用于指定编译内核的编译器。由于交叉编译工具属于系统开发级的东西,所以把它放在Home下显得不太合适。一般我们可以考虑把它放在/usr/local下,我们在/usr/local下建立一个arm文件夹,表示这是用于arm的交叉编译工具,然后将arm-2009q3.tar.bz2拷贝到/usr/local/arm下解压即可。解压命令为:

tar xvf arm-2009q3.tar.bz2

接下来就是把交叉编译工具路径添加到PATH环境变量中。为了让每次系统重启后,PATH环境变量仍然能够包含我们的路径,PATH环境变量的添加应放在linux自启动脚本中进行。自启动脚本有好几个:有用户级的,也有系统级的,我一般喜欢用/etc/profile这个脚本。

sudo gedit /etc/profile

用此命令打开脚本后,在最后添加一行:

export PATH=$PATH:/usr/local/arm/arm-2009q3/bin

退出编辑后,执行命令:

source /etc/profile

这样,不需要重启linux,此脚本会立即生效。

最后,打开linux源码根目录的Makefile文件,查找CROSS_COMPILE,然后将其改为

CROSS_COMPILE   ?= /usr/local/arm/arm-2009q3/bin/arm-none-linux-gnueabi-

注意:有的Makefile里的CROSS_COMPILE默认没有写完整的路径,而是只写了arm-none-linux-gnueabi- ,这样有一个弊端:那就是当你在PATH中同时添加了好几个交叉编译工具包的路径时,由于编译时用的编译器名字都叫arm-none-linux-gnueabi-xxx,可能出现Makefile在PATH中寻找编译器时选择了错误的同名编译器,导致出现一些莫名其妙的错误,比如:

garbage following instruction -- `dmb ish'

2.开发工具和依赖库的安装

此部分分为必需的部分和可选的部分

2.1. 必需部分

这部分主要是编译内核所必需的工具和依赖库:make,gcc,u-boot-tools,32位系统的库,menuconfig的依赖库等。具体需要执行如下命令进行安装:

sudo apt-get install build-essential libncurses-dev lib32z1 u-boot-tools

其中,
build-essential为一个包含了多个开发必备工具和库的包,比如它包含gcc,make。

libncurses-dev为menuconfig需要的库:没有它的话menuconfig将无法执行。

lib32z1为32位系统的库:因为我们使用的是64位的ubuntu系统,而ARM上搭建的linux是32位的,所以需要安装32位系统的库。没有他的话,编译内核的时候会各种报错。

u-boot-tools是构建uImage需要的工具。

注意:对于不同版本的内核,必需的开发工具和依赖库可能会增加。因此,在编译不同版本内核的时候,可能会遇到一些错误,到时候根据错误提示安装对应的工具和依赖库即可。

2.2.可选部分

这部分主要就看个人需要用到怎样的开发工具了,比如ssh,git之类的,根据自己需要安装。

ubuntu20.04.1 64位配置和编译Linux3.0内核

接下来我们就可以配置和编译内核啦。

配置内核我习惯用make menuconfig,毕竟他有图像化界面,也不用一条一条的全部配置一遍,很方便。

需要注意的是,用ubuntu20.04.1 64位编译内核时,会遇到如下报错:

Can't use 'defined(@array)' (Maybe you should just omit the defined()?) at kernel/timeconst.pl line 373:

这应该是高版本ubuntu带来的问题,我们需要打开报错中提到的源文件:
/(内核根目录)/kernel/timeconst.pl,然后修改第373行:将!define(@val)改为!@val即可。

之后再用make -j4编译内核,就能一路顺利啦。

ubuntu20.04.1 64位搭建嵌入式linux开发环境相关推荐

  1. Linux学习之云服务器搭建嵌入式Linux开发环境

    Linux学习之云服务器搭建嵌入式Linux开发环境 第一步:购买云服务器 进入腾讯云官方网站腾讯云官方网站 选择云+校园云+校园 进入控制台 将云服务器系统设置为Ubuntu系统 使用Xshell6 ...

  2. 构建嵌入式系统软件开发环境-VMware的安装及搭建嵌入式Linux开发环境

    嵌入式系统操作系统 目前流行的嵌入式操作系统主要有VxWorks.WindowsCE.Linux等,由于Linux的源码开放性.内核可裁剪性.在图像处理.文件管理及多任务支持等诸多方面的特点,使得它成 ...

  3. 在Windows使用VSCode搭建嵌入式Linux开发环境

    在Windows使用VSCode搭建嵌入式Linux开发环境 百问网已经制作好了完备的Ubuntu镜像,可以从这里下载: 链接:https://pan.baidu.com/s/1vw4VUV_Mvt0 ...

  4. 嵌入式linux编译环境搭建,嵌入式Linux开发环境搭建

    整理下嵌入式Linux开发环境搭建过程笔记. 一.制作u-boot.bin文件: tar xjf u-boot-1.1.6.tar.bz2 cd u-boot-1.1.6 patch -p1 < ...

  5. 从0开始在ubuntu18.04上搭建嵌入式Linux开发环境以及嵌入式Qt5.6开发环境

    博客中提到的一些工具文件都可以在该链接中下载:https://pan.baidu.com/s/10r4kku8C0bt8vLampOyvWQ 目录 一  Oflash软件通过openJtag下载u-b ...

  6. Linux开发(1):搭建嵌入式Linux开发环境

    在讲述详细的开发环境搭建之前,先大概讲讲本文介绍了哪些内容 首先,我们是在Windows下通过VMware运行虚拟机Ubuntu来运行主机端的Linux,然后再通过串口线连接电脑和Linux开发板 那 ...

  7. linux 编译c q64,Ubuntu 12.04 LTS 64位搭建Qt4终端编译环境

    在Ubuntu 12.04下采用apt-get的方法安装Qt4. First: sudo apt-get install libqt4-dev libqt4-dbg libqt4-gui libqt4 ...

  8. 嵌入式linux开发环境搭建(VMware16.0.0+Ubuntu16.04.3_X64)

    目录 一.安装VMware 1.VMware介绍 2.安装VMware16.0.0 二.安装ubuntu16.04.3 LTS 1.Ubuntu介绍 2.下载安装包iso 3.安装 四.新安装Ubun ...

  9. 嵌入式Linux开发环境搭建-曹国辉-专题视频课程

    嵌入式Linux开发环境搭建-1199人已学习 课程介绍         系统讲解嵌入式Linux开发环境搭建方法,包括虚拟机安装,ubuntu安装,交叉编译器安装及配置,嵌入式QT开发环境的构建,u ...

最新文章

  1. Notepad++写Verilog HDL代码时,在注释语句下出现红色波浪线怎么办?
  2. gnome3增加自定义程序快捷方式
  3. Python中文件读写之 w+ 与 r+ 到底有啥区别?
  4. 中年女子颈肩手肿痛案
  5. React Fiber源码逐个击破系列-scheduler
  6. 您的屁股发热严重,请降温后使用。
  7. Vue DevTools可使用修正方法
  8. linux C之access函数
  9. 伍德里奇计量经济学导论第6版笔记和课后习题答案
  10. php 万能表,手把手教你,如何使用数字万用表!
  11. TJUPT 无法与服务器建立连接问题的解决方法
  12. Unity 视频播放器插件 AVPro Video -- 360全景视频播放+暴风魔镜sdk
  13. 300多条MTK工作笔记为你的工作节省一半时间
  14. MacBook Touch Bar(触控栏)无法正常工作的解决方法
  15. S3C2440 由ADS移植到 RealView MDK kile4
  16. 多人扑克游戏:99分游戏规则介绍
  17. 程序设计训练课程设计
  18. Android 跳转电话、邮件、短信等系统页面
  19. 【spark】一文(10分钟)入门spark
  20. avr单片机流水灯程序c语言,AVR单片机学习C语言的流水灯验证

热门文章

  1. EDA 电子设计自动化VHDL系列课程7 – 分频器和计数器
  2. Unity学习——音效系统+音频过滤器+音频混响区+音频管理器
  3. 简单【DOS】基础命令
  4. CI框架获取控制器名和方法名
  5. 抢拍php并发处理,【活动预告】积分“大米”抢拍新一轮又要开始啦!
  6. java实时推送goeasy_java实时推送消息goeasy实现
  7. HANA+帆软:“帕累托“累计占比图的实现
  8. Java进阶01-语法-徐磊
  9. 阿里云对象存储-图片存储
  10. 峰岹科技通过注册:年营收超3亿 实控人毕磊兄弟为外籍