47
ARM ® コンパイラ バージョン 5.05 スタートガイド Copyright © 2010-2014 ARM.All rights reserved. ARM DUI0529KJ

ARM® コンパイラ スタートガイドinfocenter.arm.com/help/...getting_started_guide.pdf · not exported, directly or indirectly, in violation of such export laws. Use of the

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: ARM® コンパイラ スタートガイドinfocenter.arm.com/help/...getting_started_guide.pdf · not exported, directly or indirectly, in violation of such export laws. Use of the

ARM® コンパイラバージョン 5.05

スタートガイド

Copyright © 2010-2014 ARM.All rights reserved.ARM DUI0529KJ

Page 2: ARM® コンパイラ スタートガイドinfocenter.arm.com/help/...getting_started_guide.pdf · not exported, directly or indirectly, in violation of such export laws. Use of the

ARM® コンパイラ

スタートガイド

Copyright © 2010-2014 ARM.All rights reserved.

リリース情報

ドキュメント履歴

発行 日付 機密保持ステータス 変更点

A 28 5 月 2010 非機密扱い ARM コンパイラ v4.1 リリース

B 30 9 月 2010 非機密扱い ARM コンパイラ v4.1 のアップデート 1

C 28 1 月 2011 非機密扱い ARM コンパイラ v4.1 パッチ 3 のアップデート 2

D 30 4 月 2011 非機密扱い ARM コンパイラ v5.0 リリース

E 29 7 月 2011 非機密扱い ARM コンパイラ v5.0 のアップデート 1

F 30 9 月 2011 非機密扱い ARM コンパイラ v5.01 リリース

G 29 2 月 2012 非機密扱い ARM コンパイラ v5.01 リリースマニュアルの更新 1

H 27 7 月 2012 非機密扱い ARM コンパイラ v5.02 リリース

I 31 1 月 2013 非機密扱い ARM コンパイラ v5.03 リリース

J 16 12 月 2013 非機密扱い ARM コンパイラ v5.04 リリース

K 10 9 月 2014 非機密扱い ARM コンパイラ v5.05 リリース

Non-Confidential Proprietary Notice

This document is protected by copyright and other related rights and the practice or implementation of the information contained inthis document may be protected by one or more patents or pending patent applications. No part of this document may bereproduced in any form by any means without the express prior written permission of ARM. No license, express or implied, byestoppel or otherwise to any intellectual property rights is granted by this document unless specifically stated.

Your access to the information in this document is conditional upon your acceptance that you will not use or permit others to usethe information for the purposes of determining whether implementations infringe any third party patents.

THIS DOCUMENT IS PROVIDED “AS IS”. ARM PROVIDES NO REPRESENTATIONS AND NO WARRANTIES,EXPRESS, IMPLIED OR STATUTORY, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OFMERCHANTABILITY, SATISFACTORY QUALITY, NON-INFRINGEMENT OR FITNESS FOR A PARTICULARPURPOSE WITH RESPECT TO THE DOCUMENT. For the avoidance of doubt, ARM makes no representation with respect to,and has undertaken no analysis to identify or understand the scope and content of, third party patents, copyrights, trade secrets, orother rights.

This document may include technical inaccuracies or typographical errors.

TO THE EXTENT NOT PROHIBITED BY LAW, IN NO EVENT WILL ARM BE LIABLE FOR ANY DAMAGES,INCLUDING WITHOUT LIMITATION ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL, PUNITIVE, ORCONSEQUENTIAL DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISINGOUT OF ANY USE OF THIS DOCUMENT, EVEN IF ARM HAS BEEN ADVISED OF THE POSSIBILITY OF SUCHDAMAGES.

This document consists solely of commercial items. You shall be responsible for ensuring that any use, duplication or disclosure ofthis document complies fully with any relevant export laws and regulations to assure that this document or any portion thereof isnot exported, directly or indirectly, in violation of such export laws. Use of the word “partner” in reference to ARM’s customers isnot intended to create or refer to any partnership relationship with any other company. ARM may make changes to this document atany time and without notice.

If any of the provisions contained in these terms conflict with any of the provisions of any signed written agreement covering thisdocument with ARM, then the signed written agreement prevails over and supersedes the conflicting provisions of these terms.

ARM® コンパイラ

ARM DUI0529KJ Copyright © 2010-2014 ARM.All rights reserved. 2非機密扱い

Page 3: ARM® コンパイラ スタートガイドinfocenter.arm.com/help/...getting_started_guide.pdf · not exported, directly or indirectly, in violation of such export laws. Use of the

This document may be translated into other languages for convenience, and you agree that if there is any conflict between theEnglish version of this document and any translation, the terms of the English version of the Agreement shall prevail.

Words and logos marked with ® or ™ are registered trademarks or trademarks of ARM Limited or its affiliates in the EU and/orelsewhere. All rights reserved. Other brands and names mentioned in this document may be the trademarks of their respectiveowners. Please follow ARM’s trademark usage guidelines at http://www.arm.com/about/trademark-usage-guidelines.php

Copyright © [2010-2014], ARM Limited or its affiliates. All rights reserved.

ARM Limited. Company 02557590 registered in England.

110 Fulbourn Road, Cambridge, England CB1 9NJ.

LES-PRE-20349

非機密著作権情報

本書は、著作権などの権利により保護されており、本書に含まれる手順または実装に関する情報は 1 つ以上の特許または申請

中の特許により保護されている可能性があります。本書のいかなる部分も、ARM から事前に書面による明示的な承諾なく、 何ら

かの形式や方法で無断複製することは許可されていません。 特に記載がない限り、明示的であるか黙示的であるかを問わず、

また禁反言やその他いかなる知的財産権のライセンスを許諾するものではありません。

本書の情報には、実装により、いかなる第三者の特許も侵害されないことを確認する目的で情報を使用せず、第三者にもそれを

許可しないと承諾することを条件としてアクセスすることができます。

本書は、「現状」のまま提供されます。ARM は、明示的、黙示的、または制定法上のいずれを問わず、いかなる表明も保証も行

いません。これには、本書に関連した商品性、品質基準、非侵害、または特定目的への適合性に関する黙示的保証を含むが、

これに限定されません。疑義を避けるため、ARM は第三者の特許、著作権、営業機密、または他の権利の範囲および内容に関

して、いかなる表明も行わず、識別や理解のための分析も行いません。

本書には、技術的に不正確な箇所および誤記が含まれる場合があります。

法により禁止されていない限りにおいて、ARM は本書の使用により生じた直接的、間接的、特別、付随的、懲罰的、または結果

的損害などを含むすべての損害に対して、たとえそのような損害の可能性が事前に告知されていた場合でも、その原因および

責任理論の如何に関わらず一切の責任を 負わないものとします。

本書には、商品のみが含まれています。本書の使用、複製、または開示が関連するあらゆる輸出法および輸出規制に完全に準

拠し、本書が全体であれ一部であれ、該当する輸出法に違反して直接的または間接的に輸出されることがないことを保証する

責任を負うものとします。ARM のお客様に関連して「パートナー」という言葉が使用されている場合でも、他会社と提携関係を設

立することや、言及することを意図するものではありません。ARM は、通知することなくいつでも本書を変更することができます。

本契約のいずれかの規定と、ARM と締結された本書の内容を含む署名済みの書面契約の間に矛盾がある場合、署名済みの

書面契約を本契約の規定より優先するものとします。本書は、 便宜上、他言語に翻訳される場合がありますが、本書の英語版と

翻訳との間に矛盾がある場合、契約書の英語版に含まれる規定を優先することに同意するものとします。

記号 ( ® または ™ ) が付いた言葉およびロゴは、ARM Limited や関連会社の EU またはその他の国における登録商標および

商標です。All rights reserved.本書に記載されている他の製品名は、各社の所有する商標です。ARM の 商標の使用に関する

次のガイドラインに従ってください。 http://www.arm.com/about/trademark-usage-guidelines.php

Copyright © [2010-2014], ARM Limited or its affiliates. All rights reserved.

ARM Limited. Company 02557590 registered in England.

110 Fulbourn Road, Cambridge, England CB1 9NJ.

LES-PRE-20349

機密保持ステータス

本書は非機密扱いであり、本書を使用、複製、および開示する権利は、ARM および ARM が本書を提供した当事者との間で締

結した契約の条項に基づいたライセンスの制限により異なります。

無制限アクセスは、ARM 社内による分類です。

製品ステータス

本書の情報は 終版であり、開発済み製品に対応しています。

Web アドレス

http://www.jp.arm.com

ARM® コンパイラ

ARM DUI0529KJ Copyright © 2010-2014 ARM.All rights reserved. 3非機密扱い

Page 4: ARM® コンパイラ スタートガイドinfocenter.arm.com/help/...getting_started_guide.pdf · not exported, directly or indirectly, in violation of such export laws. Use of the

目次ARM® コンパイラ スタートガイド

序章本書について ........................................................ ........................................................ 9

第 章 1 概要: ARM® コンパイラ

1.1 ARM® コンパイラ について ............................................ ............................................ 1-121.2 ツールチェーンでサポートされている ARM アーキテクチャ .................... .................... 1-181.3 64 ビットホストプラットフォームでの ARM® コンパイラ のサポート ................................ 1-191.4 ツールチェーンのマニュアルについて .................................... .................................... 1-211.5 ARM® コンパイラ のライセンスされた機能 .................................................................. 1-231.6 ARM® コンパイラ で提供される GCC 互換性 .............................. .............................. 1-241.7 ツールチェーンの環境変数 ........................................................................................ 1-251.8 ホスト間でのソースファイルの移植性 .................................... .................................... 1-281.9 Windows のコンパイルツールでの Cygwin パスの指定について ............... ............... 1-291.10 Rogue Wave のマニュアル ........................................... ........................................... 1-301.11 参考資料 ......................................................... ......................................................... 1-31

第 章 2 コンパイルツールの使い方

2.1 ARM コンパイルツールについて ................................................................................ 2-342.2 コマンドラインオプションを指定する方法 .................................. .................................. 2-352.3 ARM コンパイラコマンド .............................................. .............................................. 2-392.4 ARM リンカのコマンド ............................................... ............................................... 2-412.5 ARM アセンブラコマンド ............................................................................................ 2-422.6 fromelf イメージ変換ユーティリティのコマンド .............................. .............................. 2-43

ARM DUI0529KJ Copyright © 2010-2014 ARM.All rights reserved. 4非機密扱い

Page 5: ARM® コンパイラ スタートガイドinfocenter.arm.com/help/...getting_started_guide.pdf · not exported, directly or indirectly, in violation of such export laws. Use of the

付録 A スタートガイドのマニュアル(改訂版)

A.1 『スタートガイド』に対する改訂 ..................................... ..................................... 付録-A-45

ARM DUI0529KJ Copyright © 2010-2014 ARM.All rights reserved. 5非機密扱い

Page 6: ARM® コンパイラ スタートガイドinfocenter.arm.com/help/...getting_started_guide.pdf · not exported, directly or indirectly, in violation of such export laws. Use of the

図の一覧ARM® コンパイラ スタートガイド

図 1-1 Rogue Wave の HTML マニュアル ......................................................................................... 1-30図 2-1 一般的なツール使用の流れ図 ................................................................................................. 2-34

ARM DUI0529KJ Copyright © 2010-2014 ARM.All rights reserved. 6非機密扱い

