嵌入式Linux系统项目工程管理

上传人:w****2 文档编号:24083720 上传时间:2021-06-21 格式:PPT 页数:51 大小:730.50KB
收藏 版权申诉 举报 下载
嵌入式Linux系统项目工程管理_第1页
第1页 / 共51页
嵌入式Linux系统项目工程管理_第2页
第2页 / 共51页
嵌入式Linux系统项目工程管理_第3页
第3页 / 共51页
资源描述:

《嵌入式Linux系统项目工程管理》由会员分享,可在线阅读,更多相关《嵌入式Linux系统项目工程管理(51页珍藏版)》请在装配图网上搜索。

1、嵌入式Linux系统项目工程管理 课程安排n Linux项 目 工 程 管 理 的 概 念n 项 目 工 程 管 理 文 件 Makefilen Autotool自 动 生 成 Makefilen Linux开 源 项 目 嵌 入 式 移 植 软 件 工 程 维 护 问 题一 个 软 件 项 目 通 常 包 含 多 个 源 码 文 件 , 每 个 源 代 码 的 编 译 和 链 接 都 要 书 写大 量 的 命 令 。在 一 项 目 里 , 代 码 通 常 都 有 引 用 关 系 , 因 此 需 要 指 定 谁 先 编 译 , 谁 后 编 译 ,甚 至 是 更 复 杂 的 功 能 操 作 。重

2、 复 编 译 时 我 们 希 望 只 对 修 改 过 的 文 件 执 行 编 译 链 接 , 加 快 编 译 速 度 。 通 过 自 动 换 编 译 脚 本 维 护1、 将 每 个 源 文 件 需 要 用 到 的 编 译 、 链 接 命 令 写 到 shell脚 本2、 安 装 代 码 的 引 用 关 系 , 仔 细 安 排 编 译 、 链 接 命 令 的 先 后 顺 序3、 对 于 任 何 源 码 修 改 , 重 新 执 行 编 译 脚 本 , 对 整 个 工 程 重 新 编 译 shell编 译 脚 本 实 例1、 工 程 结 构 :2、 引 用 关 系 : myclass.c mycla

3、ss.c引 用 student1.c、 student2.c的 接 口 函 数 显 示 班 级 中 每 个 学 生 shell编 译 脚 本 实 例3、 编 译 脚 本 :build.sh 4、 执 行 过 程 : 每 执 行 一 次 build.sh, 必 须 对 整 个 工 程 的 所 有 文 件 重 新 编 译 、 链 接 一 次 。5、 存 在 问 题 :如 果 工 程 有 成 千 上 万 个 文 件 , 只 改 了 其 中 的 某 个 或 者 几 个 文 件 就 让 所 有 文 件 重 新 编 译 的 时 间 开 销 是 不 可 接 受 的 , 我 们 只 需 要 对 改 动 过 的

4、 文 件 重 新 编 译 、重 新 链 接 成 可 执 行 文 件 即 可 课程安排n Linux项 目 工 程 管 理 的 概 念n 项 目 工 程 管 理 文 件 Makefilen Autotool自 动 生 成 Makefilen Linux开 源 项 目 嵌 入 式 移 植 Makefile应 运 而 生Makefile 就 为 解 决 上 述 一 系 统 问 题 而 创 造 的 , 可 以 把 Makefile 理 解 成 是一 种 由 make 程 序 进 行 解 释 的 一 种 特 殊 脚 本 。make是 一 个 自 动 编 译 管 理 器 , 它 能 够 根 据 文 件 时

5、 间 戳 自 动 发 现 更 新 过 的 文件 而 减 少 编 译 工 作 量 , 同 时 , 它 能 读 入 Makefile的 内 容 来 执 行 大 量 的 编 译工 作用 户 只 需 要 一 次 性 地 将 编 译 命 令 写 进 Makefile就 可 以 永 久 性 地 使 用 make工程 管 理 器 完 成 编 译 , 大 大 提 高 实 际 项 目 的 工 作 效 率几 乎 所 有 Linux下 的 项 目 编 程 都 会 涉 及 make工 程 管 理 , 对 我 们 十 分 重 要 。 Makefile实 例1、 Makefile文 件 Makefile实 例2、 执 行

