ltib常用命令详解
$ ./ltib --help ## 这个等同于 ./ltib -h
在编译内核和文件系统时,有时忘了我们选了哪些程序包来进行编译操作,我们可以用下面的命令来查看当前安装模式下所有可用的程序包,是否被选择编译进工程 :
$ ./ltib -m listpkgs ## 此命令是根据ltib的配置来显示
查看配置中已选编译的程序包,如内核版本包,系统工具包:
$ ./ltib -m listpkgs | grep ' y '
如果想看编译过程产生的信息并把这些信息也保存,以备以后查看,可用以下命令
$ ./ltib --preconfig config/platform/mpc8349itx/defconfig-min-fs-our-final --batch 2>&1 | tee ltib_log.txt
## 保存编译过程产生的信息及错误信息全部保存到ltib_log.txt文件中
ltib提供了一种shell模式,它直接提供了我们当前配置的交叉编译工具链模式,下面的命令能让我们进入ltib的shell环境
$ ./ltib -m shell ## 完成后会给出提示,进入shell模式的提示符 'LTIB>'
## 输入exit可退出shell模式
## 下面的命令可以看一下这个有什么用,我直接给出命令,它下面就是这个命令的结果,不再解释
LTIB> gcc --version
powerpc-linux-uclibc-gcc (GCC) 3.4.3
Copyright (C) 2004 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
LTIB>
有时候我们想看一下某些程序包的源码,比如kernel、uboot等这些看了有益于身心健康的程序源码,该怎么办呢? 还有一种情况就是这些源码中存放有板子的各种配置文件,比如内存映射分配,也需要看一下源码文件,其命令格式为 $ ./ltib -m prep -p <program_package_name>
## 下面这部分我是在large文件夹下操作,所写路径也是相对于/usr/local/mpc8349/large/来写的,而不是mytest文件夹下
## 例如我们要查看MPC8349ITX开发板上vsc7385的内存分配,或查找VSC7385的驱动模块部分,需要看uboot、内核源码,以下命令得到内核源码
$ ./ltib -m prep -p kernel
## 解压后的内核源码位于rpm/BUILD/linux-2.6.13/
## 其中vsc7485的驱动是rpm/BUILD/linux-2.6.13/drivers/net/gianfar_phy.c
## 下面操作必须在原来的large文件夹下操作,为什么这么做?自己思考吧。以下命令可以得到uboot源码
$ ./ltib -m prep -p u-boot
## 解压后得到的uboot源码位于rpm/BUILD/u-boot-1.1.3
## 其中有关MPC8349MITX板子配置信息的重要文件为/include/configs/MPC8349ITX.h
## 在上面的这个文件中可用看到VSC7385的内存分配基地址信息(#define CFG_VSC7385_BASE 0xF8000000)
## 不用uboot命令的话,可参看一下源码帮助理解。
## 注:上面这段命令操作我之所以选择在/usr/local/mpc8349/large文件夹下,是因为要得到某些程序源码,首先它得编译过。
上面介绍了一个ltib编译内核和文件系统比较好用的办法,当你比较熟悉了ltib工作流程,完全可以自己配置交叉编译工具链,内核和文件系统,然后编译,可以用下面这个命令行
$ ./ltib --configure
如果想重新产生所有内核和RFS镜像有以下三个办法:
## 办法一: 直接调用配置文件编译,如果配置文件没有更新,且编译过的目标镜像没有变化,会不进行编译。若有任何改动,会执行编译
$ ./ltib --preconfig config/platform/mpc8349itx/defconfig-min-fs-our-final --batch
## 办法二: 如办法一一样,但强制重新编译
$ ./ltib --preconfig config/platform/mpc8349itx/defconfig-min-fs-our-final --batch -f
## 办法三: 清除所有编译的程序包,然后重新配置编译镜像
$ ./ltib -m distclean ## 清除ltib工程文件
$ ./ltib --configure ## 重新配置编译
假如我们对ltib的配置文件不满意,想自己通过配置操作来熟悉ltib的各种配置,或者相关工作做完了,甚至是看它不顺眼,都可以采用此操作,把LTIB完全卸载,
## 首先执行命令:
$ ./ltib -m distclean ## 此操作将彻底清除所有当前ltib工程文件
## 此命令不要轻易使用,除非比较熟悉ltib编译配置过程
## 然后以root身份执行以下操作(注意:此操作将卸载所有的公共文件)
# rm -rf /opt/freescale/pkgs
# rm -rf /opt/freescale/ltib
# rm <install_path> ## 执行文件ltib的上级目录
## 另一种更加暴力的办法是root身份运行rm命令来删除所有
下面再写一下外部内核模块的编译,假如我们有一个文件夹test(位于主目录/home/liuby/下),该文件夹包含程序源码文件test.c和Makefile,这两个文件的内容附在此段内容的最后。
## 首先我们得到内核源码,然后再编译,为什么这么做,我也不懂~~~,有些纳闷,以后再解决
$ ./ltib -m prep -p kernel
$ ./ltib -m scbuild -p kernel ## 编译的镜像为rpm/BUILD/linux/arch/ppc/boot/images/uImage
## 将test文件夹copy到内核的driver文件夹下
$ cp -a ~/test rpm/BUILD/linux/drivers/
## vi修改driver文件夹下的Makefile
$ vi rpm/BUILD/linux/drivers/Makefile
## 可以仿照Makefile里的内容在最后添加如下一行
ojb-m += test/ ## 然后保存退出
## 修改test文件夹下的test.c和Makefile确保其正确无误。
## 下面的命令是进入ltib的shell环境,然后进入到test目录,然后编译
$ ./ltib -m shell
LTIB> cd rpm/BUILD/linux/drivers/test/
LTIB> make V=1 ARCH=ppc
## rpm/BUILD/linux/drivers/test/test.ko就是我们想要的module,下载到板子上用insmod test.ko来执行模块(rmmod test.ko是卸载模块)
++++++++++++++++下面为test.c程序内容++++++++++++++++++
#include <linux/init.h>
#include <linux/module.h>
#include <asm/mpc83xx.h>
MODULE_LICENSE("Dual BSD/GPL");
static int hello_init(void)
{
printk(KERN_ALERT "Hello, world\n");
printk(KERN_ALERT "IMMR virtual address: %X\n", VIRT_IMMRBAR);
printk(KERN_ALERT "IMMRBAR: %08lX\n", *(unsigned long*)(VIRT_IMMRBAR + 0x00000));
printk(KERN_ALERT "SPRIDR : %08lX\n", *(unsigned long*)(VIRT_IMMRBAR + 0x00108));
return 0;
}
static void hello_exit(void)
{
printk(KERN_ALERT "Goodbye, cruel world\n");
}
module_init(hello_init);
module_exit(hello_exit);
++++++++++++++++上面为test.c程序内容++++++++++++++++++
+++++++++++++++下面为Makefile程序内容+++++++++++++++++
ifneq ($(KERNELRELEASE),)
obj-m := test.o
else
KDIR := ../..
PWD := $(shell pwd)
default:
$(MAKE) -C $(KDIR) M=$(PWD)
endif
+++++++++++++++上面为Makefile程序内容+++++++++++++++++
## 类似地我们可以编译vlan配置模块
ltib常用命令详解相关推荐
- docker常用命令详解
docker常用命令详解 本文只记录docker命令在大部分情境下的使用,如果想了解每一个选项的细节,请参考官方文档,这里只作为自己以后的备忘记录下来. 根据自己的理解,总的来说分为以下几种: Doc ...
- Samtools(CentOS Linux)安装及常用命令详解
序列比对(将测序reads与已知序列信息的基因或基因组进行比对)是高通量测序数据分析中最重要的一环,无论是转录组还是重测序都是基于比对结果来进行后续各项分析的,比对结果格式比较常见的是sam和bam文 ...
- router linux命令,router os 常用命令详解
router os 常用命令详解 发布时间:2006-04-20 01:17:30来源:红联作者:[Hl.y] 看了很多router os 的资料都是关于如何安装的,却很少见到关于router os的 ...
- NodeJs学习笔记002--npm常用命令详解
npm 常用命令详解 npm是什么 npm install 安装模块 npm uninstall 卸载模块 npm update 更新模块 npm outdated 检查模块是否已经过时 npm ls ...
- U-Boot的常用命令详解
2019独角兽企业重金招聘Python工程师标准>>> U-Boot的常用命令详解 U-Boot 还提供了更加详细的命令帮助,通过 help 命令还可以查看每个命令的参数说明.由于开 ...
- Linux常用命令详解(两万字超长文)
Linux常用命令详解 作为一枚程序员,熟练掌握一些常见的linux命令是很有必要的,掌握这些命令能帮助我们更好地管理Linux系统,提高工作效率,并有效地解决各种问题,为了方便自己后续查阅以及帮助不 ...
- Linux常用命令详解文库
Linux常用命令详解文库.txt精神失常的疯子不可怕,可怕的是精神正常的疯子!Linux常用命令详解 来源: LUPA开源社区 发布时间: 2007-05-27 05:34 版权申明 字体: ...
- ceph命令系列(一):ceph-deploy/ceph/rados/rbd 常用命令详解
ceph-deploy 常用命令详解 命令 描述 ceph-deploy new [mon-node ...] 指定node(s)为monitor,开始部署一个新的ceph集群,并且在当前目录创建ce ...
- Git 常用命令详解
Git 常用命令详解 1. Git 常用命令 1.1 常用git 命令图表汇总 1.2 配置个人信息 1.3 创建版本库 1.4 常用Git命令汇总 2. Git 解决代码冲突 3. Git 分支管理 ...
最新文章
- 异构GoldenGate 12c 双向复制配置
- python手机版iphone-Python编程神器
- 详细的基于opencv svm hog的描述讲解
- 接口性能优化技巧,干掉慢代码!
- 配置审计(Config)配合开启OSS防盗链功能
- pathon和python_Python文件和目录操作详解
- 微信支付(APP)集成时碰到的问题(.net提示“无权限”、iOS跳转到微信支付页面中间只有一个“确定”按钮)...
- Vue还有这种骚操作?浅析几个新手常常忽略的API
- 【Python开发】Python中的class继承
- 生产者消费者模型、信号量、线程池以及单例模式的实现
- OpenShift 4 之集群是如何通过Cluster Version Operator升级的?
- 排序算法--归并排序
- utuntu 12.04 安装 配置 JAVA JDK
- dnsmasq, ipset和iptables配置
- BUUCTF[强网杯 2019]随便注 的三种解法
- html添加好友,人人网怎么加好友 人人网怎么通过数字ID加好友
- 读书之《别做正常的傻瓜》
- BugkuCTF-WEB-flag在index里
- 教你这么理解 『假脱机打印机系统』
- ibm服务器面板显示,IBM System x服务器前面板指示灯说明(新版)
热门文章
- 小程序管理新闻资讯分类-微信小程序视频教程27
- HTML+CSS网页设计期末课程大作——体育排球(5页面)
- 30个最常见oCPC问题
- python中return返回值怎么累加_Python学习笔记函数之返回值和return语句
- 阿里云服务器地域暂时无法办理经营性ICP许可证什么意思?
- 再谈 iOS App Crash 防护
- 需要精读3遍的8个健身知识
- python中trun是什么意思_Python 中 'unicodeescape' codec can't decode bytes in position XXX: trun錯誤解決方案...
- 手机投影到电脑上做演示
- Android传感器之光线传感器介绍