在stackoverflow上向大家问好!
我正在尝试将 fpirntf() 添加到 XNU 内核 tcp_xxx.c 文件中,因此当 TCP 移动时,它可以将参数打印到文件中,以便更好地了解 TCP 的工作原理,但会发生如下致命错误:
$ sudo make ARCH_CONFIGS=X86_64 KERNEL_CONFIGS=DEBUG
CC tcp_output.o
/Users/wangweikai/Desktop/xnubuilder/xnu-2422.90.20/bsd/netinet/tcp_output.c:135:10: fatal error: 'stdio.h' file not found
#include <stdio.h>
^
1 error generated.
make[7]: *** [tcp_output.o] Error 1
make[6]: *** [build_all] Error 2
make[5]: *** [do_all] Error 2
make[4]: *** [build_all] Error 2
make[3]: *** [build_all_recurse_into_conf] Error 2
make[2]: *** [build_all_recurse_into_bsd] Error 2
make[1]: *** [build_all_bootstrap_DEBUG^X86_64^NONE] Error 2
make: *** [all] Error 2
看起来 xnu 源代码中没有 stdio.h,为了解决这个问题,我重新安装了 xcode 5.0.2(仅适用于 xnu-2422)并输出 mach_kernel 能够启动;我尝试在终端中通过“xcode-select --install”安装命令行工具,但都没有工作。顺便说一句,如果我在没有#include 的情况下添加 printf() 它不会出错,它看起来打印函数是由名称不是 stdio.h 的文件定义的。
由于我的意思是在文件中记录 TCP 参数(例如拥塞窗口大小和下一个序列号等)如何变化,所以如果有任何方法可以做到这一点,请告诉我,我对 xnu 和 C 完全陌生编程。
最好的祝福。