Page 7: ARM® コンパイラ スタートガイドinfocenter.arm.com/help/...getting_started_guide.pdf · not exported, directly or indirectly, in violation of such export laws. Use of the

表の一覧ARM® コンパイラ スタートガイド

表 1-1 ツールチェーンで使用される環境変数 ...................................................................................... 1-25表 A-1 発行 J と発行 K の相違点 .............................................................................................. 付録-A-45表 A-2 発行 I と発行 J の相違点 ................................................................................................ 付録-A-45表 A-3 発行 H と発行 I の相違点 ............................................................................................... 付録-A-45表 A-4 発行 F と発行 H の相違点 .............................................................................................. 付録-A-46表 A-5 発行 E と発行 F の相違点 .............................................................................................. 付録-A-46表 A-6 発行 D と発行 E の相違点 ............................................................................................. 付録-A-46表 A-7 発行 C と発行 D の相違点 ............................................................................................. 付録-A-46表 A-8 発行 A と発行 B の相違点 .............................................................................................. 付録-A-46

ARM DUI0529KJ Copyright © 2010-2014 ARM.All rights reserved. 7非機密扱い

Page 8: ARM® コンパイラ スタートガイドinfocenter.arm.com/help/...getting_started_guide.pdf · not exported, directly or indirectly, in violation of such export laws. Use of the

序章

この前書きでは、次について紹介します。 ARM® コンパイラ スタートガイド.このドキュメントは、次で構成されています。

• 本書について(9 ページ).

ARM DUI0529KJ Copyright © 2010-2014 ARM.All rights reserved. 8非機密扱い

Page 9: ARM® コンパイラ スタートガイドinfocenter.arm.com/help/...getting_started_guide.pdf · not exported, directly or indirectly, in violation of such export laws. Use of the

本書について

ARM コンパイラスタートガイドでは、 ARM コンパイラツール、サポートしている規格、および ARM アプリケーションバイナリインタフェース(ABI)への準拠の概要について説明します。

本書の構成

本書は以下の章から構成されています。

第 章 1 概要: ARM® コンパイラARM® コンパイラ に関する一般的な情報を提供します。

第 章 2 コンパイルツールの使い方ARM コンパイラ によって提供されるツールを使用してアプリケーションを作成する方法につい

て説明します。

付録 A スタートガイドのマニュアル(改訂版)『スタートガイド』に対して加えられた技術的変更について 説明します。

用語集

「ARM 用語集」は、ARM マニュアルで使用されている用語とその定義のリストです。一般に認められて

いる意味と ARM での意味が異なる場合を除いて、「ARM 用語集」に業界標準の用語は含まれていま

せん。

詳細については、「 ARM 用語集 」を参照して下さい。

表記規則

italic重要用語、相互参照、引用箇所を示します。

boldメニュー名などのユーザインタフェース要素を太字で記載しています。また、必要に応じて記述リスト内の重要箇所、ARM プロセッサの信号名、重要用語、および専門用語にも太字を使

用しています。monospace

コマンド、ファイル名、プログラム名、ソースコードなど、キーボードから入力可能なテキストを示しています。

monospaceコマンドまたはオプションに使用可能な略語を示しています。コマンド名またはオプション名をすべて入力する代わりに、下線部分の文字だけを入力することができます。

monospace italic引数が特定の値で置き換えられる場合のモノスペーステキストの引数を示しています。

monospace boldサンプルコード以外に使用される言語キーワードを示しています。

<and>コードまたはコードの一部のアセンブラ構文で置換可能な項が使用されている場合に、その項を囲みます。例えば、

MRC p15, 0 <Rd>, <CRn>, <CRm>, <Opcode_2>

スモールキャピタル

「ARM 用語集」で定義されている専門的な意味を持つ用語について、本文中で使用されま

す。例えば、IMPLEMENTATION DEFINED、IMPLEMENTATION SPECIFIC、UNKNOWN、UNPREDICTABLE などで

す。

ご意見、ご感想

序章 本書について

ARM DUI0529KJ Copyright © 2010-2014 ARM.All rights reserved. 9非機密扱い

Page 10: ARM® コンパイラ スタートガイドinfocenter.arm.com/help/...getting_started_guide.pdf · not exported, directly or indirectly, in violation of such export laws. Use of the

本製品に関するフィードバック

本製品についてのご意見やご提案がございましたら、以下の情報を添えて購入元までお寄せ下さい。

• 製品名

• 製品のリビジョンまたはバージョン

• 説明にはできるだけ多くの情報を含めて下さい。適宜、症状と診断手順も含めて下さい。

内容に関するフィードバック

内容に関するご意見につきましては、電子メールを [email protected] まで送信して下さい。その際に

は、以下の内容を記載して下さい。

• タイトル

• 文書番号(ARM DUI0529KJ)。• 問題のあるページ番号

• 問題点の簡潔な説明

また、補足すべき点や改善すべき点についての全般的なご提案もお待ちしております。

ARM では、この PDF を Adobe Acrobat および Acrobat Reader でのみテストしており、その他の PDF リーダーを使用した場合の表示品質については、保証いたしかねます。

その他の情報

• ARM 情報センター。

• ARM Technical Support Knowledge Articles• サポートおよびメンテナンス。

• ARM 用語集

序章 本書について

ARM DUI0529KJ Copyright © 2010-2014 ARM.All rights reserved. 10非機密扱い

Page 11: ARM® コンパイラ スタートガイドinfocenter.arm.com/help/...getting_started_guide.pdf · not exported, directly or indirectly, in violation of such export laws. Use of the

第 1 章概要: ARM® コンパイラ

ARM® コンパイラ に関する一般的な情報を提供します。

以下のセクションから構成されています。

• 1.1 ARM® コンパイラ について(1-12 ページ).• 1.2 ツールチェーンでサポートされている ARM アーキテクチャ(1-18 ページ).• 1.3 64 ビットホストプラットフォームでの ARM® コンパイラ のサポート(1-19 ページ).• 1.4 ツールチェーンのマニュアルについて(1-21 ページ).• 1.5 ARM® コンパイラ のライセンスされた機能(1-23 ページ).• 1.6 ARM® コンパイラ で提供される GCC 互換性(1-24 ページ).• 1.7 ツールチェーンの環境変数(1-25 ページ).• 1.8 ホスト間でのソースファイルの移植性(1-28 ページ).• 1.9 Windows のコンパイルツールでの Cygwin パスの指定について(1-29 ページ).• 1.10 Rogue Wave のマニュアル(1-30 ページ).• 1.11 参考資料(1-31 ページ).

ARM DUI0529KJ Copyright © 2010-2014 ARM.All rights reserved. 1-11非機密扱い

Page 12: ARM® コンパイラ スタートガイドinfocenter.arm.com/help/...getting_started_guide.pdf · not exported, directly or indirectly, in violation of such export laws. Use of the

1.1 ARM® コンパイラ について

ARM コンパイラを使用すると、ARM プロセッサファミリ用のアプリケーションを C、C++、または ARMアセンブリ言語ソースからビルドできます。

以下の点に注意して下さい。

• 生成されたコードは 2 つの ARM コンパイラリリース間で異なる場合があります。

• 機能のリリースについては、重大なコード生成の差異が存在する場合があります。

個々の ARM コンパイラツールのマニュアルのコマンドラインオプションの説明と関連情報では、 ARMコンパイラ でサポートされているすべての機能が説明されています。記述されていない機能はすべて、

サポート対象外のため、自己責任で使用して下さい。サポートされていない機能を使用して生成されたコードについては、正しく動作することを必ず確認して下さい。

以下のサブセクションから構成されています。

• 1.1.1 ARM® コンパイラツールの概要(1-12 ページ).• 1.1.2 ARM® コンパイラ のホストプラットフォームサポート(1-14 ページ).• 1.1.3 ARM® コンパイラ での標準への準拠(1-15 ページ).• 1.1.4 ARM アーキテクチャ用 ABI(基本標準)への準拠(1-15 ページ).• 1.1.5 支援ソフトウェア(1-16 ページ).• 1.1.6 ARM® コンパイラの重要な制限事項(1-16 ページ).

1.1.1 ARM® コンパイラツールの概要

ARM コンパイラには、実行可能イメージ、ダイナミックリンクライブラリ、C、C++、および ARM アセンブ

リコードからの共有オブジェクトを作成するために必要な、ツールおよびライブラリが含まれています。

ツールチェーンは以下のもので構成されています。

armccARM と Thumb® に対応しているコンパイラ。C コードと C++ コードをコンパイルします。

インラインアセンブラおよび組み込みアセンブラをサポートしており、Advanced SIMD ベクトル

化コンパイラも含まれています。

armasmARM と Thumb に対応しているアセンブラ。ARM および Thumb アセンブリ言語によるソース

ファイルをアセンブルします。

1 概要: ARM® コンパイラ1.1 ARM® コンパイラ について

ARM DUI0529KJ Copyright © 2010-2014 ARM.All rights reserved. 1-12非機密扱い

Page 13: ARM® コンパイラ スタートガイドinfocenter.arm.com/help/...getting_started_guide.pdf · not exported, directly or indirectly, in violation of such export laws. Use of the

armlinkリンカ。1 つまたは複数のオブジェクトファイルの内容と、1 つまたは複数のオブジェクトライブラ

リから選択された部分を結合し、実行可能プログラムを生成します。

64 ビットコンピュータ上でより大容量のメモリを使用可能な armlink の 64 ビット版も用意され

ています。64 ビット版は、このリリースの armlink の 32 ビット版でサポートされているすべての

機能をサポートします。

スタンドアロン製品として ARM コンパイラを使用している場合、デフォルトでは 32 ビット版が

使用されます。

DS-5 での ARM コンパイラのリンカのバージョンは、ホストプラットフォームによって異なりま

す。32 ビットツールには 32 ビットリンカ、64 ビットツールには 64 ビットリンカが入っています。ど

ちらかのリンカになります。

Microprocessor Developer Kit(MDK)には、32 ビットリンカのみ提供されます。

armarライブラリアン。ELF オブジェクトファイルをアーカイブやライブラリにまとめて保存するために使

用します。これにより、複数の ELF ファイルの代わりにライブラリやアーカイブをリンカに渡すこ

とができます。アーカイブをサードパーティに配布して、さらに高度なアプリケーションの開発に使用してもらうこともできます。

fromelfイメージ変換ユーティリティ。逆アセンブリおよびコードサイズやデータサイズなど、入力イメージに関するテキスト情報を生成することもできます。

ARM C++ ライブラリ

ARM C++ ライブラリには、以下の関数が用意されています。

• C++ コンパイル時に使用するヘルパ関数。

• Rogue Wave ライブラリでサポートされていないその他の C++ 関数。

ARM C ライブラリ

ARM C ライブラリには、以下の関数が用意されています。

• C 標準および C++ 標準で定義されているライブラリ機能の実装。

• コンパイラ固有の拡張機能(_fisatty()、__heapstats()、__heapvalid() など)。

• GNU 拡張機能。

• 多くの C ライブラリで一般的な非標準拡張。

• POSIX 拡張機能。

• POSIX で標準化されている関数。

ARM C microlibARM C microlib には、高度に 適化された一連の関数が用意されています。これらの関数

は、ディープエンベデッドアプリケーション用に、極めて小容量のメモリに収める必要があるアプリケーションで使用されます。

Rogue Wave C++ ライブラリ

Rogue Wave C++ ライブラリは、標準 C++ ライブラリを実装したものです。

