Я бы хотел сжать код нашего драйвера Linux только для того кода, который работает на текущем ядре.В нем есть части, которые игнорируются операторами if вплоть до Kernele 2.4.x
Вы когда-нибудь слышали о способе компиляции кода в вывод, который будет рабочим кодом без игнорируемых вещей?компилятором c, если операторы else?
Мне интересно, можем ли мы запустить make что-то или gcc что-то, что просто приведет ко всему коду, который используется для этой сборки.
Так как, еслиУ меня был этот файл .c ниже, затем после выполнения команды make у меня должен быть только тот код, который мне нужен для самого нового ядра.
example.c
static somefunction .... {
avar = 0;
#if (linux_ver >= 2.6.31)
some newer code
#elseif (linux_ver >= 2.4.24)
some older code
#else
original code
#endif
}
после извлечения / сжатия,example.c будет просто читать, как показано ниже
static somefunction .... {
avar = 0;
some newer code
}