Hi,

I am trying to compile some simple code that needs to include mempool.h from the linux kernel to access some memory structures. I am not developing a kernel module. When trying to compile, gcc gives me these strange warnings and errors (shortened):
Code:
$ make
gcc -c -Wall -I/usr/src/linux/include test.c -o test.o
In file included from /usr/src/linux/include/linux/compiler-gcc4.h:4,
                 from /usr/src/linux/include/linux/compiler.h:40,
                 from /usr/src/linux/include/linux/stddef.h:4,
                 from /usr/src/linux/include/linux/list.h:6,
                 from /usr/src/linux/include/linux/wait.h:22,
                 from /usr/src/linux/include/linux/mempool.h:7,
                 from test.c:9:
/usr/src/linux/include/linux/compiler-gcc.h:41:1: warning: "__attribute_pure__" redefined
In file included from /usr/include/features.h:322,
                 from /usr/include/stdio.h:28,
                 from test.c:3:
/usr/include/sys/cdefs.h:206:1: warning: this is the location of the previous definition
In file included from /usr/src/linux/include/linux/compiler.h:40,
                 from /usr/src/linux/include/linux/stddef.h:4,
                 from /usr/src/linux/include/linux/list.h:6,
                 from /usr/src/linux/include/linux/wait.h:22,
                 from /usr/src/linux/include/linux/mempool.h:7,
                 from test.c:9:
/usr/src/linux/include/linux/compiler-gcc4.h:16:1: warning: "__attribute_used__" redefined
In file included from /usr/include/features.h:322,
                 from /usr/include/stdio.h:28,
                 from test.c:3:
/usr/include/sys/cdefs.h:215:1: warning: this is the location of the previous definition
In file included from /usr/src/linux/include/linux/compiler.h:40,
                 from /usr/src/linux/include/linux/stddef.h:4,
                 from /usr/src/linux/include/linux/list.h:6,
                 from /usr/src/linux/include/linux/wait.h:22,
                 from /usr/src/linux/include/linux/mempool.h:7,
                 from test.c:9:
/usr/src/linux/include/linux/compiler-gcc4.h:19:1: warning: "__always_inline" redefined
In file included from /usr/include/features.h:322,
                 from /usr/include/stdio.h:28,
                 from test.c:3:
/usr/include/sys/cdefs.h:277:1: warning: this is the location of the previous definition
In file included from /usr/src/linux/include/linux/kernel.h:16,
                 from /usr/src/linux/include/asm/system.h:4,
                 from /usr/src/linux/include/asm/processor.h:18,
                 from /usr/src/linux/include/linux/prefetch.h:14,
                 from /usr/src/linux/include/linux/list.h:8,
                 from /usr/src/linux/include/linux/wait.h:22,
                 from /usr/src/linux/include/linux/mempool.h:7,
                 from test.c:9:
/usr/src/linux/include/linux/log2.h:52: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘is_power_of_2’
In file included from /usr/src/linux/include/asm/system.h:4,
                 from /usr/src/linux/include/asm/processor.h:18,
                 from /usr/src/linux/include/linux/prefetch.h:14,
                 from /usr/src/linux/include/linux/list.h:8,
                 from /usr/src/linux/include/linux/wait.h:22,
                 from /usr/src/linux/include/linux/mempool.h:7,
                 from test.c:9:
/usr/src/linux/include/linux/kernel.h:172: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘printk_timed_ratelimit’
/usr/src/linux/include/linux/kernel.h:223: error: expected declaration specifiers or ‘...’ before ‘bool’
/usr/src/linux/include/linux/kernel.h:226: error: expected declaration specifiers or ‘...’ before ‘bool’
In file included from /usr/src/linux/include/linux/prefetch.h:14,
                 from /usr/src/linux/include/linux/list.h:8,
                 from /usr/src/linux/include/linux/wait.h:22,
                 from /usr/src/linux/include/linux/mempool.h:7,
                 from test.c:9:
/usr/src/linux/include/asm/processor.h:83: error: ‘CONFIG_X86_L1_CACHE_SHIFT’ undeclared here (not in a function)
/usr/src/linux/include/asm/processor.h:83: error: requested alignment is not a constant
/usr/src/linux/include/asm/processor.h: In function ‘cpuid_count’:
/usr/src/linux/include/asm/processor.h:618: warning: pointer targets in passing argument 1 of ‘native_cpuid’ differ in signedness
/usr/src/linux/include/asm/processor.h:618: warning: pointer targets in passing argument 2 of ‘native_cpuid’ differ in signedness
/usr/src/linux/include/asm/processor.h:618: warning: pointer targets in passing argument 3 of ‘native_cpuid’ differ in signedness
/usr/src/linux/include/asm/processor.h:618: warning: pointer targets in passing argument 4 of ‘native_cpuid’ differ in signedness
In file included from /usr/src/linux/include/linux/wait.h:24,
                 from /usr/src/linux/include/linux/mempool.h:7,
                 from test.c:9:
/usr/src/linux/include/linux/spinlock.h: At top level:
/usr/src/linux/include/linux/spinlock.h:290: error: expected declaration specifiers or ‘...’ before ‘bool’
/usr/src/linux/include/linux/spinlock.h: In function ‘double_spin_lock’:
/usr/src/linux/include/linux/spinlock.h:294: error: ‘l1_first’ undeclared (first use in this function)
/usr/src/linux/include/linux/spinlock.h:294: error: (Each undeclared identifier is reported only once
/usr/src/linux/include/linux/spinlock.h:294: error: for each function it appears in.)
/usr/src/linux/include/linux/spinlock.h: At top level:
/usr/src/linux/include/linux/spinlock.h:309: error: expected declaration specifiers or ‘...’ before ‘bool’
/usr/src/linux/include/linux/spinlock.h: In function ‘double_spin_unlock’:
/usr/src/linux/include/linux/spinlock.h:313: error: ‘l1_taken_first’ undeclared (first use in this function)
make: *** [test.o] Error 1
Example source:
Code:
#define __KERNEL__

#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/mman.h>
#include <sys/stat.h>
#include <linux/mempool.h>

int main() {
        printf("Hello World!");
        return(0);
}
Anyone know how to fix this? Using gcc 4.1.3 and ubuntu 7.10 (2.6.22-14-generic).