Systrace 1.6f编译错误

时间:2012-08-08 02:54:59

标签: c gcc

我正在尝试在Ubuntu 12.04 32位版本上编译Systrace-1.6f。我发现下面的错误。

root@sharma-VM:/home/sharma/Desktop/systrace-1.6f# make
make  all-recursive
make[1]: Entering directory `/home/sharma/Desktop/systrace-1.6f'
Making all in .
make[2]: Entering directory `/home/sharma/Desktop/systrace-1.6f'
gcc -DHAVE_CONFIG_H -I.     -Wall  -c systrace-translate.c
In file included from systrace-translate.c:54:0:
linux_fcntl.h:90:2: error: unknown type name ‘linux_off_t’
linux_fcntl.h:91:2: error: unknown type name ‘linux_off_t’
linux_fcntl.h:92:2: error: unknown type name ‘linux_pid_t’
linux_fcntl.h:98:9: error: unknown type name ‘linux_loff_t’
linux_fcntl.h:99:9: error: unknown type name ‘linux_loff_t’
linux_fcntl.h:100:9: error: unknown type name ‘linux_pid_t’
make[2]: *** [systrace-translate.o] Error 1
make[2]: Leaving directory `/home/sharma/Desktop/systrace-1.6f'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/sharma/Desktop/systrace-1.6f'
make: *** [all] Error 2

请建议我解决上述错误。

1 个答案:

答案 0 :(得分:0)

关于特定程序的这个问题太具体了,无法在SO上询问。但是我遇到了同样的问题,这就是我找到它的方式。

grep是你的帮手!您可以grep -rsli linux_off_t找出它位于linux_types.h中。另一个问题,为什么它不起作用,但如果你只是想进一步,插入以下行

#undef _LINUX_TYPES_H
#include "linux_types.h"

linux_fcntl.h开头的某个地方。

然后你会遇到另一个问题。将所有对cs的引用替换为xcs。我上次使用汇编程序花了一段时间。所以我不知道这些日期是否就是这个寄存器的调用方式,但这就是我在struct user_regs_struct/usr/include/i386-linux-gnu/sys/user.h看到的内容。

尽管如此,它仍未通过第二次回归测试。

systrace尚未更新很长一段时间,可能与3.x内核不完全兼容。我不是内核专家。