分页: 1 / 1

编译linux程序设计(第三版)18章的hello world程序过不去

发表于 : 2009-06-21 21:27
zhanglei198429
我是按照书上的指导,一步一步来的,除了修改一下书中指定的内核树目录/usr/src/linux/ -> /usr/src/linux+版本号/,其他的都是按照书上来的。但是书上说有一个/usr/src/linux/include/asm目录,是一个到asm-arch(asm-alpha或者asm-i386)目录的软连接。但是我/usr/src/linux/include/目录里面,没有asm目录。我就按照书上的意思,做了个asm-alpha到asm的软连接。这样也就有了asm的软连接。但是用书上的源代码的makefile进行编译时,总说/usr/src/linux/include/asm/thread_info.h:49:error:invalid register name for '__current_thread_info'的错误。难道是变量定义错误了,还是我的过程有什么错误啊?请问谁知道啊,能告诉我么?
我试了用其他asm-arch的目录软连接asm,所有的目录都比asm-alpha的多。

Re: 编译linux程序设计(第三版)18章的hello world程序过不去

发表于 : 2009-06-21 23:38
zhanglei198429
 编译了一个驱动程序,出现了下面的错误:
gcc -c -I /usr/src/linux-2.4/include -D__KERNEL__ -D__MODULE__ -o test.o test.c
In file included from /usr/src/linux-2.4/include/linux/prefetch.h:13,
from /usr/src/linux-2.4/include/linux/list.h:6,
from /usr/src/linux-2.4/include/linux/module.h:12,
from test.c:2:
/usr/src/linux-2.4/include/asm/processor.h:65: `CONFIG_X86_L1_CACHE_SHIFT' undeclared here (not in a function)
/usr/src/linux-2.4/include/asm/processor.h:65: requested alignment is not a constant
make: *** [test.o] Error 1
  哪位能够解决CONFIG_X86_L1_CACHE_SHIFT没有定义的问题啊?


有的朋友说:
加 编译参数
1. --disable-mencoder
2. --disable--fbdev
试试看

但是我就是不知道把这两个参数怎么加上,是在GCC语句加上么?有人知道答案么?
如果知道的话,请告诉我语句的格式。谢谢了

Re: 编译linux程序设计(第三版)18章的hello world程序过不去

发表于 : 2009-06-23 14:14
zhanglei198429
这么多人看了?没人会去吗?求助啊。

Re: 编译linux程序设计(第三版)18章的hello world程序过不去

发表于 : 2009-06-24 13:46
zhanglei198429
自己解决了。书中的程序是可能是面向内核2.4的,而目前都是面向内核2。6的,所以出现的问题。在网上有不少是面向2.6内核的讲解,看一个就可以了。

Re: 编译linux程序设计(第三版)18章的hello world程序过不去

发表于 : 2011-03-29 17:24
kongzhp
楼主你好,我也遇到这个问题,但我在网上搜了好久都找不到解决办法,直到找到这里,你能提供一下详细的解决方法吗?谢谢~!