0

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

root@sharma-VM:/home/sharma/Desktop/systrace-1.6f# make
使所有递归
make[1]: 进入目录`/home/sharma/Desktop/systrace-1.6f'
全力以赴。
make[2]: 进入目录`/home/sharma/Desktop/systrace-1.6f'
gcc -DHAVE_CONFIG_H -I。-Wall -c systrace-translate.c
在 systrace-translate.c:54:0 包含的文件中:
linux_fcntl.h:90:2: 错误: 未知类型名称 'linux_off_t'
linux_fcntl.h:91:2: 错误: 未知类型名称 'linux_off_t'
linux_fcntl.h:92:2: 错误: 未知类型名称 'linux_pid_t'
linux_fcntl.h:98:9: 错误: 未知类型名称 'linux_loff_t'
linux_fcntl.h:99:9: 错误: 未知类型名称 'linux_loff_t'
linux_fcntl.h:100:9: 错误: 未知类型名称 'linux_pid_t'
make[2]: *** [systrace-translate.o] 错误 1
make[2]: 离开目录`/home/sharma/Desktop/systrace-1.6f'
make[1]: *** [all-recursive] 错误 1
make[1]: 离开目录`/home/sharma/Desktop/systrace-1.6f'
make: *** [全部] 错误 2

请建议我解决上述错误。

4

1 回答 1

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 内核不完全兼容。虽然我不是内核专家。

于 2012-08-10T03:50:54.470 回答