8

私は gentoo を使用しており、パラレル ポートのビットを制御するプログラムをコンパイルしようとしています。上部近くに次の行があります。

#include <asm/io.h>

その上で gcc を使用しようとすると、次の出力が生成されます。

port.c:4:20: エラー: asm/io.h: そのようなファイルまたはディレクトリはありません

"locate asm/io.h" は (とりわけ) 生成します:

/usr/src/linux-2.6.32-gentoo/arch/x86/include/asm/io.h

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

4

5 に答える 5

11

あなたがプログラムの作成者なのか、誰かから入手したプログラムをコンパイルしようとしているだけ #include <asm/io.h>のかはわかりませんが、#include <sys/io.h>. 詳細については、この Google 検索の結果を参照してください。

于 2009-12-23T16:09:22.210 に答える
4

のコード/ヘッダーは使用しない/usr/include/asmでください。/usr/include/sys代わりにヘッダーを使用してください。

使用して行っていること/usr/include/asm/は、カーネル ヘッダーの特定のリビジョンに対してコードをビルドすることです。これは、カーネル ヘッダーが変更されると破損する可能性があります。別の場所にリンクすることで、必要に応じてカーネル ヘッダーを参照する、より安定した形式の glibc のヘッダーにリンクします。#ifdef ... #endifそのため、すべてのヘッダーに大量の複雑な行が散りばめられています。

信じてください。パラレル ポートをいじるのに必要なすべてのツールは にあります。おそらく、使用するのは適切なデバイスへの/usr/include/sys/io.h直接呼び出しだけだからです。readb()writeb()/dev/lpX

于 2010-11-11T06:54:08.977 に答える
0

パスを追加する必要がある場合があります。gcc コマンドラインで:

gcc -I/usr/src/linux-2.6.32-gentoo/arch/x86/include ...
于 2009-12-23T15:53:37.630 に答える
0

試す

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
于 2009-12-23T15:53:53.167 に答える
0

-I/usr/src/linux-2.6.32-gentoo/arch/x86/include をコンパイル コマンド ラインに追加します。

于 2009-12-23T15:54:14.600 に答える