Chinaunix首页 | 论坛 | 博客
  • 博客访问: 79728
  • 博文数量: 21
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 200
  • 用 户 组: 普通用户
  • 注册时间: 2014-07-03 22:41
文章分类
文章存档

2017年(8)

2014年(13)

我的朋友

分类: 嵌入式

2014-07-10 22:30:56

本文摘自《嵌入式Linux驱动模板精讲与项目实践》一书中的“开发与调试技巧”。

Linux的强大威力就在于有很多开源项目可以使用,通常很多需求可以通过寻找相关的开源模块做为快速解决方案。要把这些开源模块应用到嵌入式中,其中一个关键点就是要使用交叉编译工具对开源项目进行交叉编译。

根据具体情况,下载的开源项目在组织上有很多情况,在此对各种情况进行归类介绍。

1. 下载的开源软件包找不到Makefile

对于这种开源包通常是采用configure的方式组织的,那么第一步就是使用软件包中的configure生成Makefile文件。例如移植module-init-tools-3.2:

CC=arm-linux-gcc ./configure --prefix=/my_depmod --without-gun-ld --host=arm-linux

在./ configure之前指定交叉编译工具,指定安装路径为/my_depmod,后面选项是CPU相关的。各个选项可以通过./configure –help查看。

   第二步,生成Makefile之后,打开Makefile就可以看到:

prefix = /home/xlong.lin/workspace/sample/module-init-tools-3.2/my_depmode

CC = arm-linux-gcc

已经自动生成了对应的交叉编译Makefile。

第三步,Make进行编译。

第四步,make install安装。在指定的安装路径下得到最终需要的目标文件或者是库。

第五步,为了确认,使用file查看所得到的文件是否是嵌入式CPU中可以执行的。

2. 有些源码包下载解压之后有Makefile的,同时里面有CC选项的,这种情况比较简单,只要修改CC等选项即可。

   例如,移植goahead到单板上,解压之后Makefile中修改:

CC = arm-linux-gcc

AR = arm-linux-ar

   然后Make编译即可。

 如果Makefile中有CROSS_COMPILE也同样修改交叉编译工具即可。

3. 有Makefile但是找不到CC或者CROSS_COMPILE的情况。

这种情况采用 make CROSS= arm-linux-进行编译。

以上只对常见情况的交叉编译进行总结,无论哪种情况编译出来的都需要使用file工具确认是否交叉编译成功,是否可以在相应的CPU上执行。善于使用开源软件进行交叉编译移植可以快速的实现很多功能。

阅读(2276) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~