C++ 標準テンプレートライブラリ(STL)C++ STL を ARM に実装したものです。

関連概念

1.3 64 ビットホストプラットフォームでの ARM® コンパイラ のサポート(1-19 ページ).1.5 ARM® コンパイラ のライセンスされた機能(1-23 ページ).1.1.4 ARM アーキテクチャ用 ABI(基本標準)への準拠(1-15 ページ).1.2 ツールチェーンでサポートされている ARM アーキテクチャ(1-18 ページ).1.10 Rogue Wave のマニュアル(1-30 ページ).

1 概要: ARM® コンパイラ1.1 ARM® コンパイラ について

ARM DUI0529KJ Copyright © 2010-2014 ARM.All rights reserved. 1-13非機密扱い

Page 14: ARM® コンパイラ スタートガイドinfocenter.arm.com/help/...getting_started_guide.pdf · not exported, directly or indirectly, in violation of such export laws. Use of the

関連参照

1.11 参考資料(1-31 ページ).

関連情報

ARM Web サイト.コンパイラの概要.アセンブラの概要.リンカの概要.ARM C ライブラリと C++ ライブラリ.ARM C マイクロライブラリ.ARM ライブラリアンの概要.fromelf イメージ変換ユーティリティの概要.

1.1.2 ARM® コンパイラ のホストプラットフォームサポート

ARM コンパイラ は、さまざまな Windows、Ubuntu、および Red Hat Enterprise Linux プラットフォームを

サポートしています。

特別に記述がない限り、 ARM コンパイラ は、次の OS プラットフォームの 32 ビットと 64 ビットの両方の

バージョンをサポートしています。

• Windows 8(64 ビットのみ)。

• Windows 7 Enterprise Edition SP1。• Windows 7 Professional Edition SP1。• Windows XP Professional SP3(32 ビット版のみ)。

• Windows Server 2012(64 ビットのみ)。

• Windows Server 2008 R2。• Ubuntu Desktop Edition 14.04 LTS(64 ビットのみ)。

• Ubuntu Desktop Edition 12.04 LTS• Red Hat Enterprise Linux 6 Desktop および Workstation オプション、Standard。

このリリースでは、以下のプラットフォームはサポートされていません。

• Windows Server 2003 SP2(32 ビットのみ)。

• Red Hat Enterprise Linux 5 Desktop および Workstation オプション、Standard。

サポートされている Windows プラットフォームでは、Cygwin で ARM コンパイラ を使用できます。ただ

し、CYGPATH によって有効になる Cygwin パスの変換は 32 ビットの Windows プラットフォームでのみサ

ポートされており、Windows Server 2012 と Windows 8 ではサポートされていません。

About running 32-bit ARM Compiler binaries on Red Hat Enterprise Linux 6

Red Hat Enterprise Linux 6 はデフォルトで、32 ビットの互換性ライブラリなしでインストールされる場合

があります。Red Hat Enterprise Linux 6 で ARM コンパイラを使用するには、32 ビットの互換性ライブラ

リサポートをインストールする必要があります。

特に、ARM コンパイラでは glibc および libm が必要です。これらをインストールするには、yum コマン

ドが正しく設定されていることを確認し、以下のように入力します。

# yum groupinstall "Compatibility Libraries"

関連概念

1.9 Windows のコンパイルツールでの Cygwin パスの指定について(1-29 ページ).1.1 ARM® コンパイラ について(1-12 ページ).

1 概要: ARM® コンパイラ1.1 ARM® コンパイラ について

ARM DUI0529KJ Copyright © 2010-2014 ARM.All rights reserved. 1-14非機密扱い

Page 15: ARM® コンパイラ スタートガイドinfocenter.arm.com/help/...getting_started_guide.pdf · not exported, directly or indirectly, in violation of such export laws. Use of the

関連情報

サポートされている Cygwin のバージョン.

1.1.3 ARM® コンパイラ での標準への準拠

ARM コンパイラは、ISO C、ISO C++、ELF、DWARF 2 および DWARF 3 標準に準拠しています。

各標準の準拠のレベルは次のとおりです。

ararmar により UNIX 方式のオブジェクトコードアーカイブが生成され、armlink により UNIX 形式のオブジェクトコードアーカイブが使用されます。armar では、 ar 形式のほとんどのオブジ

ェクトコードアーカイブをリストして抽出することができます。また、armlink では、シンボルテー

ブルのメンバを含んでいる場合、別のアーカイブユーティリティで作成された ar 形式のアーカ

イブを使用することができます。DWARF 3

DWARF 3(DWARF Debugging Standard バージョン 3)のデバッグテーブルは、ツールチェー

ンでサポートされています。DWARF 2

DWARF 2 のデバッグテーブルは、ツールチェーンでサポートされています。また、ELF やDWARF 2 と互換性のある ARM 製のデバッガでもサポートされています。

ISO Cコンパイラでは、ISO C 1990 および 1999 ソースがコンパイラへのインプットとして、サポートさ

れています。ISO C++

コンパイラでは、ISO C++ 2003 ソースがコンパイラへのインプットとして、サポートされていま

す。ELF

ツールチェーンは、再配置可能なファイルと実行ファイルを ELF 形式で生成します。fromelfユーティリティを使用すると、 ELF ファイルを別の形式のファイルに変換することができます。

DWARF 2 および DWARF 3 標準には、フレームデータのデバッグなど、一部あいまいな領域がありま

す。そのため、ARM コード生成ツールによって生成された DWARF をサードパーティ製デバッガで使

用できるかどうか、またはサードパーティ製のツールによって生成された DWARF を ARM デバッガで

使用できるかどうかは保証しません。

関連概念

1.1.4 ARM アーキテクチャ用 ABI(基本標準)への準拠(1-15 ページ).

関連情報

コンパイラのソース言語モード.The DWARF Debugging Standard.『International Organization for Standardization』.

1.1.4 ARM アーキテクチャ用 ABI(基本標準)への準拠

ARM アーキテクチャ用 ABI(ベース規格)は、標準の集合です。オープンな標準と ARM アーキテクチ

ャ固有の標準があります。

ARM アーキテクチャ用アプリケーションバイナリインタフェース(ABI)(ベース規格)(BSABI)により、ベ

アメタルから ARM Linux などの主要なオペレーティングシステムまで、ARM アーキテクチャベースの

実行環境におけるバイナリコードや開発ツールの相互動作が管理されます。

この標準に準拠すると、ツールチェーンで生成されたオブジェクトと、プロデューサの異なるオブジェクトライブラリを連動させることができます。

1 概要: ARM® コンパイラ1.1 ARM® コンパイラ について

ARM DUI0529KJ Copyright © 2010-2014 ARM.All rights reserved. 1-15非機密扱い

Page 16: ARM® コンパイラ スタートガイドinfocenter.arm.com/help/...getting_started_guide.pdf · not exported, directly or indirectly, in violation of such export laws. Use of the

BSABI は、以下の仕様から構成されています。

AADWARF『DWARF for the ARM Architecture』この ABI では、DWARF 3 標準を使用して、オブジェクト

のプロデューサとデバッガ間のデバッグデータのやり取りを規定しています。AAELF

ELF for the ARM Architecture 汎用的な ELF 標準をベースとし、プロデューサとコンシューマ

間でのリンク可能ファイルと実行可能ファイルのやり取りを規定しています。AAPCS

ARM アーキテクチャ向けプロシージャコール標準実行時の関数間の制御とデータのやり取り

を規定しています。ツールチェーンでサポートされている主要な実行環境の種類ごとに、AAPCS のバリアントが用意されています。

BPABI『Base Platform ABI for the ARM Architecture』静的なリンカによって生成された実行可能ファ

イルや共有オブジェクトファイルの形式と内容を規定しています。ポストリンクを使用して、プラットフォーム固有の実行ファイルをサポートします。プラットフォーム ABI を派生させるベース規

格を提供します。CLIBABI

ARM アーキテクチャ用 C ライブラリ ABI。ABI と C ライブラリの関係を定義しています。CPPABI

ARM アーキテクチャ用 C++ ABI。IA-64 向けに開発された汎用的な C++ ABI をベースとし、

独立した C++ コンパイラ間のインターワークを規定しています。DBGOVL

オーバーレイプログラムのデバッグのサポート。オーバーレイプログラムのデバッグをサポートするための、ABI for the ARM Architecture への拡張を定義しています。

EHABIARM アーキテクチャ用例外処理 ABI。例外がどのようにスローされ処理されるのかについて、

言語に依存しない側面と C++ 固有の側面の両方から定義しています。RTABI

『Run-time ABI for the ARM Architecture』個別に作成されたオブジェクトが浮動小数点とコンパ

イラヘルパ関数のサポートにおいて実行環境に何を期待できるかを規定しています。

以前のツールチェーンのリリースからアップグレードする場合は、ARM 仕様の 新版を使用して下さ

い。

関連情報

Application Binary Interface for the ARM Architecture Introduction and downloads.Addenda to, and Errata in, the ABI for the ARM Architecture.Differences between v1 and v2 of the ABI for the ARM Architecture.ABI for the ARM Architecture Advisory Note: SP は、AAPCS 準拠関数へのエントリ時に 8 バイト整列である必要があります。.

1.1.5 支援ソフトウェア

ツールチェーンの出力のデバッグを、ARM デバッガで行うことができます。ただし、DWARF 2 および

DWARF 3 標準と互換性がある場合でもサードパーティ製デバッガによるデバッグについては、ARMでは保証いたしかねます。

ツールチェーンのアップデートやパッチについては、ARM Web サイトで随時提供されます。

関連概念

1.1.3 ARM® コンパイラ での標準への準拠(1-15 ページ).

1.1.6 ARM® コンパイラの重要な制限事項

ARM コンパイラにはいくつかの制限事項がありますので注意して下さい。

以下の制限があります。

1 概要: ARM® コンパイラ1.1 ARM® コンパイラ について

ARM DUI0529KJ Copyright © 2010-2014 ARM.All rights reserved. 1-16非機密扱い

Page 17: ARM® コンパイラ スタートガイドinfocenter.arm.com/help/...getting_started_guide.pdf · not exported, directly or indirectly, in violation of such export laws. Use of the

• ARM コンパイラでは、ECC を使用したシステムやメモリが初期化されないパリティ保護をサポートし

ていません。.• 一部の浮動小数点の算術演算は、ハードウェアで処理されません。

関連情報

浮動小数点演算のハードウェアによる処理に関する制限.

1 概要: ARM® コンパイラ1.1 ARM® コンパイラ について

ARM DUI0529KJ Copyright © 2010-2014 ARM.All rights reserved. 1-17非機密扱い

Page 18: ARM® コンパイラ スタートガイドinfocenter.arm.com/help/...getting_started_guide.pdf · not exported, directly or indirectly, in violation of such export laws. Use of the

1.2 ツールチェーンでサポートされている ARM アーキテクチャ

ARM コンパイラ では、現在 ARM でサポートされている、ARMv4™ 以降のすべての ARM アーキテク

チャがサポートされています。これには ARM NEON テクノロジも含まれます。

ARMv4 より前のすべてのアーキテクチャは使用されなくなり、サポートされていません。

ターゲットプロセッサまたはアーキテクチャを指定すると、選択されたプロセッサまたはアーキテクチャ固有の追加機能を利用できます。そのためには、次のコマンドラインオプションを使用します。

• --cpu=name .• --fpu=name .

