移植开源软件到嵌入式Linux系统技术攻略

虽然嵌入式系统是近几年才风靡起来的,但是这个概念并非新近才出现。从20世纪七十年代单片机的出现到今天各式各样的嵌入式微处理器,微控制器的大规模应用,嵌入式系统已经有了近30年的发展历史。下面是小编整理的移植开源软件到嵌入式Linux系统技术攻略,欢迎大家参考!

一、在PC机Linux上安装合适的交叉编译工具链。

这一步很简单,一般就是将工具链的压缩包解压到某个路径下,就完成了安装。

我们这里假设目标单板是arm处理器,运行Linux系统,

用的工具链是arm-linux-gcc-3.4.1,工具链安装路径是/opt/arm-linux-gcc-3.4.1。

并且,为了使用方便,我们已经将/opt/arm-linux-gcc-3.4.1/bin目录添加到PATH环境变量中了。这样就可以直接使用arm-linux-gcc、arm-linux-ld等命令了。

如果不这样做的话,后面使用/设定编译器时,就得用/opt/arm-linux-gcc-3.4.1/bin/arm-linux-gcc了。

二、开源库的移植

由于有些开源应用程序本身又依赖于一些开源库。因此,我们的移植步骤是,先移植开源库,再移植开源应用程序。不然的话,开源应用程序的编译就会成问题。

因此,这里先介绍开源库的移植。

库的移植,其实就是对工具链自带的库进行了扩充。

例如,假设上述arm工具链的stdio.h文件路径为/opt/arm-linux-gcc-3.4.1/include/stdio.h

那么,我们移植完开源库之后:

/opt/arm-linux-gcc-3.4.1/include/下面就会多出一些头文件。

/opt/arm-linux-gcc-3.4.1/lib/下面就会多出一些.a文件或.so文件。

当然,凡是单板上用到的/opt/arm-linux-gcc-3.4.1/lib/下面的.so文件,不管是工具链自带的,还是我们移植的,都需要拷贝到单板的根文件系统的/usr/lib/目录中。

好了,下面说说具体移植步骤。

假设我们已经获取并解压了开源库的源码包,并且在shell中已经进入了源码包的根目录。接下来的工作,分三步进行。

1. 配置

注意,这是最关键的一步。在这一步中,我们要指定诸如目标单板的操作系统、CPU、工具链等信息。

如何指定这些信息呢,不同的软件可能会有相同。我们如果不熟悉,就需要仔细阅读源码包中附带的诸如README、INSTALL等文件。这些文件会告诉我们,如何指定这些信息。

一般来讲,常见的配置方法,是通过 ./configure 命令进行。当然,有些开源包,可能叫./config或其他名字。这并不重要。

这些configure通常都是很大的shell脚本,应该都是用自动化工具生成的。因此,我们不用费力去读他的内容。

以opensll为例。配置命令为:

./config --prefix=/opt/arm-linux-gcc-3.4.1/ linux-elf:arm-linux-gcc

这就指定了目标类型是linux-elf,工具链是arm-linux-gcc。

安装路径是:/opt/arm-linux-gcc-3.4.1/。注意,这个路径是交叉工具链include目录及lib目录的父目录。因为头文件及编译后的库文件,需要分别安装到include与lib目录中。

当然,在配置命令中,我们还可以指定其他选项,以做进一步的定制。

一般来讲,可以通过 ./configure --help 命令查看所支持的可定制选项。

该命令会输出所支持的各种选项,选项的含义,以及默认是否打开等信息。

当然,对于opensll来说,这里是用./config --help 命令。

如果这一步失败,通常是编译系统依赖的某个工具没找到。这个好办,安装一下就是了。

2. 编译

这就简单了,一般来说,一个make命令搞定

3. 安装

这就简单了,一般来说,一个make install命令搞定

对于本例来说,由于指定了安装路径为:--prefix=/opt/arm-linux-gcc-3.4.1/

