我是 GNU/Linux (Lubuntu 11.10) 的新手,正在尝试从 2001 年的 Linux 编程书中编译一些 C 源代码。我对在 GNU/Linux 中包含头文件感到有些困惑。
该程序是John R. Hall 等人 (2001)的Programming Linux Games一书中的“simplefb.c” 。我直接跳到了使用帧缓冲区进行控制台编程的章节,但立即遇到了这个问题。只是想在 Linux 上用 C 语言制作一些简单的非 GUI(和非“文本”)游戏,以获得乐趣......
问题似乎与头文件的一些#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>
我选择了这个特定的标题文件夹(/usr/src/ 中有几个),因为
> uname -r
3.0.0-17-generic
使用修改后的#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,它指定包含 asm-generic/memory_model.h(删除了散列和“标签”,否则该行将不会正确显示在此处),但该文件确实存在于同一文件夹中。
所以,在我继续追逐野鹅之前(首先删除前一个包含的 asm-generic/ 位并将其放在引号中),我应该在这里使用什么正确的程序?有没有明显正确的方法来编译本书的源代码?
谢谢你。将不胜感激任何帮助。