--arm または --thumb コマンドラインオプションを使用して、起動命令セット(ARM または Thumb)を指定できます。

You can force an ARM-only instruction set with the --arm_only option.

コンパイルツールは、ARM コードと Thumb コードの混用をサポートしています。これはインターワーク

と呼ばれ、ARM コードと Thumb コード間の分岐を可能にします。

関連情報

コンパイル時のターゲット CPU の選択.NEON テクノロジ.--arm コンパイラオプション.--arm_only コンパイラオプション.--cpu=name コンパイラオプション.--fpu=name コンパイラオプション.--thumb コンパイラオプション.--arm アセンブラオプション.--arm_only アセンブラオプション.--cpu=name アセンブラオプション.--fpu=name アセンブラオプション.--thumb アセンブラオプション.--arm_only リンカオプション.--cpu=name リンカオプション.--fpu=name リンカオプション.『Introducing NEON Development Article』.NEON Support in Compilation Tools Development Article.

1 概要: ARM® コンパイラ1.2 ツールチェーンでサポートされている ARM アーキテクチャ

ARM DUI0529KJ Copyright © 2010-2014 ARM.All rights reserved. 1-18非機密扱い

Page 19: ARM® コンパイラ スタートガイドinfocenter.arm.com/help/...getting_started_guide.pdf · not exported, directly or indirectly, in violation of such export laws. Use of the

1.3 64 ビットホストプラットフォームでの ARM® コンパイラ のサポート

ARM コンパイラ には、armlink の 32 ビット版と 64 ビット版があります。

ARM コンパイラは特定の 64 ビットプラットフォームでサポートされていますが、ツール自体は 32 ビット

アプリケーションです。そのため、ツールで使用可能な仮想アドレス空間とファイルサイズが制限されます。これらの制限を超えると、メモリが不足していることを示すエラーメッセージが armlink によって報

告されます。その結果、十分な物理メモリがあるにもかかわらず、アプリケーションがメモリにアクセスできないために混乱を引き起こすことがあります。

スタンドアロン製品として ARM コンパイラを使用している場合、64 ビット版の armlink は、このリリース

内の別の bin64 実行ファイルディレクトリにあります。このディレクトリには、64 ビットのリンカおよび他の

ツールの 32 ビット版が含まれています。

他の ARM 製品のコンポーネントとして ARM コンパイラをインストールした場合、以下のようになりま

す。

• 32 ビットプラットフォームでは、bin に 32 ビットツールのみが含まれます。

• 64 ビットプラットフォームでは、bin に 64 ビットのリンカおよび他のツールの 32 ビット版が含まれま

す。

armlink の 64 ビット版では、以下のことができます。

• 64 ビット版では、64 ビットオペレーティングシステムのプロセスがより大容量のメモリにアクセスでき

ます。

• 64 ビット版は、このリリースの armlink の 32 ビット版でサポートされているすべての機能をサポート

します。

インストールは、64 ビットのオペレーティングシステムを使用している場合でも、デフォルトで armlinkの標準 32 ビット版を使用するように設定されます。64 ビットコンピュータに ARM コンパイラをインストー

ルした場合は、64 ビット版を使用できます。

以下のサブセクションから構成されています。

• 1.3.1 64 ビットリンカ使用時の注意事項(1-19 ページ).• 1.3.2 64 ビットのリンカへの変更(スタンドアロン製品)(1-20 ページ).

1.3.1 64 ビットリンカ使用時の注意事項

64 ビット版の armlink を使用する場合は、いくつかの点に注意する必要があります。

条件を以下に示します。

• 64 ビット版の実行可能ファイルのディレクトリ内の armlink は 64 ビット版ですが、他のツールはす

べて 32 ビット版です。armcc.exe などの 64 ビット版の実行可能ファイルのディレクトリに、重複した

32 ビット版の実行可能ファイルが存在することは、冗長に感じられるかもしれません。しかし、これは

異なる実行可能ファイルが互いに呼び出すメソッドで必要とされています。このメソッドは、すべての実行可能ファイルが同じディレクトリに存在する必要があることを指示します。ツールは、特定の状況で互いを呼び出します。たとえば、-c がコマンドラインで指定されていない場合、armcc は実行

可能ファイルを生成するために armlink を呼び出します。

• CYGPATH によって有効になる Cygwin パスの変換は 32 ビットの Windows プラットフォームでのみサ

ポートされており、Windows Server 2012 と Windows 8 ではサポートされていません。

1 概要: ARM® コンパイラ1.3 64 ビットホストプラットフォームでの ARM® コンパイラ のサポート

ARM DUI0529KJ Copyright © 2010-2014 ARM.All rights reserved. 1-19非機密扱い

Page 20: ARM® コンパイラ スタートガイドinfocenter.arm.com/help/...getting_started_guide.pdf · not exported, directly or indirectly, in violation of such export laws. Use of the

1.3.2 64 ビットのリンカへの変更(スタンドアロン製品)

スタンドアロン製品として ARM コンパイラを使用している場合、64 ビット版の実行可能ファイルのディレ

クトリのパスを PATH 環境変数に追加する必要があります。

手順

armlink の 64 ビット版を使用するように ARM コンパイラ を設定するには、Windows では、次のよう

に入力します。

SET PATH=install_directory\bin64;%PATH%

関連参照

1.7 ツールチェーンの環境変数(1-25 ページ).

1 概要: ARM® コンパイラ1.3 64 ビットホストプラットフォームでの ARM® コンパイラ のサポート

ARM DUI0529KJ Copyright © 2010-2014 ARM.All rights reserved. 1-20非機密扱い

Page 21: ARM® コンパイラ スタートガイドinfocenter.arm.com/help/...getting_started_guide.pdf · not exported, directly or indirectly, in violation of such export laws. Use of the

1.4 ツールチェーンのマニュアルについて

ARM コンパイラは、ツールの使用方法とツールチェーンの以前のバージョンからの移行およびツール

チェーンの以前のバージョンとの互換性について説明したマニュアルスイートから構成されています。

ツールチェーンのマニュアルは以下のように構成されています。

スタートガイド(ARM DUI 0529)- 本書

本書では、ツールチェーンとその機能の概要について説明します。ソフトウェア開発ガイド(ARM DUI 0471)

このマニュアルでは、ツールチェーンを使用して、ARM アーキテクチャベースプロセッサ上で

実行するソフトウェアを開発する方法について説明します。

『ソフトウェア開発ガイド』を参照して下さい。

armcc ユーザガイド(ARM DUI 0472)このマニュアルでは、コンパイラ(armcc)のさまざまな機能の使用方法について説明します。

armcc の各コマンドラインオプションについても詳細に説明します。

『armcc ユーザガイド』を参照して下さい。

ARM C ライブラリ、C++ ライブラリ、および浮動小数点サポートユーザガイド(ARM DUI 0475)このマニュアルでは、ARM C ライブラリ、C++ ライブラリ、ARM C microlib の各機能と、その使

用方法について説明します。また、ライブラリによる浮動小数点のサポートについても説明します。

『ARM® C ライブラリ、C++ ライブラリ、および浮動小数点サポートユーザガイド』を参照して下

さい。

armasm ユーザガイド(ARM DUI 0473)このマニュアルでは、アセンブラ(armasm)のさまざまな機能の使用方法について説明します。

armasm の各コマンドラインオプションについても詳細に説明します。

『armasm ユーザガイド』を参照して下さい。

armlink ユーザガイド(ARM DUI 0474)このマニュアルでは、リンカ(armlink)のさまざまな機能の使用方法について説明します。

armlink の各コマンドラインオプションについても詳細に説明します。

『armlink ユーザガイド』を参照して下さい。

armar ユーザガイド(ARM DUI 0476)このマニュアルでは、ライブラリアン(armar)のさまざまな機能の使用方法について説明しま

す。armar の各コマンドラインオプションについても詳細に説明します。

『armar ユーザガイド』を参照して下さい。

fromelf ユーザガイド(ARM DUI 0477)このマニュアルでは、ELF イメージ変換ユーティリティ (fromelf)のさまざまな機能の使用方法

について説明します。armar の 各コマンドラインオプションについても詳細に説明します。

『fromelf ユーザガイド』を参照して下さい。

エラーおよび警告リファレンスガイド(ARM DUI 0496)このマニュアルでは、 ARM コンパイラ の各ビルドツールで生成されるエラーと警告について

説明します。

『エラーおよび警告リファレンスガイド』を参照して下さい。

1 概要: ARM® コンパイラ1.4 ツールチェーンのマニュアルについて

ARM DUI0529KJ Copyright © 2010-2014 ARM.All rights reserved. 1-21非機密扱い

Page 22: ARM® コンパイラ スタートガイドinfocenter.arm.com/help/...getting_started_guide.pdf · not exported, directly or indirectly, in violation of such export laws. Use of the

移行と互換性ガイド(ARM DUI 0530)このマニュアルでは、ソフトウェアをツールチェーンの以前のバージョン(ARM RVCT v4.0 など)から移行した場合の、 ARM コンパイラ での変更点について説明します。

『移行と互換性ガイド』を参照して下さい。

1 概要: ARM® コンパイラ1.4 ツールチェーンのマニュアルについて

ARM DUI0529KJ Copyright © 2010-2014 ARM.All rights reserved. 1-22非機密扱い

Page 23: ARM® コンパイラ スタートガイドinfocenter.arm.com/help/...getting_started_guide.pdf · not exported, directly or indirectly, in violation of such export laws. Use of the

1.5 ARM® コンパイラ のライセンスされた機能

ARM コンパイラ にはライセンスが必要です。

ツールチェーンを他の ARM 製品と共に購入した場合、含まれているライセンスの詳細については、そ

の製品の『スタートガイド』マニュアルを参照して下さい。

ARM 開発ツールのライセンスは、FlexNet ライセンス管理システムによって管理されています。

ライセンスを請求するには、ARM Web のライセンスに関するページ にアクセスして、オンラインでの指

示に従います。

関連情報

ARM DS-5 ライセンス管理ガイド.

1 概要: ARM® コンパイラ1.5 ARM® コンパイラ のライセンスされた機能

ARM DUI0529KJ Copyright © 2010-2014 ARM.All rights reserved. 1-23非機密扱い

Page 24: ARM® コンパイラ スタートガイドinfocenter.arm.com/help/...getting_started_guide.pdf · not exported, directly or indirectly, in violation of such export laws. Use of the

1.6 ARM® コンパイラ で提供される GCC 互換性

ARM コンパイラは、元は GNU ツールチェーンを使用してビルドされるように設定されていたソースベ

ースの開発を支援するために gcc との互換性を提供します。

ARM コンパイラ:

• gcc を使用してビルドされるように書き込まれている大半の C コードと C++ コードをビルドできます。

• すべての場合において、ソース互換は 100% ではありません。

• バグまで互換するようには意図されていません。

ARM コンパイラ は、重要な問題で欠陥動作に依存している gcc に存在する特定の欠陥をエミュレート

する場合もあります。

gcc との互換性、および gcc のバグとの互換性のレベルは、コンパイラが更新されると変化する場合が

あります。

1 概要: ARM® コンパイラ1.6 ARM® コンパイラ で提供される GCC 互換性

ARM DUI0529KJ Copyright © 2010-2014 ARM.All rights reserved. 1-24非機密扱い

