使 用 基 本 链 接 器 功 能注 意只 要 汇 编 程 序 源 文 件 未 引 用 C++ 库 , 便 无 需 VFE 注 释 。 这 是 因 为 链 接 器 假 设 未引 用 C++ 库 的 目 标 文 件 没 有 进 行 任 何 虚 函 数 调 用 。 类 似 地 , 只 要 使 用 旧 版 本armcc 编 译 的 C 源 文 件 未 引 用 C++ 库 , 便 可 以 参 与 VFE。VFE 有 四 种 运 行 模 式 :OnOffForce使 用 命 令 行 选 项 --vfemode=on 可 启 用 链 接 器 VFE 识 别 。 如 果 您 未 在命 令 行 中 指 定 VFE 选 项 , 则 该 模 式 为 缺 省 模 式 。在 此 模 式 下 , 链 接 器 会 根 据 目 标 文 件 的 内 容 选 择 force 或 off 模 式 :• 如 果 每 个 目 标 文 件 都 包 含 VFE 信 息 或 未 引 用 C++ 库 , 则 链 接器 将 使 用 force 模 式 , 并 继 续 进 行 删 除 。• 如 果 有 任 何 目 标 文 件 缺 少 VFE 信 息 并 引 用 了 C++ 库 , 例 如 使用 以 前 版 本 的 <strong>ARM</strong> 工 具 编 译 的 代 码 , 则 链 接 器 将 使 用 off 模式 , 自 动 禁 用 VFE。 此 时 选 择 off 模 式 以 禁 用 VFE, 可 以 确 保链 接 器 不 会 删 除 不 含 VFE 信 息 的 对 象 使 用 的 虚 函 数 。使 用 命 令 行 选 项 --vfemode=off 可 使 armlink 忽 略 编 译 器 提 供 的 任 何附 加 信 息 。 在 此 模 式 下 , 最 终 映 像 将 与 VFE 不 可 识 别 情 况 下 编 译和 链 接 生 成 的 映 像 相 同 。使 用 命 令 行 选 项 --vfemode=force 可 启 用 链 接 器 VFE 识 别 , 并 强 制 应用 VFE 算 法 。 如 果 某 些 目 标 文 件 不 包 含 VFE 信 息 , 例 如 , 使 用 以前 版 本 的 <strong>ARM</strong> 工 具 编 译 的 文 件 , 链 接 器 会 在 继 续 删 除 的 同 时 显 示一 则 警 告 消 息 , 提 示 您 可 能 发 生 错 误 。Force no RTTI使 用 命 令 行 选 项 --vfemode=force_no_rtti 可 以 启 用 链 接 器 VFE 识别 , 并 强 制 删 除 所 有 RTTI 对 象 。 在 此 模 式 下 , 所 有 虚 函 数 都 将 被保 留 。编 译 器 将 附 加 信 息 放 置 在 名 称 以 .arm_vfe 开 头 的 节 中 。 代 码 的 其 余 部 分 不 会 引用 这 些 节 , 因 此 未 启 用 VFE 识 别 时 链 接 器 会 将 其 忽 略 。 因 此 , 这 些 节 不 会 增 加最 终 映 像 的 大 小 , 而 会 增 加 编 译 器 生 成 的 目 标 文 件 的 大 小 。3-12 版 权 所 有 © 2007 <strong>ARM</strong> 公 司 。 保 留 所 有 权 利 。 <strong>ARM</strong> DUI 0349AC
使 用 基 本 链 接 器 功 能3.3.5 链 接 器 反 馈armlink 提 供 反 馈 信 息 , 以 便 在 下 次 编 译 文 件 时 提 示 编 译 器 有 关 未 使 用 的 函 数 。这 些 函 数 将 放 置 在 各 自 的 节 中 , 以 便 链 接 器 将 来 删 除 它 们 。当 启 用 --inline 优 化 时 ( 请 参 阅 第 3-20 页 的 跳 转 内 联 ), 链 接 器 内 联 的 函 数 也 发出 到 反 馈 文 件 中 。 这 些 函 数 也 放 置 在 各 自 的 节 中 。--feedback file 选 项 生 成 一 个 反 馈 文 件 , 其 中 以 备 注 形 式 包 含 每 个 输 出 文 件 名 ,并 包 含 在 文 件 中 找 到 的 未 使 用 符 号 , 例 如 :;## <strong>ARM</strong> Linker, RVCT ver [Build num]: Last Updated: Date;VERSION 0.2;FILE foo.ounused_func1