6、 编 译 : make/make all3、 注 意 : Makefile文 件 本 身 不 需 要 可 执 行 权 限 , 它 是 被 make命 令 执 行 的4、 Makefile可 以 增 加 一 些 有 效 的 维 护 目 标 如 : make clean:删 除 编 译 过 程 文 件 Makefile/Shell脚 本 比 较 都 是 文 本 文 件 格 式 的 脚 本 ; 都 可 以 执 行 Shell命 令 ; 都 可 以 定 义 变 量 ,和 条 件 控 制 语 句 。 (使 用 格 式 上 有 差 别 )相 同 点 : 解 释 器 不 同 : Shell脚 本 是 由 对

7、 应 Shell程 序 解 释 ; 而 Makefile是 由 make程 序 解 释 格 式 不 一 样 : Shell脚 本 以 命 令 行 为 基 本 单 位 , 而 Makefile以 规 则 为 基 本 单 位 Shell脚 本 只 要 有 执 行 权 限 即 可 直 接 执 行 , Makefile必 须 要 用 make来 调 用 才 行 ,本 身 不 需 执 行 权 限不 同 点 : Makefile的 优 势在 开 发 领 域 ,Makefile还 是 有 相 当 优 势 :1、 Makefile具 有 自 动 推 导 , 判 断 源 码 依 赖 关 系 的 功 能2、 Ma

8、kefile有 可 以 使 用 隐 含 规 则 来 简 化 makefile的 编 写 3、 当 然 , Makefile使 得 大 工 程 编 译 维 护 变 得 更 快 ! Makefile基 本 结 构 需 要 由 make工 具 创 建 的 项 目 , 通 常 是 目 标 文 件 和 可 执 行 文 件 通 常 使 用 “ 目 标 ( target) ” 一 词 来 表 示 要 创 建 的 项 目 要 创 建 的 目 标 依 赖 于 哪 些 文 件 创 建 每 个 目 标 时 需 要 运 行 的 命 令 ,每 个 命 令 之 前 必 须 有 tab打 头 通 常 都 包 含 一 些 固

9、 定 的 伪 目 标 : 如 all、 install、 clean用 作 缺 省 编 译 ,安 装 和 清 除 文 件 #打 头 表 示 注 释 行makefile 中 一 般 包 含 如 下 内 容 : Makefile的 规 则1、 一 个 Makefile 可 以 看 作 是 一 系 列 规 则 的 组 合 , 规 则 是 make进 行 处 理 的 依 据2、 规 则 的 组 成 :( 1) 、 需 要 由 make工 具 创 建 的 目 标 体 (target), 通 常 是 可 执 行 文 件 或 目 标 文件 ;( 2) 、 要 创 建 的 目 标 所 依 赖 的 文 件 (d

10、ependency_files), 通 常 是 源 文 件 、 头文 件 或 者 其 他 目 标 文 件 ;( 3) 、 创 建 每 个 目 标 体 时 需 要 运 行 的 命 令 (command), 可 以 是 一 行 或 多 行Shell命 令 。 目 标 名 称 : 依 赖 对 象 命 令 1 命 令 2 Make调 用 方 法 make 默 认 执 行 当 前 目 录 下 Makefile文 件 的 第 1个 规 则 make可 以 通 用 在 命 令 行 直 接 写 target名 称 , 用 于 一 个 或 多 个 target进 行 编 译make target1 target

11、2make allmake cleanmake installmake uninstall Makefile的 简 化一 个 软 件 的 构 造 过 程 中 , 很 多 步 骤 是 固 定 的 , 因 此 很 多 时 候 可 以 简 化 处 理 ,这 是 Makefile最 大 优 势在 复 杂 项 目 里 , 为 了 简 化 Makefile的 书 写 , 往 往 会 采 用 扩 展 写 法 , 这 些 方法 包 括 变 量 内 置 规 则 自 定 义 变 量1、 递 归 展 开 方 式 定 义VAR = value递 归 展 开 方 式 定 义 的 变 量 是 在 变 量 引 用 时 进

