このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
コンパイラの問題のトラブルシューティング
コンパイラ バージョンの不一致エラー
説明
ビルド プロセスはコンパイラ バージョンの不一致エラーを生成します。
アクション
サポート対象で互換性のあるコンパイラの一覧を
www.mathworks.com/support/compilers/current_release/
で確認します。コンパイラをアップグレードまたは変更します。詳細については、コンパイラの選択と構成を参照してください。
モデルをリビルドします。
モデル シミュレーションとプログラム実行の結果が異なる
説明
モデルに対して生成されたプログラムからモデル シミュレーション結果と異なる結果が生成されます。生成されたソース コードには符号付き整数のオーバーフローを生成する算術演算が含まれます。コンパイラが、符号付き整数のオーバーフロー状態でラップ動作を実装しない可能性があります。あるいは、ラップ動作をサポートするコンパイラを使用している場合、-fwrapv
オプションを使用するようにコンパイラを設定していない可能性があります。
詳細については、「Code Generator Relies on Undefined Behavior of C Language for Integer Overflows」を参照してください。
アクション
コンパイラがラップ動作を強制できる場合は、オンにする。たとえば、gcc コンパイラまたは gcc ベースのコンパイラ (MinGW など) の場合、コンパイラ オプション
-fwrapv
を指定します。整数のオーバーフローを確認するコンパイラを選択する。
Embedded Coder® を使用している場合、符号付き整数に生成されたコードを置換するコード置換ライブラリを開発して適用する。
予想どおりのコードの生成と予期しない結果の生成
説明
ビルド プロセスでは予想どおりのソース コードが生成されますが、実行可能プログラムでは予期しない結果が生成されます。生成されたソース コードは予想どおりに表示されます。しかし、実行可能プログラムでは予期しない結果が生成されます。
アクション
次のいずれかを行います。
コンパイラの最適化レベルを下げます。
[コンパイラ最適化レベル] コンフィギュレーション パラメーターを
[カスタム]
に設定します。[カスタム コンパイラ最適化フラグ] フィールドで、最適化レベルを低く指定します。
モデルをリビルドします。
コンパイラの最適化を無効にします。
[コンパイラ最適化レベル] を
[最適化オフ (高速にビルド)]
に設定します。モデルをリビルドします。
詳細については、コンパイラの最適化の制御およびコンパイラのドキュメンテーションを参照してください。
コンパイル時の問題
問題 | アクション |
---|---|
コンパイラ構成にエラーが存在します。 | 使用するコンパイラとバージョンが MATLAB® でサポートされていることを確認してください。現在サポートされており、互換性があるコンパイラの一覧については、 |
環境変数が make ユーティリティ、コンパイラまたはリンカーに誤って設定されています。たとえば、Cygwin ツールを Windows プラットフォームにインストールすると、他のコンパイラで使用中の環境変数にも影響が出ます。 | Windows プラットフォームで |
S-Function ブロックとして指定されたカスタム コード、または [カスタム コード] にエラーが存在します。たとえば、コードがコンパイラで見つけることのできないヘッダー ファイルを参照しています。 | 問題の原因を切り分けるには、カスタム コードをモデルから削除し、デバッグして、モデルをリビルドします。 |
現在選択されているシステム ターゲット ファイルで使用するためのものではないブロック (デバイス ドライバー ブロックなど) がモデルに含まれています。 | システム ターゲット ファイル固有のブロックを削除するか、別のシステム ターゲット ファイルで使用するようにモデルを構成します。 |
モデル ビルドにおいて、モデル参照階層から実行可能プログラムを生成し、次のすべての条件に該当するときに、データへの未定義の参照に関するリンカー エラーが表示されます。
| この問題を解決するには、次のいずれかの方法を選択します。
|
LCC コンパイラがソース フォルダー パスでアンパサンドをサポートしない
説明
LCC コンパイラを使用していて、モデルのフォルダー パスにアンパサンド (&
) が含まれている場合、ビルド プロセスによってエラーが生成されます。
アクション
モデルのフォルダー パスからアンパサンドを削除します。次にモデルをリビルドします。
LCC コンパイラがラピッド アクセラレータ コードの行の長さに対応していない可能性がある
説明
ラピッド アクセラレータ コードをコンパイルしている場合、LCC コンパイラは行制限に関するエラーを生成する可能性があります。ラピッド アクセラレータ コードの行は、難読化のためにより長くなる可能性があります。
アクション
より長いコード行をサポートするコンパイラを使用して、ラピッド アクセラレータ コードをコンパイルします。
関連するトピック
- コンパイラの選択と構成
- C または C++ プログラミング言語の選択
- Simulink モデルから生成されたコードのビルドに使用するアプローチ
- リアルタイム システムのビルド プロセス ワークフロー
- モデルのリビルド
- 並列ビルドを使用した参照モデルのビルド時間の短縮
- 最上位モデル コードの再生成の制御
- 生成コードの移動または共有
- コンパイラの最適化の制御
- C または C++ コンパイラの選択と設定
- 実行可能プログラムの生成