Page 25: ARM® コンパイラ スタートガイドinfocenter.arm.com/help/...getting_started_guide.pdf · not exported, directly or indirectly, in violation of such export laws. Use of the

1.7 ツールチェーンの環境変数

ARMLMD_LICENSE_FILE を除き、 ARM コンパイラ では、その他の環境変数を設定する必要はありませ

ん。ただし、環境変数を設定したほうがよい場合もあります。

たとえば、armcc に対して追加のコマンドラインオプションを指定する場合で、ビルドスクリプトを変更し

たくない場合、 ARMCC5_CCOPT を使用したオプションを指定できます。

以下のサブセクションから構成されています。

• 1.7.1 ツールチェーンで使用される環境変数(1-25 ページ).• 1.7.2 一時ファイルディレクトリの TMP および TMPDIR 環境変数(1-27 ページ).

1.7.1 ツールチェーンで使用される環境変数

必要に応じて、環境変数を使用して ARM コンパイラ環境を変更できます。

環境変数は、次のとおりです。

表 1-1 ツールチェーンで使用される環境変数

環境変数 設定

ARM_PRODUCT_PATH DS-5 ツールキットのライセンスがあり、DS-5 環境の外部で ARM コンパイラツールを実行している場合の

み必要となります。

この環境変数を使用して、製品ライセンスのマッピングファイルの場所を指定します。ツールが検索する

のは指定した場所のみです。

ARM_TOOL_VARIANT DS-5 ツールキットのライセンスがあり、DS-5 環境の外部で ARM コンパイラツールを実行している場合の

み必要となります。

この環境変数を使用して、使用しているツールチェーンのバリアントを識別します。ツールは指定された

値を使用します。この値は、ライセンスファイルのライセンス機能の名前の接頭文字であれば 初の "_"文字まで、または接頭文字がない場合は空の文字列になります。詳細については、FAQ の『Why do Isee error: "License checkout for feature &lt;feature_name&gt; was denied by product definition"?』を参照

して下さい。

ARMLMD_LICENSE_FILE この環境変数は、ARM ライセンスファイルの場所を指定するので必ず設定して下さい。環境変数の詳細

については、『ARM® DS-5™ ライセンス管理ガイド』を参照して下さい。

Windows では、ARMLMD_LICENSE_FILE の長さは 260 文字を超えないようにして下さい。

ARMROOT インストールディレクトリルート( install_directory )。

ARMCC5_ASMOPT 標準メイクファイルの外部で使用される追加のアセンブラオプションを定義する、任意に使用できる環境

変数。以下に例を示します。

--licretry

リストされるオプションは、メークファイルの armasm コマンドで指定されるオプションの前に表示されま

す。したがって、この環境変数でリストされるオプションは、メイクファイルで指定されるオプションによって

オーバーライドされます。

1 概要: ARM® コンパイラ1.7 ツールチェーンの環境変数

ARM DUI0529KJ Copyright © 2010-2014 ARM.All rights reserved. 1-25非機密扱い

Page 26: ARM® コンパイラ スタートガイドinfocenter.arm.com/help/...getting_started_guide.pdf · not exported, directly or indirectly, in violation of such export laws. Use of the

表 1-1 ツールチェーンで使用される環境変数 (続き)

環境変数 設定

ARMCC5_CCOPT 標準メイクファイルの外部で使用される追加のコンパイラオプションを定義する、任意に使用できる環境

変数。以下に例を示します。

--licretry

リストされるオプションは、メークファイルの armcc コマンドで指定されるオプションの前に表示されます。

したがって、この環境変数でリストされるオプションは、メイクファイルで指定されるオプションによってオー

バーライドされます。

ARMCC5_FROMELFOPT 標準メイクファイルの外部で使用される追加の fromelf イメージ変換ユーティリティオプションを定義す

る、任意に使用できる環境変数。以下に例を示します。

--licretry

リストされるオプションは、メークファイルの fromelf コマンドで指定されるオプションの前に表示されま

す。したがって、この環境変数でリストされるオプションは、メイクファイルで指定されるオプションによって

オーバーライドされます。

ARMCC5_LINKOPT 標準メイクファイルの外部で使用される追加のリンカオプションを定義する、任意に使用できる環境変数。

以下に例を示します。

--licretry

リストされるオプションは、メークファイルの armlink コマンドで指定されたオプションの前に表示されま

す。したがって、この環境変数でリストされるオプションは、メイクファイルで指定されるオプションによって

オーバーライドされます。

ARMCC5INC デフォルトのシステムインクルードパス。つまり、山形括弧で囲まれたヘッダファイル名を検索するために

コンパイラで使用されるパスです。コンパイラオプション -J はこの環境変数をオーバーライドします。

コンパイラインクルードファイルのデフォルトの場所は、次のとおりです。

install_directory\include

ARMCC5LIB ARM の標準 C ライブラリファイルおよび標準 C++ ライブラリファイルのデフォルトの場所は、次のとおり

です。

install_directory\lib

コンパイラオプション --libpath はこの環境変数をオーバーライドします。

パスの末尾にパスの区切り文字を含めた場合、リンカはそのディレクトリとサブディレクトリを検索します。

つまり、 install_directory\lib\ の場合、リンカは以下の場所を検索します。

install_directory\lib

install_directory\lib\armlib

install_directory\lib\cpplib

ARMINC コンパイラオプション -J を指定しない場合で ARMCC5INC が設定されていないか、空の場合のみに使用

されます。

詳細については、 ARMCC5INC の説明を参照して下さい。

1 概要: ARM® コンパイラ1.7 ツールチェーンの環境変数

ARM DUI0529KJ Copyright © 2010-2014 ARM.All rights reserved. 1-26非機密扱い

Page 27: ARM® コンパイラ スタートガイドinfocenter.arm.com/help/...getting_started_guide.pdf · not exported, directly or indirectly, in violation of such export laws. Use of the

表 1-1 ツールチェーンで使用される環境変数 (続き)

環境変数 設定

ARMLIB コンパイラオプション --libpath を指定しない場合で ARMCC5LIB が設定されていないか、空の場合の

みに使用されます。

詳細については、 ARMCC5LIB の説明を参照して下さい。

CPATH GCC エミュレーションモード --translate_gcc または --translate_g++ が指定されている場合に

armcc によって使用される追加のパスを定義します。

CPLUS_INCLUDE_PATH GCC エミュレーションモード --translate_gcc または --translate_g++ が指定されている場合に

armcc によって使用される追加のインクルードパスを定義します。

C_INCLUDE_PATH GCC エミュレーションモード --translate_gcc または --translate_g++ が指定されている場合に

armcc によって使用される追加のパスを定義します。

CYGPATH Cygwin パス形式で記述されたシステム内の cygpath.exe ファイルの場所。例えば、

C:/cygwin/bin/cygpath.exe

これは、コンパイルツール用に Cygwin 形式でパスを指定する場合に設定する必要があります。

CYGPATH によって有効になる Cygwin パスの変換は 32 ビットの Windows プラットフォームでのみサポー

トされており、Windows Server 2012 と Windows 8 ではサポートされていません。

TMP Windows のプラットフォームによって一時ファイル用のディレクトリを指定するために使用されます。TMPが定義されていないか、存在しないディレクトリの名前に設定されている場合、一時ファイルは現在の作

業ディレクトリに作成されます。

TMPDIR Red Hat Linux のプラットフォームによって一時ファイル用のディレクトリを指定するために使用されます。

TMPDIR が設定されていない場合、通常 /tmp や /var/tmp などのデフォルトの一時ディレクトリが使用

されます。

関連概念

1.9 Windows のコンパイルツールでの Cygwin パスの指定について(1-29 ページ).

関連参照

2.2 コマンドラインオプションを指定する方法(2-35 ページ).

関連情報

ARM DS-5 ライセンス管理ガイド.

1.7.2 一時ファイルディレクトリの TMP および TMPDIR 環境変数

コンパイルツールは、ファイルを処理するときに一時ディレクトリを使用します。

このディレクトリの参照に使用される環境変数は、プラットフォームによって異なります。

• Windows プラットフォームの場合は、TMP を使用します。TMP が定義されていないか、存在しないデ

ィレクトリの名前に設定されている場合、一時ファイルは現在の作業ディレクトリに作成されます。

• Red Hat Linux プラットフォームでは、TMPDIR を使用します。TMPDIR が設定されていない場合、通

常は /tmp や /var/tmp などのデフォルトの一時ディレクトリが使用されます。

TMP および TMPDIR は通常、システム管理者によって設定されます。ただし、ユーザが変更できるように

することも可能です。

1 概要: ARM® コンパイラ1.7 ツールチェーンの環境変数

ARM DUI0529KJ Copyright © 2010-2014 ARM.All rights reserved. 1-27非機密扱い

Page 28: ARM® コンパイラ スタートガイドinfocenter.arm.com/help/...getting_started_guide.pdf · not exported, directly or indirectly, in violation of such export laws. Use of the

1.8 ホスト間でのソースファイルの移植性

ホスト間でソースファイルを移植することができます。

そのためには、以下の手順を実行します。

