|  |  | 
|  | Strace has been ported by Branko Lankester <branko@hacktic.nl> | 
|  | to run on Linux systems.  Since then it has been greatly modified | 
|  | by various other people. | 
|  |  | 
|  | If you want to compile strace on a Linux system please make sure that | 
|  | you use recent kernel headers. Strace needs those to get the proper data | 
|  | structures and constatns used by the kernel, since these can be | 
|  | different from the structures that the C library uses. Currently you | 
|  | will need at least a 2.2.7 or newer kernel. | 
|  |  | 
|  | To complicate things a bit further strace might not compile if you are | 
|  | using development kernels. These tend to have headers that conflict with | 
|  | the headers from libc which makes it impossible to use them. | 
|  |  | 
|  | There are three ways to compile strace with other kernel headers: | 
|  | * Specify the location in CFLAGS when running configure | 
|  |  | 
|  | CFLAGS=-I/usr/src/linux/include ./configure | 
|  |  | 
|  | * you can tell make where your kernel sources are. For example if you | 
|  | have your kernelsource in /usr/src/linux, you can invoke make like | 
|  | this: | 
|  |  | 
|  | make CFLAGS="\$CFLAGS -I/usr/src/linux/include" | 
|  |  | 
|  | (the extra \$CFLAGS is there to make sure we don't override any CFLAGS | 
|  | settings that configure has found). | 
|  |  | 
|  | * you can link /usr/include/linux and /usr/include/asm to the | 
|  | corresponding directories in your kernel source-tree. |