記事 ID: 000085005 コンテンツタイプ: トラブルシューティング 最終改訂日: 2012/10/16

Nios IIでalt_getchar() を使用しようとすると、「getc への未定義参照」というエラーが表示されるのはなぜですか?

環境

BUILT IN - ARTICLE INTRO SECOND COMPONENT
詳細

この問題は、[Small C library] オプションがオンで[ライトウェイト・デバイス・ドライバー API を有効にする] オプションがオフになっている場合に発生する場合があります。

「Small C Library を有効にする」オプションは、ST WARRANT ルーチンを含む、Nios II・ボード・サポート・パッケージ (BSP) から多くの機能を削除する効果があります。 これらの関数には、getc() を呼び出すルーチン getchar() が含まれています。

「ライトウェイト・デバイス・ドライバー API を有効にする」では、alt_getchar()、alt_putstr()、alt_printf()、alt_putchar() の機能を最適化します。 このオプションを選択しないと、これらの関数は直接 getchar()、putstr()、printf() および putchar() の C ライブラリーと同等のライブラリーを呼び出します。

したがって、[Small C Library を有効にする] をオンにして [Lightweight Device Driver API を有効にする] をオフにすると、alt_getchar() は getchar() 関数にマップされます。これはライブラリーに入っていません。

alt_getchar機能を正常に使用するには、BSP 設定で [Small C ライブラリーを有効にする] のチェックマークを外すか、[Lightweight Device Driver API を有効にする] を有効にする必要があります。

解決方法

この問題は、[Small C library] オプションがオンで[ライトウェイト・デバイス・ドライバー API を有効にする] オプションがオフになっている場合に発生する場合があります。

「Small C Library を有効にする」オプションは、STNUMA ルーチンを含む、Nios II・ボード・サポート・パッケージ (BSP) から多くの機能を削除する効果があります。 これらの関数には、getc() を呼び出すルーチン getchar() が含まれています。

「ライトウェイト・デバイス・ドライバー API を有効にする」では、alt_getchar()、alt_putstr()、alt_printf()、alt_putchar() の機能を最適化します。 このオプションを選択しないと、これらの関数は直接 getchar()、putstr()、printf() および putchar() の C ライブラリーと同等のライブラリーを呼び出します。

したがって、[Small C Library を有効にする] をオンにして [Lightweight Device Driver API を有効にする] をオフにすると、alt_getchar() は getchar() 関数にマップされます。これはライブラリーに入っていません。

alt_getchar機能を正常に使用するには、BSP 設定で [Small C library を有効にする] のチェックマークを外すか、[Lightweight Device Driver API を有効にする] を有効にする必要があります。

関連製品

本記事の適用対象: 1 製品

インテル® プログラマブル・デバイス

このページのコンテンツは、元の英語のコンテンツを人力翻訳および機械翻訳したものが混在しています。この内容は参考情報および一般的な情報を提供するためものであり、情報の正確さと完全性を保証するものではありません。インテルは不正確な翻訳があった場合でもいかなる責任を負いません。このページの英語版と翻訳の間に矛盾がある場合は、英語版に準拠します。 このページの英語版をご覧ください。