我正在尝试在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
请建议我解决上述错误。
答案 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内核不完全兼容。我不是内核专家。