• ファイル名にはスペースを含めないで下さい。スペースを含むパス名やファイル名を使用する必要がある場合は、パス名またはファイル名を二重引用符(")または単一引用符(')で囲んで下さい。

• パス名を組み込む場合は、絶対パスではなく相対パスを指定して下さい。

• 組み込むパス名ではバックスラッシュ(\)ではなくスラッシュ(/)を使用して下さい、

1 概要: ARM® コンパイラ1.8 ホスト間でのソースファイルの移植性

ARM DUI0529KJ Copyright © 2010-2014 ARM.All rights reserved. 1-28非機密扱い

Page 29: ARM® コンパイラ スタートガイドinfocenter.arm.com/help/...getting_started_guide.pdf · not exported, directly or indirectly, in violation of such export laws. Use of the

1.9 Windows のコンパイルツールでの Cygwin パスの指定について

Windows でコンパイルツールの Cygwin パスを指定するには、環境変数を使用する必要があります。

Windows のデフォルトでは、コンパイルツールはパス名が Windows DOS 形式であることが必要です

(たとえば C:\myfiles)。Cygwin パス名を使用する場合は、CYGPATH 環境変数を システムの

cygpath.exe ファイルの場所に設定します。例えば、

set CYGPATH=C:/cygwin/bin/cygpath.exe

これで、コンパイルツールのコマンドラインオプションで、Cygwin パス形式を使ってファイルの場所を指

定できるようになります。パスは、cygpath.exe によって変換されます。たとえば、ファイル /cygdrive/h/main.c をコンパイルするには、次のコマンドを入力します。

armcc -c --debug /cygdrive/h/main.c

以下のようなパスを引き続き指定することもできます。

• ドライバ文字があるパス。たとえば、C:\ や C:/ など。

• UNC。たとえば、\\computer など。

これらのパスはすでに Windows が解釈できる形式であるためにコンパイルツールによる変換は行われ

ません。

CYGPATH の制限

CYGPATH に関する以下の制約事項に留意して下さい。

• CYGPATH によって有効になる Cygwin パスの変換は 32 ビットの Windows プラットフォームでのみサ

ポートされており、Windows Server 2012 と Windows 8 ではサポートされていません。

• When using a Cygwin style path with spaces or other special terminal characters, the path must bedouble quoted:

— 単一引用符またはエスケープ文字は使用できません。

— パス名でのリテラル二重引用符文字の使用はサポートされていません。

関連参照

1.7 ツールチェーンの環境変数(1-25 ページ).

関連情報

サポートされている Cygwin のバージョン.Cygwin ホーム ページ.

1 概要: ARM® コンパイラ1.9 Windows のコンパイルツールでの Cygwin パスの指定について

ARM DUI0529KJ Copyright © 2010-2014 ARM.All rights reserved. 1-29非機密扱い

Page 30: ARM® コンパイラ スタートガイドinfocenter.arm.com/help/...getting_started_guide.pdf · not exported, directly or indirectly, in violation of such export laws. Use of the

1.10 Rogue Wave のマニュアル

ARM コンパイラ によって使用される Rogue Wave 標準 C++ ライブラリのマニュアルは、ARM Web サイトから入手できます。このマニュアルは、一部の ARM 製品にも付属しています。

コンパイルツールによって使用される Rogue Wave 標準 C++ ライブラリのマニュアルは、以下のとおり

です。

• 『Standard C++ ライブラリクラスリファレンス』。

• 『Standard C++ ライブラリユーザガイド - OEM エディション』。

これらのマニュアルは ARM 製品のドキュメントと共にインストールされている場合があります。インスト

ールされていない場合は、Rogue Wave 標準 C++ ライブラリドキュメントでご覧いただけます。

図 1-1 Rogue Wave の HTML マニュアル

1 概要: ARM® コンパイラ1.10 Rogue Wave のマニュアル

ARM DUI0529KJ Copyright © 2010-2014 ARM.All rights reserved. 1-30非機密扱い

Page 31: ARM® コンパイラ スタートガイドinfocenter.arm.com/help/...getting_started_guide.pdf · not exported, directly or indirectly, in violation of such export laws. Use of the

1.11 参考資料

ARM プロセッサファミリのコード開発に関する補足情報は、ARM からもサードパーティからも入手でき

ます。

ARM の出版物

ARM は自社出版物の定期的な更新・修正を行っています。現在の正誤表および追補表については

ARM Infocenter および ARM のよくある質問(FAQ)を参照して下さい。

準拠するベース規格、ソフトウェアインタフェース、および ARM がサポートしている規格の詳細につい

ては、『Application Binary Interface (ABI) for the ARM Architecture』を参照して下さい。

ARM 製品に関する特定の情報については、以下のマニュアルを参照して下さい。

• ARM アーキテクチャリファレンスマニュアル

• Cortex-A シリーズプロセッサ。

• Cortex-R シリーズプロセッサ。

• Cortex-M シリーズプロセッサ。

• ARM11 プロセッサ。

• ARM9 プロセッサ。

• ARM7 プロセッサ。

他の出版物

ARM コンパイラツールのマニュアルは、C や C++ プログラミング言語の概要を説明することを意図した

ものではありません。C や C++ でのプログラミングを解説するものではなく、また C や C++ 標準のリファ

レンスマニュアルでもありません。プログラミングに関する一般情報については、他の出版物を参照して下さい。

C++ 言語については、以下の出版物を参照して下さい。

• ISO/IEC 14882:2003, C++ Standard.• Stroustrup, B., The C++ Programming Language (3rd edition, 1997).Addison-Wesley Publishing

Company, Reading, Massachusetts.ISBN 0-201-88954-4

C++ プログラミングに関する一般情報については、以下の出版物を参照して下さい。

• Stroustrup, B., The Design and Evolution of C++ (1994).Addison-Wesley Publishing Company,Reading, Massachusetts.ISBN 0-201-54330-3.

初期の設計から現在使用されている言語へ C++ がどのように進化したかを説明しています。

• Vandevoorde, D and Josuttis, N.M. C++ Templates:The Complete Guide (2003).Addison-WesleyPublishing Company, Reading, Massachusetts.ISBN 0-201-73484-2.

• Meyers, S., Effective C++ (1992).Addison-Wesley Publishing Company, Reading,Massachusetts.ISBN 0-201-56364-9.

効果的な C++ 開発を端的に分かりやすく説明したガイドラインです。

• Meyers, S., More Effective C++ (2nd edition, 1997).Addison-Wesley Publishing Company, Reading,Massachusetts.ISBN 0-201-92488-9.

C プログラミングに関する一般情報については、以下の出版物を参照して下さい。

• ISO/IEC 9899:1999, C Standard.

この標準規格は、国家規格団体(フランスの AFNOR、アメリカの ANSI など)から入手できます。

• Kernighan, B.W. and Ritchie, D.M., The C Programming Language (2nd edition, 1988).Prentice-Hall, Englewood Cliffs, NJ, USA.ISBN 0-13-110362-8.

1 概要: ARM® コンパイラ1.11 参考資料

ARM DUI0529KJ Copyright © 2010-2014 ARM.All rights reserved. 1-31非機密扱い

Page 32: ARM® コンパイラ スタートガイドinfocenter.arm.com/help/...getting_started_guide.pdf · not exported, directly or indirectly, in violation of such export laws. Use of the

この本は C 言語の当初の設計者および実装者による共著で、改訂版では ANSI C の要点が追加

されています。

• Harbison, S.P. and Steele, G.L., A C Reference Manual (5th edition, 2002). Prentice-Hall, EnglewoodCliffs, NJ, USA.ISBN 0-13-089592-X.

ANSI C に関する有益な情報を盛り込みながら、C を非常に詳しく解説しているガイドです。

• Plauger, P., The Standard C Library (1991).Prentice-Hall, Englewood Cliffs, NJ, USA.ISBN0-13-131509-9.

C ライブラリに関連する ANSI 標準規格と ISO 標準規格の総合的なガイドです。

• Koenig, A., C Traps and Pitfalls, Addison-Wesley (1989), Reading, Mass.ISBN 0-201-17928-8.

C プログラミングで直面する も一般的な問題点の回避方法を説明しています。C の初心者から上

級者までを対象とした参考書です。

Debug With Arbitrary Record Format(DWARF)デバッグテーブルの標準と ELF 仕様の 新情報につ

いては、The DWARF Debugging Standard の Web サイトを参照して下さい。

以下の出版物では、European Telecommunications Standards Institute(ETSI)の基本操作についての

情報が提供されます。

• ETSI G.191 勧告:Software tools for speech and audio coding standardization。• 『ITU-T Software Tool Library 2005 User's manual』(ETSI G.191 勧告の一部として含まれていま

す)。

• ETSI G723.1 勧告:Dual rate speech coder for multimedia communications transmitting at 5.3 and6.3 kbit/s

• ETSI G.729 勧告:『Coding of speech at 8 kbit/s using conjugate-structure algebraic-code-excitedlinear prediction (CS-ACELP)』

これらの出版物はすべて International Telecommunication Union (ITU) の Web サイトから入手できま

す。

Texas Instruments のコンパイラ組み込み機能に関する出版物は、Texas Instruments の Web サイトから

入手できます。

『ワイヤレス MMX テクノロジデベロッパガイド』は Intel から入手できます。

1 概要: ARM® コンパイラ1.11 参考資料

ARM DUI0529KJ Copyright © 2010-2014 ARM.All rights reserved. 1-32非機密扱い

Page 33: ARM® コンパイラ スタートガイドinfocenter.arm.com/help/...getting_started_guide.pdf · not exported, directly or indirectly, in violation of such export laws. Use of the

第 2 章コンパイルツールの使い方

ARM コンパイラ によって提供されるツールを使用してアプリケーションを作成する方法について説明

します。

以下のセクションから構成されています。

• 2.1 ARM コンパイルツールについて(2-34 ページ).• 2.2 コマンドラインオプションを指定する方法(2-35 ページ).• 2.3 ARM コンパイラコマンド(2-39 ページ).• 2.4 ARM リンカのコマンド(2-41 ページ).• 2.5 ARM アセンブラコマンド(2-42 ページ).• 2.6 fromelf イメージ変換ユーティリティのコマンド(2-43 ページ).

ARM DUI0529KJ Copyright © 2010-2014 ARM.All rights reserved. 2-33非機密扱い

Page 34: ARM® コンパイラ スタートガイドinfocenter.arm.com/help/...getting_started_guide.pdf · not exported, directly or indirectly, in violation of such export laws. Use of the

2.1 ARM コンパイルツールについて

コンパイルツールを使用すると、実行可能イメージ、部分的にリンクされたオブジェクトファイル、および共有オブジェクトファイルをビルドし、イメージを異なる形式に変換できます。

通常、アプリケーション開発には、以下のファイルや作業が必要になります。

• メインアプリケーションの C/C++ ソースコードのコンパイル(armcc)。

• 割り込みサービスルーチンなど、ハードウェアに近いコンポーネントの ARM アセンブリソースコード

(armasm)のアセンブリ。

• すべてのオブジェクトをリンクしてイメージを生成(armlink)。

• イメージをフラッシュメモリ用の形式(プレーンバイナリ形式、Intel Hex 形式、Motorola-S 形式)に変

換(fromelf)。

以下の図は、通常のアプリケーション開発でコンパイルツールがどのように使用されているかを示しています。

フラッシュ形式

.s

armcc

armasm

C/C++ ARM および Thumb

アセンブリ

コード

armlink fromelf

イメージオブジェクトコードソースコード

プレーンバイナリIntel Hex

Motorola-S

.o データ

.o データ

.cコード

デバッグ

コード

デバッグ

コード

データ

デバッグ

図 2-1 一般的なツール使用の流れ図

関連概念

2.3 ARM コンパイラコマンド(2-39 ページ).2.4 ARM リンカのコマンド(2-41 ページ).2.5 ARM アセンブラコマンド(2-42 ページ).2.6 fromelf イメージ変換ユーティリティのコマンド(2-43 ページ).

2 コンパイルツールの使い方2.1 ARM コンパイルツールについて

ARM DUI0529KJ Copyright © 2010-2014 ARM.All rights reserved. 2-34非機密扱い

Page 35: ARM® コンパイラ スタートガイドinfocenter.arm.com/help/...getting_started_guide.pdf · not exported, directly or indirectly, in violation of such export laws. Use of the

2.2 コマンドラインオプションを指定する方法

コマンドラインオプションを直接指定できます。一部のオペレーティングシステムでは、コマンドラインの長さが制限されています。このため、コマンドラインオプションを環境変数またはテキストファイルで指定することもできます。

以下のことができます。

• コマンドラインで、コマンドを直接指定します。ただし、指定できるオプション数はオペレーティングシステムでサポートされているコマンドの長さで制限されています。

• via ファイルと呼ばれるテキストファイルでコマンドを指定します。各ツールには個別の via ファイル

が必要です。via ファイルを使用すると、オペレーティングシステムのコマンドの長さの制限を解決で

きます。

• ツール固有の環境変数を使用します。以下に設定方法を示します。

— アセンブラでは ARMCC5_ASMOPT。— コンパイラでは ARMCC5_CCOPT。— fromelf イメージ変換ユーティリティでは ARMCC5_FROMELFOPT。— リンカでは ARMCC5_LINKOPT。

構文は、コマンドライン構文と同じです。コンパイルツールは、環境変数の値を読み出し、コマンド文字列の前に挿入します。つまり、環境変数で指定されたオプションをコマンドラインの引数でオーバーライドできます。

以下のサブセクションから構成されています。

• 2.2.1 コマンドラインでの特殊文字(2-35 ページ).• 2.2.2 コマンドラインオプションの指定に関する規則(2-36 ページ).• 2.2.3 コマンドラインオプションの順序(2-37 ページ).• 2.2.4 テキストファイル内で使用する場合のコマンドラインオプションの優先度(2-37 ページ).• 2.2.5 コマンドラインオプションの自動補完(2-37 ページ).

