当前位置:网站首页>编译丨迅为iTOP4412开发板Makefile编译
编译丨迅为iTOP4412开发板Makefile编译
2022-06-30 15:48:00 【mucheni】
在前面入门视频第十期 “搭建编译环境 uboot_linux_Android” 中,只介绍了输入 Make 命令就可以编译出内核,并没有介绍它是如何运行的。在向内核中添加驱动的时候要完成 3 项工作,包括:
1)在 Kconfig 中添加新代码对应项目的编译条件,这一部分在实验 3 已经介绍过;
2)将驱动源码添加到对应的目录中,这一步比较好理解,在本章实验中将给大家演示一下;
3)在目录 Makefile 中文件中增加针对新代码的编译条目,这一部分将在本章节介绍到。视频资源:
本节配套视频为 “视频 04_Makefile 编译”
1 编译器路径的设置
在前面入门知识中,只介绍了在什么目录解压编译器,在环境变量文件中添加路径,就可以编译出内核,并没有介绍他们之间是如何对应的。
如下图所示,按照前面提供的基础教程,配置好 Ubuntu 中的编译器和库文件,输入命令 “make”,就可以编译生成内核的二进制镜像。

如下图所示,使用命令 “#cd”,使用命令 “#vim .bashrc” 打开环境变量文件 “.bashrc”。

如下图所示,进入最底行,可以看到,在环境变量文件中编译器路径设置为
export PATH=$PATH:/usr/local/arm/arm-2009q3/bin

然后使用命令 “#cd /usr/local/arm/”,进入解压编译器 “arm-2009q3.tar.bz2” 的文件目录

可以明显的看到,环境变量中设置的路径和解压的路径是对应的。这里回到内核源码的目录,如下图所示。

如下图所示,使用命令 “vim Makefile” 打开内核目录下的 Makefile 文件。

这里通过 vim 编辑器查找参数 “CROSS_COMPILE”,如下图所示。

可以查到参数 “CROSS_COMPILE”,如下图所示。

再看一下参数 “CROSS_COMPILE” 的下一行,可以看出这里有修改过的痕迹。很容易推断出,原来三星是用的 “4.5.1” 版本的编译器,不过这个没关系,只要能编译通过就可以了。
一般说来,拿到源码之后的第一步,是要先要先将源码编译通过。设置上图中的变量 “CROSS_COMPILE” 以及环境变量还有编译器实际解压路径三者对应。这三者对应之后,就能确保执行 Make 命令之后,系统能够找到这个编译器。
在编译命令执行的过程中,会提示一些错误,然后根据提示的错误,挨个去排查修改,去添加库文件或者修改库文件。这个过程有长有短,考验的只是耐心,并没有太多技巧。由于已经将缺少的库文件写成脚本,这样大家在编译器执行以下脚本就能够编译通过。
针对内核目录下的 Makefile 文件,提醒大家一下,这个文件中内容很多,除了上面编译器路径变量以外的其它部分几乎不用关注。
另外还有一个地方需要了解一下,如下图所示,在该文件的第一行,可以看到内核的版本。

边栏推荐
- TCP socket and TCP connection
- The new tea drinks are "dead and alive", but the suppliers are "full of pots and bowls"?
- jspreadsheet/CE JExcel数据字段比给的字段(columns)多会导致空白列的问题解决方案
- Lambda表达式_Stream流_File类
- Anaconda下安装Jupyter notebook
- List announced - outstanding intellectual property service team in China in 2021
- 删除有序数组中的重复项 II[双指针--多情况统一]
- Tutoriel etcd - chapitre 8 API compacte, Watch et lease pour etcd
- register_ Chrdev and CDEV_ init cdev_ Add usage differences
- Implementation of aut, a self-developed transport layer protocol for sound network -- dev for dev column
猜你喜欢

【Verilog基础】关于Clock信号的一些概念总结(clock setup/hold、clock tree、clock skew、clock latency、clock transition..)

I implement "stack" with C I

【微信小程序】小程序的宿主环境

Tencent two sides: @bean and @component are used on the same class. What happens?

The 25th anniversary of Hong Kong's return to China the Hong Kong Palace Museum officially opened as a new cultural landmark

OpenCV中LineTypes各枚举值(LINE_4 、LINE_8 、LINE_AA )的含义

Mathematical modeling for war preparation 33- grey prediction model 2

中国传奇教授李泽湘,正在批量制造独角兽

List announced - outstanding intellectual property service team in China in 2021

【机器学习】K-means聚类分析
随机推荐
Etcd教程 — 第八章 Etcd之Compact、Watch和Lease API
巩固入门-C#基础变量和常量
Home office discussion on the experience of remote assistance to quickly improve efficiency | community essay solicitation
招标公告:深圳市财政局数据库异地灾备项目
聊聊远程办公那些事儿 | 社区征文
Tencent two sides: @bean and @component are used on the same class. What happens?
2022蓝桥杯国赛B组-2022-(01背包求方案数)
附加:(还没写,别看~~~)CorsFilter过滤器;
php7.3 centos7.9安装sqlserver扩展
Go micro tutorial - Chapter 1 getting started
Cesium-1.72 learning (add points, lines, cubes, etc.)
Dart: string replace related methods to solve replacement characters
CMakeLists 基础
Mathematical modeling for war preparation 35 time series prediction model
腾讯二面:@Bean 与 @Component 用在同一个类上,会怎么样?
restartProcessIfVisible的流程
Cmakelists Basics
List announced - outstanding intellectual property service team in China in 2021
【微信小程序】常用组件基本使用(view/scroll-view/swiper、text/rich-text、button/image)
GaussDB创新特性解读:Partial Result Cache,通过缓存中间结果对算子进行加速