Не вдаваясь в подробности и правильно пишите макросы autoconf (что было бы предпочтительнее в любом случае), не забывайте, что configure.ac - это, по сути, сценарий оболочки, предварительно обработанный m4.Таким образом, вы можете писать команды оболочки напрямую.
# prev. part of configure.ac
if test `uname -r |cut -d. -f1` -lt 2 then; echo "major v. error"; exit 1; fi
if test `uname -r |cut -d. -f2` -lt 6 then; echo "minor v. error"; exit 1; fi
if test `uname -r |cut -d. -f3` -lt 26 then; echo "micro error"; exit 1; fi
# ...
Это просто идея, если вы хотите сделать это, избегая написания макросов для autoconf.Этот выбор не является хорошим, но должен работать ...
Лучший способ - это уже предложенный: вы должны проверить наличие функций;скажем, в будущем ядре timerfd больше не доступен ... или каким-то образом изменен ваш код не работает ... вы не поймаете его, так как тестируете на версию.
edit
Как говорит пользователь foof в комментариях (другими словами), это наивный способ проверить наличие файла major.minor.micro.Например, 3.5.1 потерпит неудачу из-за того, что 5 является lt 6, но 3.5.1 идет после 2.6.26, поэтому (вероятно) это следует принять.Существует много приемов, которые можно использовать для преобразования xyz в представление, которое переводит каждую версию в «естественный» порядок.Например, если мы ожидаем, что x, y или z не будут больше 999, мы можем сделать что-то вроде умножения на 1000000 основных, 1000 младших и 1 микро: таким образом, вы можете сравнить результат с 2006026, как предложил Foof в комментариях).