2.2.1 コマンドラインでの特殊文字

一部のコンパイルツールコマンド引数で複数のシンボル名を選択するには、以下のような特殊文字を使用できます。

UNIX プラットフォームで特殊文字を使用する場合は、シェルによって文字列展開がされないように、こ

れらのオプションを引用符で囲む必要があります。

• 任意の名前と一致させるワイルドカード文字 *• 任意の 1 文字と一致させるワイルドカード文字 ?

たとえば、*,~*.* の代わりに ’*,~*.*’ と入力します。

armar コマンドラインオプションは、 前に - を付ける必要があります。一部の以前のバージョンの armarおよび一部のサードパーティのアーカイバとは、この点が異なります。

以下に、これらの文字の使用例を示します。

• armar --create mylib.a *.o は、 現在のディレクトリのすべてのオブジェクトファイルを含むライブ

ラリを作成するアーカイブ mylib.a を作成します。

• armar -t mylib.a s*.o は、mylib.a 内の s で始まるすべてのオブジェクトファイルを一覧表示し

ます。

2 コンパイルツールの使い方2.2 コマンドラインオプションを指定する方法

ARM DUI0529KJ Copyright © 2010-2014 ARM.All rights reserved. 2-35非機密扱い

Page 36: ARM® コンパイラ スタートガイドinfocenter.arm.com/help/...getting_started_guide.pdf · not exported, directly or indirectly, in violation of such export laws. Use of the

• armlink hello.o mylib.a(?.o) -o tst.axf は、 hello.o を 1 文字のファイル名を持つ

mylib.a のすべてのオブジェクトファイルにリンクします。

• fromelf --elf --strip=debug mylib.a(s*.o) --output=my_archive.a は、mylib.a 内の s で始まるすべてのオブジェクトファイルからデバッグ情報を削除し、変更ファイルを my_archive.a に格納します。

関連情報

アセンブラのコマンドライン構文.コンパイラのコマンドライン構文.コンパイラコマンドラインオプションのグループ別一覧.リンカのコマンドライン構文.armar のコマンドラインのシンタックス.fromelf のコマンドライン構文.

2.2.2 コマンドラインオプションの指定に関する規則

コマンドラインオプションを利用する場合は、いくつかの規則に従う必要があります。これらの規則は、オプションのタイプによって異なります。

以下の規則が適用されます。

1 文字オプション

すべての 1 文字オプション、または引数を取る 1 文字オプションには、その前に単一ダッシュ

が付けられます。オプションと引数の間にはスペースを挿入することができます。引数はオプションの直後に指定することもできます。以下に例を示します。

-J directory

-Jdirectory

キーワードオプションすべてのキーワードオプション、および引数を取るキーワードオプションには、その前に二重ダッシュ(--)が付けられます。オプションと引数の間には、スペースまたは = 文字を挿入する必

要があります。以下に例を示します。

--depend=file.d

--depend file.d

コンパイルツールオプションの先頭以外で使用されている - または _ には、どちらの文字を使用するこ

ともできます。たとえば、--force_new_nothrow は --force-new-nothrow と同じです。

名前がダッシュで始まるファイルをコンパイルするには、POSIX オプション -- を使用して、後続のすべ

ての引数がコマンドスイッチではなくファイル名として処理されるように指定します。例えば、-ifile_1 というファイルをコンパイルするには、以下のコマンドを使用します。

armcc -c -- -ifile_1

一部の Unix シェルでは、一部のコマンドラインオプションで引数を使うときに、次のように引用符を付け

る必要があります。

--keep='s.o(vect)'

関連情報

アセンブラのコマンドライン構文.コンパイラのコマンドライン構文.コンパイラコマンドラインオプションのグループ別一覧.

2 コンパイルツールの使い方2.2 コマンドラインオプションを指定する方法

ARM DUI0529KJ Copyright © 2010-2014 ARM.All rights reserved. 2-36非機密扱い

Page 37: ARM® コンパイラ スタートガイドinfocenter.arm.com/help/...getting_started_guide.pdf · not exported, directly or indirectly, in violation of such export laws. Use of the

リンカのコマンドライン構文.armar のコマンドラインのシンタックス.fromelf のコマンドライン構文.

2.2.3 コマンドラインオプションの順序

一般的に、コマンドラインオプションは任意の順序で使用できます。ただし、その結果がコマンドラインで組み合わされる他の関連オプションによって異なるオプションもあります。

オプションが同じコマンドラインにある他のオプションをオーバーライドする場合、コマンドラインの 後に近いオプションが優先されます。この規則に従っていないオプションについては、そのオプションに関する説明でその点が明記されています。

--show_cmdline オプションを使用すると、コマンドラインがどのように処理されるかを確認できます。コ

マンドは正規化されて表示されます。

関連情報

--show_cmdline コンパイラオプション.--show_cmdline アセンブラオプション.--show_cmdline リンカオプション.--show_cmdline fromelf オプション.--show_cmdline armar オプション.

2.2.4 テキストファイル内で使用する場合のコマンドラインオプションの優先度

コンパイルツールは、指定されたテキストファイルからコマンドラインオプションを読み出して、ツールに対して指定された追加のオプションと結合します。オプションによっては、他のオプションよりも優先されるものもあります。

コマンドラインオプションの優先度は、以下のものによって決まります。

• コマンドラインオプション。

• コマンドラインでの --via オプションの位置。

オプションを結合した結果と同等のコマンドラインを表示するには、 --show_cmdline オプションを指定

します。たとえば、armcc.txt にオプション --debug --cpu=ARM926EJ-S が含まれている場合は、次の

ようになります。

• armcc -c --show_cmdline --cpu=ARM7TDMI --via=armcc.txt hello.c [armcc --show_cmdline --debug -c --cpu=ARM926EJ-S hello.c]

この場合、--cpu=ARM7TDMI は使用されません。 コマンドラインで、--cpu=ARM926EJ-S が --cpu の後のインスタンスであるためです。

• armcc --via=armcc.via -c --show_cmdline --cpu=ARM7TDMI hello.c [armcc --show_cmdline --debug -c hello.c]

この場合、--cpu=ARM926EJ-S は使用されません。 コマンドラインで、--cpu=ARM7TDMI が --cpu の後のインスタンスであるためです。また、--cpu=ARM7TDMI は --cpu のデフォルトオプションである

ため、出力には表示されません。

2.2.5 コマンドラインオプションの自動補完

自動補完機能を使うと、コマンドラインオプションを短い形式で指定できます。

自動補完機能を使用するには、自動補完する文字列の後にピリオド(.)を入力します。

自動補完機能には、以下の規則が適用されます。

• 引数とピリオドは、等号(=)文字またはスペース文字で区切らなければなりません。

• オプションの引数に自動補完を使用することはできません。

• 自動補完されたオプションが一意になるように十分な数の文字を含める必要があります。

2 コンパイルツールの使い方2.2 コマンドラインオプションを指定する方法

ARM DUI0529KJ Copyright © 2010-2014 ARM.All rights reserved. 2-37非機密扱い

Page 38: ARM® コンパイラ スタートガイドinfocenter.arm.com/help/...getting_started_guide.pdf · not exported, directly or indirectly, in violation of such export laws. Use of the

たとえば、--diag_su.=223 を使用して、 コマンドラインで --diag_suppress=223 を指定します。

--diag.=223 という指定では、--diag. が単一の一意なコマンドラインオプションを特定できないので、

有効ではありません。

関連情報

コンパイラコマンドラインオプションのグループ別一覧.

関連情報

--via コンパイラオプション.--via アセンブラオプション.--via リンカオプション.--via fromelf オプション.--via armar オプション.

2 コンパイルツールの使い方2.2 コマンドラインオプションを指定する方法

ARM DUI0529KJ Copyright © 2010-2014 ARM.All rights reserved. 2-38非機密扱い

Page 39: ARM® コンパイラ スタートガイドinfocenter.arm.com/help/...getting_started_guide.pdf · not exported, directly or indirectly, in violation of such export laws. Use of the

2.3 ARM コンパイラコマンド

コンパイラ armcc を使用すると、C および C++ ソースコードを ARM および Thumb コードにコンパイル

できます。

通常、コンパイラを起動するには以下のように入力します。

armcc [options] file_1 … file_n

複数の入力ファイルを指定できます。コンパイラでは、各ソース入力ファイルに 1 つのオブジェクトファ

イルが生成されます。

C++ ソースからのサンプルイメージのビルド

C++ ファイル shapes.cpp をコンパイルするには、次のようにします。

1. C++ ファイル shapes.cpp を次のコマンドでコンパイルします。

armcc -c --cpp --debug -O1 shapes.cpp -o shapes.o

2. 一般的に使用されるオプションは以下のとおりです。-c

コンパイルのみ(リンクなし)を行うようにコンパイラに指示します。--cpp

コンパイラにソースが C++ であることを指定します。--debug

ソースレベルのデバッグを行うためのデバッグテーブルを追加するようにコンパイラに指示します。

-O1満足できるデバッグビューと優れたコード密度およびパフォーマンスが得られる、制限された 適化を使用してコードを生成するようにコンパイラに指示します。

-o filename指定した filename でオブジェクトファイルを作成するようにコンパイラに指示します。

--arm は、デフォルトのコンパイラオプションです。

3. 次のように、ファイルをリンクします。

armlink shapes.o --info totals -o shapes.axf

4. ELF、DWARF 2、および DWARF 3 と互換性のあるデバッガを使用して、イメージをロードして実行

します。

ARM コードをコンパイルするためのコマンドラインオプション

以下のコンパイラオプションを使用すると、ARM コードが生成されます。

--armThumb コードではなく ARM コードを優先して生成するようにコンパイラに指示します。ただ

し、 #pragma thumb を使用すると、このオプションはオーバーライドされます。

これはデフォルトのコンパイラオプションです。

--arm_onlyARM コードのみを生成するようにコンパイラに指示します。コンパイラは、Thumb コードがター

ゲットアーキテクチャに存在しないかのように動作します。#pragma thumb 宣言は無視されま

す。

Thumb コードをコンパイルするためのコマンドラインオプション

以下のコンパイラオプションを使用すると、Thumb コードが生成されます。

2 コンパイルツールの使い方2.3 ARM コンパイラコマンド

ARM DUI0529KJ Copyright © 2010-2014 ARM.All rights reserved. 2-39非機密扱い

Page 40: ARM® コンパイラ スタートガイドinfocenter.arm.com/help/...getting_started_guide.pdf · not exported, directly or indirectly, in violation of such export laws. Use of the

--thumbARM コードではなく Thumb コードを優先して生成するようにコンパイラに指示します。ただ

し、 #pragma arm を使用すると、このオプションはオーバーライドされます。

関連概念

2.4 ARM リンカのコマンド(2-41 ページ).1.1.3 ARM® コンパイラ での標準への準拠(1-15 ページ).

関連情報

--arm コンパイラオプション.--arm_only コンパイラオプション.#pragma thumb コンパイラオプション.--thumb コンパイラオプション.#pragma arm コンパイラオプション.

2 コンパイルツールの使い方2.3 ARM コンパイラコマンド

ARM DUI0529KJ Copyright © 2010-2014 ARM.All rights reserved. 2-40非機密扱い

