「#include <asm/io.h>」により「エラー:asm/io.h:そのようなファイル、又はディレクトリはありません"
-
21-09-2019 - |
質問
私はgentooを使用しており、パラレルポート上のビットを制御するプログラムをコンパイルしようとしています。その上部近くに次の行があります。
#include <asm/io.h>
そして、それに gcc を使用しようとすると、次の出力が生成されます。
ポート.c:4:20:エラー:asm/io.h:そのようなファイル、又はディレクトリはありません
「locate asm/io.h」では、次の結果が得られます。
/usr/src/linux-2.6.32-gentoo/arch/x86/include/asm/io.h
ヘッダー ファイルはあるのですが、見つからないのですか?これが機能しないのはなぜですか?
他のヒント
の決しての/usr/include/asm
にコード/ヘッダを使用します。代わりに/usr/include/sys
のヘッダーを使用します。
あなたは/usr/include/asm/
は、カーネルヘッダの特定のリビジョンに対するあなたのコードを構築して使用してやっています。カーネルヘッダが変更されたときにこれは破損の対象となります。他の場所にリンクすることで、必要に応じてカーネルヘッダを参照するのglibcでのヘッダのより安定したフォームにリンクします。 #ifdef ... #endif
ラインの大規模で複雑な存在である理由のは、ヘッダー内のすべてを浴びせていること。
信託私、あなたはビットいじるパラレルポートを持つために必要なすべてのツールは、おそらく、すべてのあなたが使用することになるだろうから、/usr/include/sys/io.h
になり、適切なreadb()
デバイスに直接writeb()
と/dev/lpX
コールです。
あなたはパスを追加する必要があるかもしれません。 gccのコマンドラインでます:
gcc -I/usr/src/linux-2.6.32-gentoo/arch/x86/include ...
のtry
gcc -I/usr/src/linux-2.6.32-gentoo/arch/x86/include xyx
xyzがコンパイルしようとしているファイルです。
これは、探すためにファイルを含め、コンパイラに指示します。 あなたのインクルードファイルは、異なる場所にある場合、あなたは多くの-Iオプションを持つことができ、このような
gcc -I/usr/src/linux-2.6.32-gentoo/arch/x86/include -I/usr/src/some/Dir xyx
-I / usr / src / linuxディレクトリの-2.6.32-gentooに/アーチ/ x86の/あなたのコンパイルコマンドラインに含まれます。