PDA

View Full Version : [C] Problema compilazione


magix2003
13-05-2007, 18:07
Ciao a tutti,

stavo leggendo questo articolo (http://www.linuxjournal.com/node/6100) sulla funzione ptrace e volevo compilare il primo esempio:


#include <sys/ptrace.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
#include <linux/user.h> /* For constants
ORIG_EAX etc */
int main()
{ pid_t child;
long orig_eax;
child = fork();
if(child == 0) {
ptrace(PTRACE_TRACEME, 0, NULL, NULL);
execl("/bin/ls", "ls", NULL);
}
else {
wait(NULL);
orig_eax = ptrace(PTRACE_PEEKUSER,
child, 4 * ORIG_EAX,
NULL);
printf("The child made a "
"system call %ld\n", orig_eax);
ptrace(PTRACE_CONT, child, NULL, NULL);
}
return 0;
}



ma ricevo questo output:
giorgio@ubuntu:~/os/Project$ gcc -o ptrace ptrace.c
ptrace.c: In function ‘main’:
ptrace.c:19: error: ‘ORIG_EAX’ undeclared (first use in this function)
ptrace.c:19: error: (Each undeclared identifier is reported only once
ptrace.c:19: error: for each function it appears in.)
ptrace.c:21: warning: incompatible implicit declaration of built-in function ‘printf’

Qualcuno sa perché? Devo specificare qualche link al compilatore?

-fidel-
13-05-2007, 18:27
Ciao a tutti,

stavo leggendo questo articolo (http://www.linuxjournal.com/node/6100) sulla funzione ptrace e volevo compilare il primo esempio:


#include <sys/ptrace.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
#include <linux/user.h> /* For constants
ORIG_EAX etc */
int main()
{ pid_t child;
long orig_eax;
child = fork();
if(child == 0) {
ptrace(PTRACE_TRACEME, 0, NULL, NULL);
execl("/bin/ls", "ls", NULL);
}
else {
wait(NULL);
orig_eax = ptrace(PTRACE_PEEKUSER,
child, 4 * ORIG_EAX,
NULL);
printf("The child made a "
"system call %ld\n", orig_eax);
ptrace(PTRACE_CONT, child, NULL, NULL);
}
return 0;
}



ma ricevo questo output:
giorgio@ubuntu:~/os/Project$ gcc -o ptrace ptrace.c
ptrace.c: In function ‘main’:
ptrace.c:19: error: ‘ORIG_EAX’ undeclared (first use in this function)
ptrace.c:19: error: (Each undeclared identifier is reported only once
ptrace.c:19: error: for each function it appears in.)
ptrace.c:21: warning: incompatible implicit declaration of built-in function ‘printf’

Qualcuno sa perché? Devo specificare qualche link al compilatore?

#include <asm/ptrace.h>
oppure
#include <sys/reg.h>
(meglio la seconda, visto che includi sys/ptrace.h)

...e includi pure stdio.h (per il warning su printf)...

magix2003
14-05-2007, 07:17
Grazie mille per la rapida risposta....

Cheers