因此,头文件(例如,openssl/ssl.h)及编译后的库文件(如libcrypto.a libssl.a),会分别被安装到/opt/arm-linux-gcc-3.4.1/include 与 /opt/arm-linux-gcc-3.4.1/lib目录中。这样一来,就相当于扩充了/opt/arm-linux-gcc-3.4.1自带的库。接下来,就可以编译使用了opensll的开源应用程序了。

三、开源应用程序的移植

假设我们已经获取并解压了开源应用程序的源码包,并且在shell中已经进入了源码包的根目录。接下来的工作,也分三步进行。

1. 配置

和开源库的移植类似。在这一步中,我们要指定诸如目标单板的操作系统、CPU、工具链等信息。

如果不熟悉,同样需要需要仔细阅读源码包中附带的诸如README、INSTALL等文件。这些文件会告诉我们,如何指定这些信息。

以e2fsprogs-1.42.5为例。配置过程如下(可能相对传统一点):

mkdir release

cd release/

../configure --host=arm-linux CC=arm-linux-gcc

当然,我们同样可以带上更多的参数,做更多的`定制。

例如,带上参数 LDFLAGS=-static从而指定静态链接。

如果这一步失败,有两个原因:

a). 编译系统依赖的某个工具没找到。这个好办,安装一下就是了。

b). 开源应用程序的某个功能项所依赖的某个开源库没有找到。

这种问题,有两个解决办法:

一是移植此开源库,按照前面的方法;

二是通过 --disable-funcname关闭此功能项,如果确实用不到该功能项的话。

2. 编译

这就简单了,一般来说,一个make命令搞定

3. 安装

这一步,需要将上述编译出的可执行文件、程序运行需要用到的配置文件、程序运行需要用到的所有动态库文件(无论是工具链自带的库文件,还是我们移植的库文件),都拷贝到单板的根文件系统的相应的目录下就行了。

例如,

库文件拷贝到/usr/lib/目录中。

配置文件拷贝到/etc/下面合适的路径中。

可执行文件拷贝到/bin或/usr/bin等目录中。

这一步,自己写点脚本来完成可能更合适。

因为即使在第1步中,已经指定了安装目录为单板的根文件系统。

make install命令也未必好用,他可能会安装过多的东西(如man手册页等,单板上并不需要),或者某些文件安装的路径未必正确,或者不会安装相应的库文件。

【移植开源软件到嵌入式Linux系统技术攻略】相关文章:

开源嵌入式linux,移植开源软件到嵌入式Linux系统技术攻略相关推荐

  1. win7下安装Linux实现双系统全攻略

    win7下安装Linux实现双系统全攻略 听语音 http://jingyan.baidu.com/article/c275f6bacc3326e33c756743.html 分区http://jin ...

  2. linux开组态软件,基于嵌入式Linux的组态软件实时数据库的设计

    1 引言 实时数据库(real-TIme database, RTDB)作为组态软件设计与实现的核心内容解决了其所 应对的现代工业生产现场环境中生产数据与控制数据类型复杂多样,数据处理与事件调度时 间 ...

  3. linux服务器备份软件下载,五大Linux开源服务器备份软件

    (转载:www.idcew.com) 当世界开始广泛采用你早就知道是优越的东西时,这是令人欣慰的.这是大多数Linux爱好者的感受;在过去的几年里,这个平台变得越来越受欢迎,这意味着越来越多的开源软件 ...

  4. wifi软件linux版本,[转载]Wii安装运行可用WIFI的Linux系统全攻略

    Wii运行Linux的优势: 低功耗,Wii玩3D游戏的平均功耗在18W,而运行linux的功耗更低,连续运行50天才耗一度电(甚至不到).如果用Wii来下电驴.如果给wii-linux装上图形界面来 ...

  5. 输入法 linux安装下载软件,百度输入法linux版下载

    百度输入法Linux版上线了,支持拼音.五笔两种中文输入方式,拼音输入支持全拼.简拼,也支持英文输入模式,还拥有智能纠错.云输入.整句联想等特性,目前支持Ubuntu1804.1810.1904.19 ...

  6. linux富文本软件,CherryTree For Linux

    CherryTree是一款可以在Linux系统上运行的富文本编辑器,该程序功能强大,除了具有富文本和代码高亮的功能之外,同时支持无限层级分类,支持嵌入图片,支持嵌入表格,支持嵌入代码框,以及丰富的导入 ...

  7. linux转码软件下载,格式工厂linux版

    格式工厂linux版介绍 格式工厂linux版是多功能的多媒体格式处理软件,支持几乎所有多媒体格式到各种常用格式,只要装了格式工厂linux版无需再去安装多种转换软件了提供的功能. 格式工厂用处非常广 ...

  8. linux写磁带软件,如何在Linux下安装磁带机

    安装环境: 服务器:LC2. 软件:Red Hat 6.0 (kernel: 2.2.12). 磁带机:DAT8e. 具体步骤:首先将磁带机连接在服务器上,HP的服务器中SCSI卡的类型一般为Adap ...

  9. linux 光驱 安装 软件下载,brasero linux版

    brasero linux版为用户提供了比较独特的功能,此版本仅支持在linux系统上安装使用,用户可以将一些珍贵的音频.视频等文件进行刻录,方便保存留作纪念,而且此软件还可以支持自定义设计更改封面, ...

  10. 优盘linux怎么安装软件,u盘linux系统应该怎么安装?

    天天对着windows桌面,是不是有点厌倦了windows的那张脸?或者你跟笔者一样是个系统控,喜欢体验各种各样的另类操作系统?Linux可是一个十分不错而且丰富的选择种类啊,免费的多多.想不想体验一 ...

最新文章

  1. CIKM2021 知识图谱、推荐系统相关论文
  2. 【机器学习入门笔记0:OpenCV+TensorFlow学习内容(目录)】20190122
  3. .Net IOC框架入门之三 Autofac
  4. Android Relativelayout
  5. 8运行不了_好消息!十堰新建28座充电站,年底投入运行
  6. python帮助文档在哪_python文档之查看帮助文档方法
  7. Bzoj 4371: [IOI2015]sorting排序 二分
  8. C 远程登录linux,远程登录Linux主机进行C编程的操作方法简述.doc
  9. 对HDLC 和PPP实验的总结
  10. 5、提交报告获取服务、状态报告获取服务 -功能详细设计 --短信平台
  11. Linux LittlevGL 使用
  12. phpword 模板替换文字和图片
  13. 中国电信上海电信光猫路由器设置和外接路由器
  14. MSVCRTD.lib重复定义问题
  15. Hantek6022BE 虚拟示波器 (二)方波 采样率 带宽
  16. 博图注册表删除方法_三菱、西门子软件安装常见出错解决方法!(干货)
  17. Chart.js中文文档-雷达图
  18. 小程序springboot食堂预约订餐系统毕业设计-附源码221554
  19. 离散数学---判断矩阵:自反性,反自反性,对称性得到矩阵的自反闭包,对称闭包。
  20. 半路出家的算法学习——快速排序

热门文章

  1. 山东大学往年c语言期末试题及答案,山东大学历年C语言题库.pdf
  2. 妙启动_十张图带你了解中国国产奶酪巨头——妙可蓝多发展情况
  3. ftp协议是一种用于什么的协议_购房协议怎么写?签购房协议要注意什么
  4. LintCode—链表翻转(35)
  5. 张高兴的 Windows 10 IoT 开发笔记:部署 ASP.NET Core 2 应用
  6. ASP.NET MVC4+BootStrap 实战(四)
  7. Markdown - 语法简介
  8. Chuck Norris蠕虫网络袭击Linux路由器
  9. Spring的ioc底层原理和简单实例
  10. 单元覆盖测试排除某些类烧苗_汽车嵌入式软件测试——嵌入式软件测试概述