是否有任何 C 函数可以检查是否设置了 Linux 内核配置选项(/boot/config-
文件中的CONFIG_AAAA
选项)?
或者我必须自己开发它。
最佳答案
找了半天无果,自己开发了一个功能。这是代码:
static int is_kconfig_set(const char *config) {
int ret = 0;
struct utsname utsname;
char pattern[BUFSIZ], buf[BUFSIZ];
FILE *fp = NULL;
if (uname(&utsname) == -1)
return 0;
memset(pattern, 0, sizeof(pattern));
memset(buf, 0, sizeof(buf));
sprintf(pattern, "%s=y", config);
sprintf(buf, "/boot/config-%s", utsname.release);
fp = fopen(buf, "r");
if (fp == NULL)
return 0;
while(fgets(buf, sizeof(buf), fp) != NULL) {
if (strncmp(buf, pattern, strlen(pattern)) == 0) {
ret = 1;
break;
}
}
fclose(fp);
return ret;
}
检查是否设置了 CONFIG_CPU_FREQ:
if (is_kconfig_set("CONFIG_CPU_FREQ"))
return 1;
return 0;
关于在运行时检查 Linux 内核配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22240476/