리눅스 커널 버전을 확인할 수 있는 매크로 정의가 있습니까?
제가 변수 타입을 적절하게 설정할 수 있도록 리눅스 커널 버전을 알려줄 gcc 매크로가 있는지 궁금합니다.그렇지 않다면 이렇게 하는 매크로를 어떻게 정의해야 합니까?
linux/version.h 파일에 다음이라는 매크로가 있습니다.KERNEL_VERSION
현재 Linux 헤더 버전과 비교하여 원하는 버전을 확인할 수 있습니다 (LINUX_VERSION_CODE
)을 설치.현재 Linux 헤더가 커널 v2.6.16 이전 버전에 대한 것인지 확인하는 예:
#include <linux/version.h>
#if LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,16)
...
#else
...
#endif
런타임에 버전 정보를 얻는 더 나은 방법은utsname
include / linux/utsname.h의 함수입니다.
char *my_kernel_version = utsname()->release;
이것은 본질적으로 어떻게./proc/version
현재 커널 버전을 가져옵니다.
참고 항목
gcc
이 정보를 모를 겁니다대안으로 런타임에 많은 커널 정보를 쉽게 확인할 수 있습니다.
런타임 유형을 다음과 같이 정의할 수 있습니다.
struct unified_foo {
unsigned int kernel_version;
union {
kernel_x_foo_type k_x;
kernel_y_foo_type k_y;
kernel_z_foo_type k_z;
} u;
};
실행 시간에 코드를 가지고 있습니다./proc/version
(또는 커널 런타임 환경에서 필요한 모든 것) 및 세트kernel_version
그에 걸맞게.kernel_x_foo_type
등은 커널 버전에 조건을 붙이려는 당신의 타입입니다.호출 코드를 확인해야 합니다.kernel_version
그리고 적절한 것에 접근할 수 있습니다.u.k_x
,u.k_y
, 아니면u.k_z
데이터.
커널 코드에서 먼저 Makefile.버전 관련 변수를 찾을 수 있습니다.
VERSION = 4
PATCHLEVEL = 9
SUBLEVEL = 37
언급URL : https://stackoverflow.com/questions/16721346/is-there-a-macro-definition-to-check-the-linux-kernel-version
'programing' 카테고리의 다른 글
데이터 프레임에서 열 순서를 지정하여 그룹(사분위수, 분위수 등)을 신속하게 구성하는 방법 (0) | 2023.10.14 |
---|---|
Panda 열 바인딩(cbind) 데이터 프레임 두 개 (0) | 2023.10.14 |
입력유형="file" set base64 이미지 데이터 (0) | 2023.10.14 |
tinymce를 이용한 카테고리 링크 (0) | 2023.10.14 |
액세스-제어-허용-오리진 작동하지 않음 Google Cloud Functions GCF (0) | 2023.10.14 |