2012-08-08 59 views
0

我想在Ubuntu 12.04 32bit版上编译Systrace-1.6f。我发现下面的错误。Systrace 1.6f Compliation error

 
[email protected]:/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

关于特定程序的这个问题太具体,无法在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内核不太兼容。但我不是内核专家。