- 论坛徽章:
- 0
|
我在编写与内核有关的程序时,只要嵌入头文件sched.h,编译时就会出现一大堆错误,下面是一个最简单的例子:
#include <linux/kernel.h>;
#include <unistd.h>;
#include <stdio.h>;
#include <linux/sched.h>;
int main(){
printf("\n" ;
}
redhat 8.0,在root下运行:
gcc -D__KERNEL__ -I/usr/src/linux-2.4.18-14/include test.c -o test
出现大量错误,都与系统在sched.h文件中嵌入的头文件,timer.h,time.h等有关,具体错误如下:
In file included from /usr/include/bits/types.h:143,
from /usr/include/sys/types.h:30,
from t.c:3:
/usr/include/bits/pthreadtypes.h:48: parse error before "size_t"
/usr/include/bits/pthreadtypes.h:51: parse error before "__stacksize"
In file included from /usr/include/sys/types.h:132,
from t.c:3:
/usr/src/linux-2.4.18-14/include/linux/time.h:10: parse error before "time_t"
/usr/src/linux-2.4.18-14/include/linux/time.h:12: parse error before '}' token
/usr/src/linux-2.4.18-14/include/linux/time.h:89: parse error before "time_t"
/usr/src/linux-2.4.18-14/include/linux/time.h:120: field `it_interval' has incomplete type
/usr/src/linux-2.4.18-14/include/linux/time.h:121: field `it_value' has incomplete type
/usr/src/linux-2.4.18-14/include/linux/time.h:125: field `it_interval' has incomplete type
/usr/src/linux-2.4.18-14/include/linux/time.h:126: field `it_value' has incomplete type
In file included from /usr/src/linux-2.4.18-14/include/linux/sched.h:13,
from t.c:4:
/usr/include/linux/times.h:5: parse error before "clock_t"
/usr/include/linux/times.h:7: parse error before "tms_cutime"
/usr/include/linux/times.h:8: parse error before "tms_cstime"
In file included from t.c:4:
/usr/src/linux-2.4.18-14/include/linux/sched.h:15:26: linux/rbtree.h: No such file or directory
In file included from /usr/include/linux/bitops.h:69,
from /usr/include/asm/system.h:7,
from /usr/src/linux-2.4.18-14/include/linux/sched.h:17,
from t.c:4:
/usr/include/asm/bitops.h:333:2: warning: #warning This includefile is not available on all architectures.
/usr/include/asm/bitops.h:334:2: warning: #warning Using kernel headers in userspace.
In file included from /usr/include/linux/signal.h:4,
from /usr/src/linux-2.4.18-14/include/linux/sched.h:26,
from t.c:4:
/usr/include/asm/signal.h:119: parse error before "size_t"
In file included from /usr/include/linux/signal.h:5,
from /usr/src/linux-2.4.18-14/include/linux/sched.h:26,
from t.c:4:
/usr/include/asm/siginfo.h:48: parse error before "clock_t"
/usr/include/asm/siginfo.h:62: parse error before '}' token
/usr/include/asm/siginfo.h:63: parse error before '}' token
In file included from t.c:4:
/usr/src/linux-2.4.18-14/include/linux/sched.h:29:31: linux/low-latency.h: No such file or directory
In file included from /usr/src/linux-2.4.18-14/include/linux/sched.h:86,
from t.c:4:
/usr/include/linux/timer.h:32: field `vec' has incomplete type
/usr/include/linux/timer.h:37: field `vec' has incomplete type
/usr/include/linux/timer.h:45: parse error before "spinlock_t"
/usr/include/linux/timer.h:53: parse error before '}' token
/usr/include/linux/timer.h:63: field `list' has incomplete type
/usr/include/linux/timer.h:67: parse error before "tvec_base_t"
/usr/include/linux/timer.h:101: parse error before "tvec_bases"
/usr/include/linux/timer.h: In function `init_timer':
/usr/include/linux/timer.h:105: dereferencing pointer to incomplete type
/usr/include/linux/timer.h:105: dereferencing pointer to incomplete type
/usr/include/linux/timer.h:106: dereferencing pointer to incomplete type
/usr/include/linux/timer.h: In function `timer_pending':
/usr/include/linux/timer.h:121: dereferencing pointer to incomplete type
请问该如何解决? |
|