12、行 替 换 的 。 这 种 方 式 在 处 理 形如 CFLAGS = $(CFLAGS) -g的 变 量 时 可 能 导 致 无 穷 循 环 , 最 终 导 致 溢 出 。2、 简 单 扩 展 方 式 定 义VAR := value 简 单 扩 展 方 式 变 量 的 值 在 定 义 展 开 , 并 且 只 展 开 一 次 消 除 了 上 面 无 穷 循 环的 问 题 。 预 定 义 变 量1、 Make工 程 管 理 器 维 护 了 一 些 预 定 义 变 量 , 可 以 在 Makefile中 直 接 使 用( 1) CC C 编 译 器 的 名 称 , 默 认 值 为 cc。( 2)

13、CFLAGS C 编 译 器 的 选 项 , 无 默 认 值 。( 3) LDFLAGS C 链 接 器 的 选 项 ,无 默 认 值 。 如 :使 用 数 学 函 数 库 LDFLAGS = -lm( 4) RM 文 件 删 除 程 序 名 称 ,默 认 值 为 rm f( 5) AR 归 档 维 护 程 序 的 名 称 , 默 认 值 为 ar。( 6) ARFLAGS 归 档 维 护 程 序 的 选 项 , 无 默 认 值 。( 7) CXX C+ 编 译 器 的 名 称 , 默 认 值 为 g+。( 8) CXXFLAGS C+ 编 译 器 的 选 项 。 2、 在 Makefile内

14、 可 以 使 用 自 定 义 变 量 来 覆 盖 预 定 义 变 量如 : ARFLAGS = crvs CC = gcc 自 定 义 与 预 定 义 变 量 示 例 自 动 变 量 对 每 一 条 Makefile规 则 ,Make维 护 了 一 些 自 动 变 量 。$ 第 一 个 依 赖 文 件 的 名 称 。$ 目 标 的 完 整 名 称 。$ 所 有 的 依 赖 文 件 , 以 空 格 分 开 , 不 包 含 重 复 的 依 赖 文 件 。$* 不 包 含 扩 展 名 的 目 标 文 件 名 称 。$+ 所 有 的 依 赖 文 件 , 以 空 格 分 开 , 并 以 出 现 的 先

15、后 为 序 , 可 能 包 含 重 复 的 依 赖 文 件 。$? 所 有 的 依 赖 文 件 , 以 空 格 分 开 , 这 些 依 赖 文 件 的 修 改 日 期 比 目 标 的 创 建 日 期 晚 。$% 如 果 目 标 是 归 档 成 员 , 则 该 变 量 表 示 目 标 的 归 档 成 员 名 称 自 动 变 量 示 例 内 置 规 则 用 GCC编 译 一 个 程 序 的 步 骤 都 是 固 定 的 , GNU make 会 内 置 有 一 些 规 则 。 来简 化 这 一 些 固 定 步 骤1、 隐 式 规 则( 1) 隐 式 规 则 告 诉 make怎 样 使 用 传 统 技

16、 术 完 成 任 务 , 不 必 在 Makefile中 指定 编 译 的 具 体 细 节 , 而 只 需 要 把 目 标 文 件 列 出 来 即 可( 2) make自 动 使 用 隐 式 规 则 来 确 定 如 何 生 成 目 标 文 件( 3) 最 重 要 的 隐 式 规 则 : 所 有 的 “ file.o” 文 件 都 可 以 自 动 由 file.c文件 使 用 命 令 $(CC) $(CFLAGS) -c file.c -o file.o生 成 . 隐 式 规 则 示 例 内 置 规 则 2、 模 式 规 则( 1) 有 时 候 多 个 文 件 具 有 相 同 的 处 理 规 则

17、 , 这 时 候 就 要 自 定 义 模 式 规 则 ,即 相 同 模 式 的 目 标 共 用 的 规 则( 2) 所 有 的 .o文 件 依 赖 于 对 应 的 .c文 件 的 模 式 规 则%.o: %.c$(CC) $(CFLAGS) -c $arm-linux-gcc ar - arm-linux-ar strip - arm-linux-strip 大 部 分 项 目 的 Makefile可 以 简 单 换 掉 变 量 CC、 AR、 STRIP等 就可 实 现 移 植 简 单 项 目 移 植 Makefile移 植 示 例 简 单 项 目 移 植 Configure开 源 项 目

