仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 874|回复: 14
打印 上一主题 下一主题

[其他Linux] linux教程之Linux移植u-boot时补钉的制造

[复制链接]
飘飘悠悠 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 11:34:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
尽我能力帮助他人,在帮助他人的同时你会深刻巩固知识。
<divclass="start">由于在u-boot移植过程当中,有几处通用文件要修正,假如每次都要手动修正就太贫苦了。制造补钉能够办理这个成绩。
  进修材料的搜集对照复杂,办法一相似于这类低级成绩网上材料十分丰厚,google大概baidu搜刮一下,然后选择有代价的材料,办法二是浏览man在线文档。完成搜集事情,固然终极要在本人的Linux上作实行,对照总结,消化吸取为本人的器材。要撤除这么一种毛病头脑:必定要学全。要晓得,一次学满是不成能的,只能先进修最为经常使用的,在今后不休理论的过程当中慢慢的丰厚,终极到达对照高的程度。掌控的准绳是:日有所学,学乃至用,用以促学。
  起首先容一下diff和patch。在这里不会把man在线文档上一切的选项都先容一下,那样也没有需要。在99%的工夫里,我们只会用到几个选项。以是必需学会这几个选项。
  1、diff
  --------------------
  NAME
  diff-finddifferencesbetweentwofiles
  SYNOPSIS
  diff[options]from-fileto-file
  --------------------
  复杂的说,diff的功效就是用来对照两个文件的分歧,然跋文录上去,也就是所谓的diff补钉。语法格局:diff【选项】源文件(夹)目标文件(夹),就是要给源文件(夹)打个补钉,使之酿成目标文件(夹),术语也就是“晋级”。上面先容三个最为经常使用选项:
  -r是一个递回选项,设置了这个选项,diff会将两个分歧版根源代码目次中的一切对应文件全体都举行一次对照,包含子目次文件。
  -N选项确保补钉文件将准确地处置已创立或删除文件的情形。
  -u选项以一致格局创立补钉文件,这类格局比缺省格局更松散些。
  2、patch
  ------------------
  NAME
  patch-applyadifffiletoanoriginal
  SYNOPSIS
  patch[options][originalfile[patchfile]]
  butusuallyjust
  patch-pnum<patchfile>
  ------------------
  复杂的说,patch就是使用diff制造的补钉来完成源文件(夹)和目标文件(夹)的转换。如许说就意味着你能够有源文件(夹)DD>目标文件(夹),也能够目标文件(夹)DD>源文件(夹)。上面先容几个最经常使用选项:
  -p0选项要从以后目次查找目标文件(夹)
  -p1选项要疏忽失落第一层目次,从以后目次入手下手查找。
  ************************************************************
  在这里以实例申明:
  ---old/modules/pcitableMonSep2711:03:561999
  +++new/modules/pcitableTueDec1920:05:412000
  假如利用参数-p0,那就暗示从以后目次找一个叫做old的文件夹,在它上面寻觅modules下的pcitable文件来实行patch操纵。
  假如利用参数-p1,那就暗示疏忽第一层目次(即不论old),从以后目次寻觅modules的文件夹,在它上面找pcitable。如许的条件是以后目次必需为modules地点的目次。而diff补钉文件则能够在恣意地位,只需指了然diff补钉文件的路径就能够了。固然,能够用绝对路径,也能够用相对路径。不外我一样平常习气用绝对路径。
  ************************************************************
  -E选项申明假如发明了空文件,那末就删除它
  -R选项申明在补钉文件中的“新”文件和“旧”文件如今要互换过去了(实践上就是给新版本打补钉,让它酿成老版本)
  上面分离详细实例来剖析息争决,分为两品种型:为单个文件打补钉和为文件夹内的多个文件打补钉。
  情况:在RedHat9.0上面以armlinux用户上岸。
  目次树以下:
  |--bootloader
  |--debug
  |--images
  |--kernel
  |--program
  |--rootfiles
  |--software
  |--source
  |--sysapps
  |--tmp
  `--tools
  上面在program文件夹上面创建patch文件夹作为实行用,然落后进patch文件夹。
  1、为单个文件举行补钉操纵
  1、创建测试文件test0、test1
  [armlinux@lqmpatch]$cat>>test0<<EOF
  >111111
  >111111
  >111111
  >EOF
  [armlinux@lqmpatch]$moretest0
  111111
  111111
  111111
  [armlinux@lqmpatch]$cat>>test1<<EOF
  >222222
  >111111
  >222222
  >111111
  >EOF
  [armlinux@lqmpatch]$moretest1
飘飘悠悠 该用户已被删除
沙发
 楼主| 发表于 2015-1-16 12:38:23 | 只看该作者

linux教程之Linux移植u-boot时补钉的制造

尽我能力帮助他人,在帮助他人的同时你会深刻巩固知识。
<divclass="start">>  222222</P>  111111
  222222
  111111
  2、利用diff创立补钉test1.patch
  [armlinux@lqmpatch]$diff-uNtest0test1>test1.patch
  【注:由于单个文件,以是不必要-r选项。选项按次没有干系,便可所以-uN,也能够是-Nu。】
  [armlinux@lqmpatch]$ls
  test0test1test1.patch
  [armlinux@lqmpatch]$moretest1.patch
  ************************************************************
  patch文件的布局
  补钉头
  补钉头是分离由---/+++开首的两行,用来暗示要打补钉的文件。---开首暗示旧文件,+++开首暗示新文件。
  一个补钉文件中的多个补钉
  一个补钉文件中大概包括以---/+++开首的良多节,每节用来打一个补钉。以是在一个补钉文件中能够包括很多多少个补钉。
  块
  块是补钉中要修正的中央。它一般由一部分不必修正的器材入手下手和停止。他们只是用来暗示要修正的地位。他们一般以@@入手下手,停止于另外一个块的入手下手大概一个新的补钉头。
  块的缩进
  块会缩进一列,而这一列是用来暗示这一行是要增添仍是要删除的。
  块的第一列
  +号暗示这一行是要加上的。
  -号暗示这一行是要删除的。
  没有加号也没有减号暗示这里只是援用的而不必要修正。
  ************************************************************
  ***diff命令会在补钉文件中纪录这两个文件的初次创立工夫,以下***
  ---test02006-08-1809:12:01.000000000+0800
  +++test12006-08-1809:13:09.000000000+0800
  @@-1,3+1,4@@
  +222222
  111111
  -111111
  +222222
  111111
  [armlinux@lqmpatch]$patch-p0<test1.patch
  patchingfiletest0
  [armlinux@lqmpatch]$ls
  test0test1test1.patch
  [armlinux@lqmpatch]$cattest0
  222222
  111111
  222222
  111111
  3、能够往除补钉,恢复古版本
  [armlinux@lqmpatch]$patch-RE-p0<test1.patch
  patchingfiletest0
  [armlinux@lqmpatch]$ls
  test0test1test1.patch
  [armlinux@lqmpatch]$cattest0
  111111
  111111
  111111
  2、为多个文件举行补钉操纵
  1、创立测试文件夹
  [armlinux@lqmpatch]$mkdirprj0
  [armlinux@lqmpatch]$cptest0prj0
  [armlinux@lqmpatch]$ls
  prj0test0test1test1.patch
  [armlinux@lqmpatch]$cdprj0/
  [armlinux@lqmprj0]$ls
  test0
  [armlinux@lqmprj0]$cat>>prj0name<<EOF
  >--------
  >prj0/prj0name
  >--------
  >EOF
  [armlinux@lqmprj0]$ls
  prj0nametest0
  [armlinux@lqmprj0]$catprj0name
  --------
  prj0/prj0name
  --------
  [armlinux@lqmprj0]$cd..
  [armlinux@lqmpatch]$mkdirprj1
  [armlinux@lqmpatch]$cptest1prj1
  [armlinux@lqmpatch]$cdprj1
  [armlinux@lqmprj1]$cat>>prj1name<<EOF
  >---------
  >prj1/prj1name
  >---------
  >EOF
  [armlinux@lqmprj1]$catprj1name
  ---------
  prj1/prj1name
  ---------
  [armlinux@lqmprj1]$cd..
  2、创立补钉
飘飘悠悠 该用户已被删除
板凳
 楼主| 发表于 2015-1-16 12:52:24 | 只看该作者

linux教程之Linux移植u-boot时补钉的制造

如果你想在以后的生涯中在软件行业工作的话,学习linux是一项基本技能,所以打从你打算学习linux那天起,放弃windows吧!因为它除了能给你带来片刻的娱乐,别无其他;
>  [armlinux@lqmpatch]$diff-uNrprj0prj1>prj1.patch</P>  [armlinux@lqmpatch]$moreprj1.patch
  diff-uNrprj0/prj0nameprj1/prj0name
  ---prj0/prj0name2006-08-1809:25:11.000000000+0800
  +++prj1/prj0name1970-01-0108:00:00.000000000+0800
  @@-1,3+0,0@@
  ---------
  -prj0/prj0name
  ---------
  diff-uNrprj0/prj1nameprj1/prj1name
  ---prj0/prj1name1970-01-0108:00:00.000000000+0800
  +++prj1/prj1name2006-08-1809:26:36.000000000+0800
  @@-0,0+1,3@@
  +---------
  +prj1/prj1name
  +---------
  diff-uNrprj0/test0prj1/test0
  ---prj0/test02006-08-1809:23:53.000000000+0800
  +++prj1/test01970-01-0108:00:00.000000000+0800
  @@-1,3+0,0@@
  -111111
  -111111
  -111111
  diff-uNrprj0/test1prj1/test1
  ---prj0/test11970-01-0108:00:00.000000000+0800
  +++prj1/test12006-08-1809:26:00.000000000+0800
  @@-0,0+1,4@@
  +222222
  +111111
  +222222
  +111111
  [armlinux@lqmpatch]$ls
  prj0prj1prj1.patchtest0test1test1.patch
  [armlinux@lqmpatch]$cpprj1.patch./prj0
  [armlinux@lqmpatch]$cdprj0
  [armlinux@lqmprj0]$patch-p1<prj1.patch
  patchingfileprj0name
  patchingfileprj1name
  patchingfiletest0
  patchingfiletest1
  [armlinux@lqmprj0]$ls
  prj1nameprj1.patchtest1
  [armlinux@lqmprj0]$patch-R-p1<prj1.patch
  patchingfileprj0name
  patchingfileprj1name
  patchingfiletest0
  patchingfiletest1
  [armlinux@lqmprj0]$ls
  prj0nameprj1.patchtest0
  -------------------
  总结一下:
  单个文件
  diffCuNfrom-fileto-file>to-file.patch
  patchCp0<to-file.patch
  patchCRECp0<to-file.patch
  多个文件
  diffCuNrfrom-docuto-docu>to-docu.patch
  patchCp1<to-docu.patch
  patchCRCp1<to-docu.patch
  -------------------
  3、使用
  为内核打补钉。后面在创立交织编译工具链时,个中有一步就是为内核打补钉。事先还不是出格懂得,如今很明晰了。参考后面的文章《基于arm+Linux嵌进式开辟的开辟工具链的创建》。
  1、起首是解压,由于公布的补钉文件都是利用gzip紧缩的。
  $gunzip../setup-dir/patch-2.4.21-rmk1.gz
  2、然落后进你的内核源代码目次
  $cdlinux-2.4.21
  3、打补钉
  $patchCp1<../../setup-dir/patch-2.4.21-rmk1
  打完补钉后,必要反省一下有无回绝实行的文件,即反省.rej文件的存在。利用命令:
  $find.-name*.rej
  假如发明,会将其输入到尺度输入终端,默许屏幕。固然,你也能够接纳重定向,输入到指定文件,好比reject。
  $fine
上一页1234下一页


每一个开发团队都对他的发行版做过测试后放出的.那些国际知名的大品牌更是如此。
飘飘悠悠 该用户已被删除
地板
 楼主| 发表于 2015-1-16 13:02:58 | 只看该作者

linux教程之Linux移植u-boot时补钉的制造

使用gcc或g++进行编译,使用gdb进行调试;
.-name*.rej>reject</P>  然后能够检察reject的内容了

</p>
上一页1234


只要了解了Linux的基础之后,应该就可以很轻易的解决掉这方面的问题。而有些朋友们常常一接触Linux就是希望构架网站,根本没有想到要先了解一下Linux的基础。这是相当困难的。
兰色精灵 该用户已被删除
5#
发表于 2015-1-18 16:16:49 | 只看该作者
通过自学老师给的资料和向同学请教,掌握了一些基本的操作,比如挂载优盘,编译程序,在Linux环境下运行,转换目录等等。学了这些基础才能进行下面的模拟OS程序。?
只想知道 该用户已被删除
6#
发表于 2015-1-27 11:10:39 | 只看该作者
任何人都可以根据自己的喜好来定制适合自己的操作系统,Linux?是抢占式多任务多用户操作系统.
活着的死人 该用户已被删除
7#
发表于 2015-2-5 12:56:44 | 只看该作者
说实话小时候没想过搞IT,也计算机了解也只是一些皮毛,至于什么UNIX,Linux,听过没见过,就更别说用过了。?
若相依 该用户已被删除
8#
发表于 2015-2-11 23:09:38 | 只看该作者
随着Linux技术的更加成熟、完善,其应用领域和市场份额继续快速增大。目前,其主要应用领域是服务器系统和嵌入式系统。然而,它的足迹已遍布各个行业,几乎无处不在。
冷月葬花魂 该用户已被删除
9#
发表于 2015-3-2 21:30:08 | 只看该作者
硬盘安装及光盘安装,清楚了解安装Linux应注意的有关问题,如安装Linux应在最后一个分区内,至少分二个分区。
透明 该用户已被删除
10#
发表于 2015-3-11 07:50:26 | 只看该作者
学习Linux系统在服务中的配置方法及使用方法。Linux在服务器中应用相当广,应对常用的apache,samba,ftp等服务器基本配置清楚了解。[重点,应巩固学习]
谁可相欹 该用户已被删除
11#
发表于 2015-3-18 03:41:15 | 只看该作者
众所周知,目前windows操作系统是主流,在以后相当长的时间内不会有太大的改变,其方便友好的图形界面吸引了众多的用户。
老尸 该用户已被删除
12#
发表于 2015-3-25 14:09:08 | 只看该作者
Linux简单,占内存少,特别是对于程序开发人员来说很方便,如果说windows的成功在于其方便用户的窗口管理界面。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 16:54

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表