Можно ли экспортировать использованный код из программы на языке c многими флагами компилятора? - PullRequest
3 голосов
/ 14 февраля 2012

Я бы хотел сжать код нашего драйвера 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
}

Ответы [ 2 ]

2 голосов
/ 14 февраля 2012
1 голос
/ 14 февраля 2012

Это то, что директивы препроцессора уже делают. Попробуйте выполнить код через gcc -E (но подготовьтесь к большому выводу, так как все #include s будут встроены).

...