Linux开发新手。请问syscalls怎么使用
下面是R&K 第八章系统调用的第一个例子:
#include <linux/syscalls.h>
int main() /* copy input to output */
{
char buf[BUFSIZ];
int n;
while ((n = read(0, buf, BUFSIZ)) > 0)
write(1, buf, n);
return 0;
}
fc7下
设置了 C_INCLUDE_PATH=/usr/src/kernels/2.6.22.9-91.fc7-i686/include
为什么还是有这么多错误? 应该如何编译?
**** Build of configuration Debug for project CTest ****
make all
Building file: ../main.c
Invoking: GCC C Compiler
gcc -I/usr/src/kernels/2.6.22.9-91.fc7-i686/include -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"main.d" -MT"main.d" -o"main.o" "../main.c"
在包含自 /usr/src/kernels/2.6.22.9-91.fc7-i686/include/linux/syscalls.h:61 的文件中,
从 ../main.c:1:
/usr/src/kernels/2.6.22.9-91.fc7-i686/include/linux/list.h:970:2: 警告:#warning "don't include kernel headers in userspace"
In file included from /usr/src/kernels/2.6.22.9-91.fc7-i686/include/asm/siginfo.h:5,
from /usr/src/kernels/2.6.22.9-91.fc7-i686/include/linux/syscalls.h:65,
from ../main.c:2:
/usr/src/kernels/2.6.22.9-91.fc7-i686/include/asm-generic/siginfo.h:58: 错误:数组 ‘_pad’ 太大
In file included from /usr/src/kernels/2.6.22.9-91.fc7-i686/include/asm/bitops.h:10,
from /usr/src/kernels/2.6.22.9-91.fc7-i686/include/linux/bitops.h:10,
from /usr/src/kernels/2.6.22.9-91.fc7-i686/include/asm/cpufeature.h:12,
from /usr/src/kernels/2.6.22.9-91.fc7-i686/include/asm/processor.h:17,
from /usr/src/kernels/2.6.22.9-91.fc7-i686/include/asm/atomic.h:6,
from /usr/src/kernels/2.6.22.9-91.fc7-i686/include/linux/key.h:23,
from /usr/src/kernels/2.6.22.9-91.fc7-i686/include/linux/syscalls.h:68,
from ../main.c:2:
/usr/src/kernels/2.6.22.9-91.fc7-i686/include/asm/alternative.h:9: 错误:expected specifier-qualifier-list before ‘u8’
In file included from /usr/src/kernels/2.6.22.9-91.fc7-i686/include/asm/bitops.h:409,
from /usr/src/kernels/2.6.22.9-91.fc7-i686/include/linux/bitops.h:10,
from /usr/src/kernels/2.6.22.9-91.fc7-i686/include/asm/cpufeature.h:12,
from /usr/src/kernels/2.6.22.9-91.fc7-i686/include/asm/processor.h:17,
from /usr/src/kernels/2.6.22.9-91.fc7-i686/include/asm/atomic.h:6,
from /usr/src/kernels/2.6.22.9-91.fc7-i686/include/linux/key.h:23,
from /usr/src/kernels/2.6.22.9-91.fc7-i686/include/linux/syscalls.h:68,
from ../main.c:2:
/usr/src/kernels/2.6.22.9-91.fc7-i686/include/asm-generic/bitops/fls64.h: 在函数 ‘fls64’ 中:
/usr/src/kernels/2.6.22.9-91.fc7-i686/include/asm-generic/bitops/fls64.h:10: 警告:隐式声明函数 ‘fls’
In file included from /usr/src/kernels/2.6.22.9-91.fc7-i686/include/asm/cpufeature.h:12,
from /usr/src/kernels/2.6.22.9-91.fc7-i686/include/asm/processor.h:17,
from /usr/src/kernels/2.6.22.9-91.fc7-i686/include/asm/atomic.h:6,
from /usr/src/kernels/2.6.22.9-91.fc7-i686/include/linux/key.h:23,
from /usr/src/kernels/2.6.22.9-91.fc7-i686/include/linux/syscalls.h:68,
from ../main.c:2:
/usr/src/kernels/2.6.22.9-91.fc7-i686/include/linux/bitops.h: 在函数 ‘hweight_long’ 中:
/usr/src/kernels/2.6.22.9-91.fc7-i686/include/linux/bitops.h:31: 警告:隐式声明函数 ‘hweight32’
/usr/src/kernels/2.6.22.9-91.fc7-i686/include/linux/bitops.h:31: 警告:隐式声明函数 ‘hweight64’
In file included from /usr/src/kernels/2.6.22.9-91.fc7-i686/include/asm/system.h:8,
from /usr/src/kernels/2.6.22.9-91.fc7-i686/include/asm/processor.h:19,
from /usr/src/kernels/2.6.22.9-91.fc7-i686/include/asm/atomic.h:6,
from /usr/src/kernels/2.6.22.9-91.fc7-i686/include/linux/key.h:23,
from /usr/src/kernels/2.6.22.9-91.fc7-i686/include/linux/syscalls.h:68,
from ../main.c:2:
/usr/src/kernels/2.6.22.9-91.fc7-i686/include/asm/cmpxchg.h: 在顶层:
/usr/src/kernels/2.6.22.9-91.fc7-i686/include/asm/cmpxchg.h:213: 错误:expected declaration specifiers or ‘...’ before ‘u8’
/usr/src/kernels/2.6.22.9-91.fc7-i686/include/asm/cmpxchg.h:213: 错误:expected declaration specifiers or ‘...’ before ‘u8’
/usr/src/kernels/2.6.22.9-91.fc7-i686/include/asm/cmpxchg.h:214: 错误:expected declaration specifiers or ‘...’ before ‘u16’
/usr/src/kernels/2.6.22.9-91.fc7-i686/include/asm/cmpxchg.h:214: 错误:expected declaration specifiers or ‘...’ before ‘u16’
/usr/src/kernels/2.6.22.9-91.fc7-i686/include/asm/cmpxchg.h:215: 错误:expected declaration specifiers or ‘...’ before ‘u32’
/usr/src/kernels/2.6.22.9-91.fc7-i686/include/asm/cmpxchg.h:215: 错误:expected declaration specifiers or ‘...’ before ‘u32’
/usr/src/kernels/2.6.22.9-91.fc7-i686/include/asm/cmpxchg.h: 在函数 ‘cmpxchg_386’ 中:
/usr/src/kernels/2.6.22.9-91.fc7-i686/include/asm/cmpxchg.h:222: 错误:提供给函数 ‘cmpxchg_386_u8’ 的实参太多
/usr/src/kernels/2.6.22.9-91.fc7-i686/include/asm/cmpxchg.h:224: 错误:提供给函数 ‘cmpxchg_386_u16’ 的实参太多
/usr/src/kernels/2.6.22.9-91.fc7-i686/include/asm/cmpxchg.h:226: 错误:提供给函数 ‘cmpxchg_386_u32’ 的实参太多
In file included from /usr/src/kernels/2.6.22.9-91.fc7-i686/include/asm/processor.h:19,
from /usr/src/kernels/2.6.22.9-91.fc7-i686/include/asm/atomic.h:6,
from /usr/src/kernels/2.6.22.9-91.fc7-i686/include/linux/key.h:23,
from /usr/src/kernels/2.6.22.9-91.fc7-i686/include/linux/syscalls.h:68,
from ../main.c:2:
/usr/src/kernels/2.6.22.9-91.fc7-i686/include/asm/system.h: 在函数 ‘sched_cacheflush’ 中:
/usr/src/kernels/2.6.22.9-91.fc7-i686/include/asm/system.h:319: 警告:隐式声明函数 ‘wbinvd’
In file included from /usr/src/kernels/2.6.22.9-91.fc7-i686/include/linux/cpumask.h:87,
from /usr/src/kernels/2.6.22.9-91.fc7-i686/include/asm/processor.h:23,
from /usr/src/kernels/2.6.22.9-91.fc7-i686/include/asm/atomic.h:6,
from /usr/src/kernels/2.6.22.9-91.fc7-i686/include/linux/key.h:23,
from /usr/src/kernels/2.6.22.9-91.fc7-i686/include/linux/syscalls.h:68,
from ../main.c:2:
/usr/src/kernels/2.6.22.9-91.fc7-i686/include/linux/bitmap.h: 在函数 ‘bitmap_zero’ 中:
/usr/src/kernels/2.6.22.9-91.fc7-i686/include/linux/bitmap.h:134: 错误:‘BITS_PER_LONG’ 未声明 (在此函数内第一次使用)
/usr/src/kernels/2.6.22.9-91.fc7-i686/include/linux/bitmap.h:134: 错误:(即使在一个函数内多次出现,每个未声明的标识符在其
/usr/src/kernels/2.6.22.9-91.fc7-i686/include/linux/bitmap.h:134: 错误:所在的函数内只报告一次。)
/usr/src/kernels/2.6.22.9-91.fc7-i686/include/linux/bitmap.h:137: 警告:隐式声明函数 ‘BITS_TO_LONGS’
/usr/src/kernels/2.6.22.9-91.fc7-i686/include/linux/bitmap.h:138: 警告:隐式声明函数 ‘memset’
/usr/src/kernels/2.6.22.9-91.fc7-i686/include/linux/bitmap.h:138: 警告:隐式声明与内建函数 ‘memset’ 不兼容
/usr/src/kernels/2.6.22.9-91.fc7-i686/include/linux/bitmap.h: 在函数 ‘bitmap_fill’ 中:
/usr/src/kernels/2.6.22.9-91.fc7-i686/include/linux/bitmap.h:147: 警告:隐式声明与内建函数 ‘memset’ 不兼容
/usr/src/kernels/2.6.22.9-91.fc7-i686/include/linux/bitmap.h:149: 错误:‘BITS_PER_LONG’ 未声明 (在此函数内第一次使用)
/usr/src/kernels/2.6.22.9-91.fc7-i686/include/linux/bitmap.h: 在函数 ‘bitmap_copy’ 中:
/usr/src/kernels/2.6.22.9-91.fc7-i686/include/linux/bitmap.h:155: 错误:‘BITS_PER_LONG’ 未声明 (在此函数内第一次使用)
/usr/src/kernels/2.6.22.9-91.fc7-i686/include/linux/bitmap.h:159: 警告:隐式声明函数 ‘memcpy’
/usr/src/kernels/2.6.22.9-91.fc7-i686/include/linux/bitmap.h:159: 警告:隐式声明与内建函数 ‘memcpy’ 不兼容
/usr/src/kernels/2.6.22.9-91.fc7-i686/include/linux/bitmap.h: 在函数 ‘bitmap_and’ 中:
/usr/src/kernels/2.6.22.9-91.fc7-i686/include/linux/bitmap.h:166: 错误:‘BITS_PER_LONG’ 未声明 (在此函数内第一次使用)
/usr/src/kernels/2.6.22.9-91.fc7-i686/include/linux/bitmap.h: 在函数 ‘bitmap_or’ 中:
/usr/src/kernels/2.6.22.9-91.fc7-i686/include/linux/bitmap.h:175: 错误:‘BITS_PER_LONG’ 未声明 (在此函数内第一次使用)
...
../main.c: 在函数 ‘main’ 中:
../main.c:5: 错误:‘BUFSIZ’ 未声明 (在此函数内第一次使用)
../main.c:7: 警告:隐式声明函数 ‘read’
../main.c:8: 警告:隐式声明函数 ‘write’
../main.c:5: 警告:未使用的变量 ‘buf’
make: *** [main.o] 错误 1