「#include <asm/io.h>」により「エラー:asm/io.h:そのようなファイル、又はディレクトリはありません"

StackOverflow https://stackoverflow.com/questions/1953562

質問

私は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

ヘッダー ファイルはあるのですが、見つからないのですか?これが機能しないのはなぜですか?

役に立ちましたか?

解決

あなたがプログラムの作者なのか、それとも誰かから受け取ったプログラムをコンパイルしようとしているだけなのかはわかりませんが、 のように見える #include <asm/io.h> と置き換える必要があります #include <sys/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の/あなたのコンパイルコマンドラインに含まれます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top