2012-06-21 2 views
1

2 개의 다른 커널 버전으로 컴파일해야하는 리눅스 메이크 파일이 있습니다. makefile은 automake/autoconf에서 생성되지 않습니다.필요한 최소 리눅스 커널 버전을 확인하기위한 메이크 파일 리눅스

C 코드는 이미 다른 커널 버전에 대해 다른 코드를 생성하기 위해 매크로를 사용하여 조건부 지정되었지만 makefile의 특정 기능도 조정해야합니다.

if (kernel_version > 2.6.30) 
    newer_kernel = 1 
else 
    newer_kernel = 0 
endif 

답변

1

글쎄, 내가 한 빠른 방법을 생각할 수 bash는 함께 할 수있는 :

할 수있는 메이크의 방법이 기본적으로

KERNEL_VERSION=`uname -r` 
HIGHER_VERSION=`echo -e "$KERNEL_VERSION\n2.6.30" | sort -g -t '.' | tail --lines=1` 
if [ "$HIGHER_VERSION" == "2.6.30" ] 
    # its an older kernel 
else 
    # its a newer kernel 
fi 

, 당신은 얻을 끝나면 uname을 사용하여 현재 커널의 버전을 sort을 사용하여 2.6.30과 비교하십시오 (-g 플래그를 사용하면 숫자 정렬이 가능하고, -t '.'은 도트를 필드 구분 기호로 사용함을 의미합니다). 그런 다음 tail을 사용하여 목록에서 두 버전 중 더 높은 버전을 판별하십시오 . 정확하게 아름다운 솔루션은 아니지만 작동 할 것입니다.

별도의 스크립트에 넣거나 직접 메이크 파일 레시피에 넣을 수 있습니다.

+0

주의! ''sort -g -t '.'''는'3.12 '<'3.8 '을 생각하면 "3.5, 3.8, 3.12"를 올바르게 정렬하지 않습니다. 잘''sort -V''가 예상대로 작동하기를 바랍니다. – vaab