เนื่องจากโปรแกรมเหล่านั้นสร้างเพื่อใช้สิ่งที่กำหนดไว้ในส่วนหัวเคอร์เนล:
busybox-1.22.1]$ egrep -RHn '^#include <linux'
modutils/modutils-24.c:194:#include <linux/elf-em.h>
include/fix_u32.h:17:#include <linux/types.h>
libbb/loop.c:11:#include <linux/version.h>
console-tools/openvt.c:23:#include <linux/vt.h>
console-tools/kbd_mode.c:23:#include <linux/kd.h>
console-tools/showkey.c:19:#include <linux/kd.h>
util-linux/blockdev.c:36:#include <linux/fs.h>
util-linux/mkfs_ext2.c:50:#include <linux/fs.h>
util-linux/mkfs_vfat.c:28:#include <linux/hdreg.h> /* HDIO_GETGEO */
util-linux/mkfs_vfat.c:29:#include <linux/fd.h> /* FDGETPRM */
....
สำหรับเครื่องมือเฉพาะแต่ละอย่างคุณจะต้องอ่านแหล่งที่มาของเครื่องมือและส่วนหัวเคอร์เนลที่เกี่ยวข้องเพื่อหาว่าสิ่งใด
คุณสามารถเห็นบางสิ่งที่ถูกคอมเม้นต์เพื่อให้ง่าย
ตัวอย่างเช่นmkfs_vfat
รวมถึงlinux/fd.h
การได้รับFDGETPRM
:
$ egrep -RHn FDGETPRM util-linux/mkfs_vfat.c
util-linux/mkfs_vfat.c:29:#include <linux/fd.h> /* FDGETPRM */
util-linux/mkfs_vfat.c:351: int not_floppy = ioctl(dev, FDGETPRM, ¶m);
คุณอาจลบที่เกี่ยวข้อง#include
และดูข้อผิดพลาดของคอมไพเลอร์เพื่อให้ง่ายขึ้นคุณจะได้รับคำเตือนว่าบางสิ่งไม่ได้กำหนดไว้ สิ่งเหล่านั้นน่าจะมาจากส่วนหัวของเคอร์เนล