私はGNU/Linux(Lubuntu 11.10)を使い慣れていて、Linuxプログラミングの本の中からいくつかのCソースコードをコンパイルしようとしています2001年から。GNU/Linuxにヘッダーファイルを含めることについて多少混乱しています。#Ubuntuの古いCソース(page.hなど)に特定のヘッダファイルをインクルード
このプログラムは、書籍「プログラミングLinuxゲーム」(John R. Hall et al(2001))の「simplefb.c」です。私はフレームバッファでコンソールプログラミングの章にまっすぐ飛び乗ったが、この即座に突っ込んだ。ちょうど楽しみのためのLinux上でCゲームでいくつかの簡単な非GUI(および非'text ')をしたいと思います...
問題は、ヘッダファイルには、数の#includeであるように思わ:
#include <asm/page.h>
#include <sys/mman.h>
#include <sys/ioctl.h>
#include <linux/fb.h>
本で示されたように、コードを試みる
:ASM/page.h:終了しないようなファイルまたはディレクトリ コンパイル
> CC the_file.c
は
致命的なエラーが発生します。
そして実際、これらのファイルはどこか別の場所に住んでいるようですので、私が最初にちょうど最初の#includeを改正しようとした(この頃?):
#include </usr/src/linux-headers-3.0.0-17-generic/include/asm-generic/page.h>
私は、ヘッダーのこの特定のフォルダを選択しました(でいくつかがあります/ usr/src /)ので
>は、uname -r改正の#includeで
3.0.0-17-ジェネリック、I番目アンコンパイルエラーを取得:ファイルで
を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で見て、それが を指定するには、ASM-ジェネリック/ memory_model.h (この行はそうでない場合は正常にここに表示されませんようhashsと「タグ」を削除) を含むが、このファイルが存在しません同じフォルダにあります。
私は野生のガチョウの追跡に先立ち(前のインクルードのasm-generic/bitを削除して引用符で囲む)、ここで使用する正しい手順は何ですか?本のソースコードをコンパイルするための明白な正しい方法はありますか?
ありがとうございます。助けを借りて最も感謝します。 GCCへ
補足:私はあなたの本のサンプルコードをここにダウンロードしました:http://nostarch.com/download/plg-listings-08-07-2001.tar.gzあなたは絶対にユーザースペースヘッダ(例えば/ usr /include/linux/fb.h)であり、Linuxカーネルヘッダではありません! – paulsm4