18、移 植 复 杂 项 目 的 移 植 主 要 是 指 autoconf工 具 生 成 configure配 置 脚 本的 项 目 , 绝 大 部 分 开 源 项 目 用 这 样 形 式 发 布 这 些 项 目 的 Makefile需 要 通 过 执 行 configure配 置 脚 本 生 成 ,configure主 要 做 二 件 事 检 测 当 前 环 境 是 否 支 持 编 译 这 一 软 件 生 成 Makefile 在 进 行 嵌 入 式 移 植 前 先 了 解 要 软 件 怎 么 运 行 的 和 运 行 原 理 绝 大 部 分 软 件 在 X8 6 下 用 configure都 会

19、一 次 性 通 过 这 样 先 在 X8 6 环 境 下 编 译 运 行 , 测 试 通 过 后 再 考 虑 移 植 到 目标 板 Configure开 源 项 目 移 植1、 confgure是 生 成 Makefile工 具 , 在 使 用 , ,一 定 要 用configure help查 看 其 选 项 , 查 看 是 否 支 持 CC、 CFLAGS等环 境 变 量 的 支 持( 1) 如 果 是 直 接 在 执 行 configure时 加 入 工 具 链 支 持CC=arm-linux-gcc ./configure( 2) 检 查 configure 是 不 是 支 持 -ho

20、st 选 择如 是 则 使 用 -host=arm-linux来 让 脚 本 来 修 改./configure -host=arm-linux如 果 不 是 则 直 接 运 行 configure, 生 成 makefile后 手 工 修 改 移植madplay到开发板1、 要 求 : 移 植 开 源 madplay项 目 到 开 发 板 , 使 它 能 在 开 发 板 上播 放 mp3歌 曲2、 移 植 前 准 备 : (1)、 需 要 如 下 文 件 : madplay-0.15.2b.tar.gz、 libmad-0.15.1b.tar.gz、 libid3tag-0.15.1v.tar

21、.gz、 zlib-1.1.4.tar.gz( 2) 、 前 三 个 文 件 下 载 地 址 : http:/ 一 个 文 件 下 载 地 址http:/ 到 要 求 的 版 本 进 行 下 载 移植madplay到开发板3、 移 植 步 骤 :( 1) 解 压 所 有 软 件 包 , 放 在 madplay目 录 下 移植madplay到开发板3、 移 植 步 骤 :( 2) 进 入 包 目 录 配 置 并 编 译 zlib-1.1.4 配 置 : 将 build-zlib.sh拷 贝 到 加 压 目 录 并 运 行 编 译 : make 安 装 : make install( 3) 进 入

22、 包 目 录 配 置 并 编 译 libid3tag-0.15.1b 配 置 : 将 build-libid3.sh拷 贝 到 加 压 目 录 并 运 行 编 译 : make 安 装 : make install 移植madplay到开发板3、 移 植 步 骤 :( 4) 进 入 包 目 录 配 置 并 编 译 libmad-0.15.1b 配 置 : 将 build-libmad.sh拷 贝 到 加 压 目 录 并 运 行 编 译 : make注 意 必 须 先 去 掉 Makefile中 CLFAGS变 量 中 的 -fforce-mem选 项 , 因 为 4.5.1版 本gcc不 在

23、支 持 该 选 项 ! 安 装 : make install( 5) 进 入 包 目 录 配 置 并 编 译 madplay-0.15.2b 配 置 : 将 build-madplay.sh拷 贝 到 加 压 目 录 并 运 行 编 译 : make 在 当 前 目 录 下 生 产 madplay可 执 行 文 件 移植madplay到开发板3、 移 植 步 骤 :( 6) 、 确 认 madplay是 ARM架 构 可 执 行 文 件 file madplay( 7) 、 压 缩 去 除 madplay符 合 链 接 arm-linux-strip madplay( 8) 、 将 madplay通 过 NFS共 享 拷 贝 到 开 发 板 , 确 认 能 正 常 播 放 MP3歌 曲

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!