Probleme mit System Calls und Kernel Funktionen
-
Hallo,
ich versuche ein Programm unter Linux zu schreiben, dass auf Kernelroutinen wie sys_call_table zugreift. Wenn ich es allerdings kompilieren möchte, bekomme ich folgende Fehlermeldung zurück:
mckey.o(.text+0x1f): In function
main': : undefined reference to
sys_call_table'
collect2: ld returned 1 exit status
make: *** [dbf] Error 1Codeauszug:
#include <linux/config.h> #include <linux/types.h> #include <linux/kernel.h> #include <linux/string.h> #include <sys/syscall.h> // export the structure extern void *sys_call_table[]; int (*original_read)(unsigned int fd, char *sign, size_t bytes); int mckey_read (unsigned int fd, char *sign, size_t bytes) { return original_read (fd, sign, bytes); } int main (int argc, char **argv) { original_read = sys_call_table[ SYS_mkdir ]; return 0; }
Kompiliert wird das ganze mit:
/usr/bin/gcc -O2 -D__KERNEL__ -Wall -o mckeyd mckey.oIch bin mir fast sicher, dass beim Aufruf vom gcc was fehlt, aber was, das ist das Problem.