Page 41: ARM® コンパイラ スタートガイドinfocenter.arm.com/help/...getting_started_guide.pdf · not exported, directly or indirectly, in violation of such export laws. Use of the

2.4 ARM リンカのコマンド

リンカは、複数のオブジェクトファイルの内容をオブジェクトライブラリの選択した部分と結合して、イメージファイルまたはオブジェクトファイルを生成します。

通常、リンカを起動するには以下のように入力します。

armlink [options] file_1 … file_n

Linking an example object fileオブジェクトファイル shapes.o をリンクするには、以下のコマンドを使用します。

armlink shapes.o --info totals -o shapes.axf

-o出力ファイルとして shapes.axf を指定します。

--info totals入力オブジェクトとライブラリについて、コードとデータのサイズの合計を表示するようにリンカに指示します。

2 コンパイルツールの使い方2.4 ARM リンカのコマンド

ARM DUI0529KJ Copyright © 2010-2014 ARM.All rights reserved. 2-41非機密扱い

Page 42: ARM® コンパイラ スタートガイドinfocenter.arm.com/help/...getting_started_guide.pdf · not exported, directly or indirectly, in violation of such export laws. Use of the

2.5 ARM アセンブラコマンド

アセンブラ(armasm)では、ARM アセンブリコードを ARM および Thumb コードにアセンブルできま

す。

通常、アセンブラを起動するには以下のように入力します。

armasm [options] inputfile

アセンブリソースからのサンプルのビルド

To build the assembler program word.s:

1. ソースファイルをアセンブルします。

armasm --debug word.s

2. 次のように、オブジェクトファイルをリンクします。

armlink word.o -o word.axf

3. ELF、DWARF 2、および DWARF 3 と互換性のあるデバッガを使用して、イメージをロードして実行

します。 プログラムをステップスルーし、レジスタがどのように変更されるかを調べます。

関連概念

1.1.3 ARM® コンパイラ での標準への準拠(1-15 ページ).

関連情報

アセンブラのコマンドライン構文.

2 コンパイルツールの使い方2.5 ARM アセンブラコマンド

ARM DUI0529KJ Copyright © 2010-2014 ARM.All rights reserved. 2-42非機密扱い

Page 43: ARM® コンパイラ スタートガイドinfocenter.arm.com/help/...getting_started_guide.pdf · not exported, directly or indirectly, in violation of such export laws. Use of the

2.6 fromelf イメージ変換ユーティリティのコマンド

fromelf を使用することにより、ELF ファイルをさまざまな形式に変換したり、それらのファイルの情報を

表示したりすることができます。

fromelf イメージ変換ユーティリティには以下の特徴があります。

• ELF 実行可能形式の実行可能イメージを他のファイル形式に変換します。

• 出力ファイル内にデバッグ情報を含めるかどうかの制御。

• ELF イメージや ELF オブジェクトファイルを逆アセンブルします。

• サードパーティに配信されるイメージとオブジェクトの知的所有権(IP)を保護します。

• ELF イメージや ELF オブジェクトファイルに関する情報を出力します。

以下に、fromelf ユーティリティの使用例を示します。

fromelf --text -c -s --output=outfile.lst infile.axf

逆アセンブルされたコードと ELF イメージのシンボルテーブルを含むプレーンテキスト形式の出力ファ

イルを生成します。

fromelf --bin --16x2 --output=outfile.bin infile.axf

2 バンク、16 ビットメモリ幅のメモリコンフィギュレーションを持つターゲットシステム向けに、バイナリ形式

で 2 つのファイル(outfile0.bin および outfile1.bin)を生成します。

2 番目の使用例で生成される出力ファイルは、16 ビットフラッシュメモリデバイスへの直接書き込みに適

しています。

関連情報

fromelf のコマンドライン構文.

2 コンパイルツールの使い方2.6 fromelf イメージ変換ユーティリティのコマンド

ARM DUI0529KJ Copyright © 2010-2014 ARM.All rights reserved. 2-43非機密扱い

Page 44: ARM® コンパイラ スタートガイドinfocenter.arm.com/help/...getting_started_guide.pdf · not exported, directly or indirectly, in violation of such export laws. Use of the

付録 Aスタートガイドのマニュアル(改訂版)

『スタートガイド』に対して加えられた技術的変更について 説明します。

以下のセクションから構成されています。

• A.1 『スタートガイド』に対する改訂(付録-A-45 ページ).

ARM DUI0529KJ Copyright © 2010-2014 ARM.All rights reserved. 付録-A-44非機密扱い

Page 45: ARM® コンパイラ スタートガイドinfocenter.arm.com/help/...getting_started_guide.pdf · not exported, directly or indirectly, in violation of such export laws. Use of the

A.1 『スタートガイド』に対する改訂

『スタートガイド』に対して、以下の技術的変更が加えられました。

表 A-1 発行 J と発行 K の相違点

変更点 関連するトピック

ARM コンパイラでサポートされている機能およびリリース間のコ

ード生成について一般的なメモを追加しました。

1.1 ARM® コンパイラ について(1-12 ページ)

DS-5 でインストールしたときの場所を反映して更新しました。 1.3 64 ビットホストプラットフォームでの ARM® コンパイラ のサポー

ト(1-19 ページ)

ホストプラットフォームのサポートを更新しました。 1.1.2 ARM® コンパイラ のホストプラットフォームサポート

(1-14 ページ)

ARM_PRODUCT_PATH および ARM_TOOL_VARIANT 環境変数に

ついての説明を追加しました。

1.7.1 ツールチェーンで使用される環境変数(1-25 ページ)

並べ替えられたトピックと分類された関連トピックをまとめました。 • 1.1 ARM® コンパイラ について(1-12 ページ)

• 1.3 64 ビットホストプラットフォームでの ARM® コンパイラ のサ

ポート(1-19 ページ)

• 1.7 ツールチェーンの環境変数(1-25 ページ)

• 2.2 コマンドラインオプションを指定する方法(2-35 ページ)

表 A-2 発行 I と発行 J の相違点

変更点 関連するトピック

ホストプラットフォームのサポートを更新 1.1.2 ARM® コンパイラ のホストプラットフォームサポート

(1-14 ページ)

ARM 1176 プロセッサでの BLX(イミディエート)命令発行の回

避に関するトピックを『armlink ユーザガイド』に移動しました。

ARM1176JZ-S または ARM1176JZF-S プロセッサでの BLX(イミディ

エート)命令発行の回避

表 A-3 発行 H と発行 I の相違点

変更点 関連するトピック

NEON ベクトル化コンパイラでは、個別のライセンスの必要がな

くなりましたので、記述を削除しました。• 1.1.1 ARM® コンパイラツールの概要(1-12 ページ)

• 1.5 ARM® コンパイラ のライセンスされた機能(1-23 ページ)

64 ビットリンカでサポートされていない CYGPATH についてのメモ

を追加しました。

• 1.3.1 64 ビットリンカ使用時の注意事項(1-19 ページ)

• 1.7 ツールチェーンの環境変数(1-25 ページ)

• 1.9 Windows のコンパイルツールでの Cygwin パスの指定に

ついて(1-29 ページ)

ホストプラットフォームのサポートを更新しました。また、Red HatEnterprise Linux 6 で 32 ビットの互換性ライブラリに関する情報

を追加しました。

1.1.2 ARM® コンパイラ のホストプラットフォームサポート

(1-14 ページ)

メモから --ltcg への参照を削除し、説明を改めました。 1.3.2 64 ビットのリンカへの変更(スタンドアロン製品)

(1-20 ページ)

A スタートガイドのマニュアル(改訂版)A.1 『スタートガイド』に対する改訂

ARM DUI0529KJ Copyright © 2010-2014 ARM.All rights reserved. 付録-A-45非機密扱い

Page 46: ARM® コンパイラ スタートガイドinfocenter.arm.com/help/...getting_started_guide.pdf · not exported, directly or indirectly, in violation of such export laws. Use of the

表 A-3 発行 H と発行 I の相違点 (続き)

変更点 関連するトピック

『ARM コンパイラツールチェーンおよび GNU ライブラリでの

Linux アプリケーションのビルド』への参照を削除しました。

1.4 ツールチェーンのマニュアルについて(1-21 ページ)

ARM コンパイラで提供される GCC 互換性に関するトピックを追

加しました。

1.6 ARM® コンパイラ で提供される GCC 互換性(1-24 ページ)

表 A-4 発行 F と発行 H の相違点

変更点 関連するトピック

Windows 7 プラットフォームがサポートされるようになりまし

た。

1.1.2 ARM® コンパイラ のホストプラットフォームサポート(1-14 ページ)

表 A-5 発行 E と発行 F の相違点

変更点 関連するトピック

ARMCC5INC などの新しいバージョンの番号付けの方式に環境変

数のリストを更新しました。

• 1.7 ツールチェーンの環境変数(1-25 ページ)

• 2.2 コマンドラインオプションを指定する方法(2-35 ページ).

表 A-6 発行 D と発行 E の相違点

変更点 関連するトピック

ARM 1176 プロセッサでの BLX (イミディエート)命令発行の回避に関

するセクションを追加しました。

トピックをリビジョン J の『armlink ユーザガイド』に移動しまし

た。

表 A-7 発行 C と発行 D の相違点

変更点 関連するトピック

サポートされているプラットフォームのリストに Windows Server 2008 R2 および Ubuntu10.04 LTS 32/64 を追加し、Cygwin サポートについてのメモを記載しました。

サポートされているプラットフォームのリストから Windows Vista および Solaris を削除しま

した。

1.1.2 ARM® コンパイラ のホストプラットフ

ォームサポート(1-14 ページ)

64 ビットのリンカを使用して DS-5 環境を設定する方法についての説明を追加しました。 1.3.2 64 ビットのリンカへの変更(スタンド

アロン製品)(1-20 ページ)

環境変数のリストを更新しました。削除されます。 ARMCCnnBIN はどのツールでも使用さ

れないため、削除しました。

1.7 ツールチェーンの環境変数

(1-25 ページ)

表 A-8 発行 A と発行 B の相違点

変更点 関連するトピック

ツールの一覧に armlink の 64 ビット版に関する詳細を追加しまし

た。

1.1.1 ARM® コンパイラツールの概要(1-12 ページ)

64 ビットのリンカを使用するための変更方法に関するトピックを追加し

ました。

1.3.2 64 ビットのリンカへの変更(スタンドアロン製品)

(1-20 ページ)

A スタートガイドのマニュアル(改訂版)A.1 『スタートガイド』に対する改訂

ARM DUI0529KJ Copyright © 2010-2014 ARM.All rights reserved. 付録-A-46非機密扱い

Page 47: ARM® コンパイラ スタートガイドinfocenter.arm.com/help/...getting_started_guide.pdf · not exported, directly or indirectly, in violation of such export laws. Use of the

表 A-8 発行 A と発行 B の相違点 (続き)

変更点 関連するトピック

64 ビットのリンカを使用するために必要な環境変数を追加しました。 1.7 ツールチェーンの環境変数(1-25 ページ)

armlink の 64 ビット版に関するメモを追加しました。 1.3 64 ビットホストプラットフォームでの ARM® コンパイラ のサポート(1-19 ページ)

A スタートガイドのマニュアル(改訂版)A.1 『スタートガイド』に対する改訂

ARM DUI0529KJ Copyright © 2010-2014 ARM.All rights reserved. 付録-A-47非機密扱い