Linux Systemtap脚本到C代码的转换和编译

Linux Systemtap脚本到C代码的转换和编译,linux,gcc,architecture,systemtap,Linux,Gcc,Architecture,Systemtap,我的学期项目是一个网络级反恶意软件软件软件。它的主要组件是管理器和代理。 代理向经理提供: 1. CPU usage, Memory usage and B/W usage information 2. Network related Information - Network Profiling Function calls from Network Sockets TCP packets related information 3. Disk Related

我的学期项目是一个网络级反恶意软件软件软件。它的主要组件是管理器和代理。 代理向经理提供:

1. CPU usage, Memory usage and B/W usage information

2. Network related Information - 

    Network Profiling
    Function calls from Network Sockets
    TCP packets related information

3. Disk Related Information - 

    I/O monitoring
    File Read/Writes
    File Attribute changes

4. General Profiling

    Function calls
    Call Graph
    Frequently used system calls
    call volume per process
这四个功能中的每一个都实现为线程。我们的平台是Linux。我们找到了一个叫做systemtap的工具

我们发现这是一个更好的选择,而不是利用诸如top、ifstat、tcpdump等linux命令。实际上,所要做的就是从代理Java程序调用脚本或可执行文件

“systemtap”使用的所有脚本都是用systemtap脚本语言编写的。前端工具(stap)将此脚本转换为C代码,然后将其编译为内核文件

stap--tmpdir=/home/test/nettop.stp

通过使用上面的命令,我成功地获得了转换后的C代码文件。但由于依赖性问题,无法编译该文件

gcc nettop.c nettop.c:10:29:致命错误:运行时定义。h:没有这样的文件或目录 编译已终止。

gcc-B/usr/share/systemtap/runtime/-B/usr/src/kernels/3.3.1-3.fc16.x86\u 64/include/nettop.c nettop.c:10:29:致命错误:运行时定义。h:没有这样的文件或目录 编译已终止。

gcc--sysroot=/usr/nettop.c nettop.c:10:29:致命错误:运行时定义。h:没有这样的文件或目录 编译已终止。

systemtap运行时标头都使用linux/header格式,表示systemtap的类路径设置为/usr/。/../../../../../../../include。将所有标题复制到特定文件夹很容易,但编辑它们以反映正确的路径名是不可能的。有106个运行时头引用了1000多个linux头

a如何使gcc使用特定文件夹作为库?

b是否有更好的代理体系结构替代方案?


PS:希望这个问题不是太模糊。感谢您提前回复。

不要试图手工编译systemtap的中间C代码。相反,通过stap(或通过staprun编译的.ko)运行脚本,并通过stdout使用它们的输出