私は GNU/Linux (Lubuntu 11.10) を初めて使用し、2001 年の Linux プログラミングの本から C ソース コードをコンパイルしようとしています。GNU/Linux にヘッダー ファイルが含まれていることについて多少混乱しています。
このプログラムは、John R. Hall ほか (2001 年) による著書『 Programming Linux Games』の「simplefb.c」です。フレームバッファを使用したコンソールプログラミングの章に直接ジャンプしましたが、すぐに問題が発生しました。単純な非 GUI (および非「テキスト」) ゲームを Linux 上の C で作成して楽しみたいと思います...
問題は、ヘッダー ファイルへのいくつかの #includes にあるようです。
#include <asm/page.h>
#include <sys/mman.h>
#include <sys/ioctl.h>
#include <linux/fb.h>
本に記載されているコードを試してみてください:
> cc the_file.c
は
致命的なエラーを返します: asm/page.h: そのようなファイルまたはディレクトリのコンパイルは終了しませんでした。
実際、これらのファイルは別の場所にあるようです (最近では?) ので、最初の #include だけを次のように修正してみました。
#include </usr/src/linux-headers-3.0.0-17-generic/include/asm-generic/page.h>
> uname -r 3.0.0-17-generic のため、この特定のヘッダー フォルダーを選択しました (/usr/src/ にいくつかあります)。
#include を修正すると、コンパイル エラーが発生します。
the_file.c からインクルードされたファイル
/usr/src/linux-headers-3.0.0-17-generic/include/asm-generic/page.h:96:38: 致命的なエラー: asm-
generic/memory_model.h: いいえそのようなファイルまたはディレクトリ
のコンパイルは終了しました。
その page.h を見ると、include asm-generic/memory_model.h が指定されています (この行が正しく表示されないため、ハッシュと「タグ」を削除しました) が、このファイルは同じフォルダーに存在します。
それで、私がワイルドグースチェイスに行く前に(最初に前のインクルードの asm-generic/ ビットを削除して引用符で囲みます)、ここで使用すべき正しい手順は何ですか? 本のソースコードをコンパイルする明確な正しい方法はありますか?
ありがとうございました。どんな助けにも最も感謝します。