저는 리눅스 드라이버를 설치하기 위해 cmake를 사용합니다. 커널 버전을 얻으려면 CMAKE_SYSTEM_VERSION
을 사용하여 uname -r
의 출력을 산출해야합니다.새 커널에 대해 CMAKE_SYSTEM_VERSION이 업데이트되지 않았습니다.
그러나 새 커널을 설치 한 후 현재 커널의 디렉토리가 아닌 /lib/modules/<previous kernel>/...
에 설치 중이라는 것을 알기 위해 cmake로 드라이버를 다시 설치하려고했습니다. uname- r
올바른 결과를 제공합니다.
install(PROGRAMS myDevice.ko DESTINATION "/lib/modules/${CMAKE_SYSTEM_VERSION}/kernel/drivers/myDevice" COMPONENT driver)
나는 CMakeCache.txt에 CMAKE_SYSTEM_VERSION을 발견하고 단지 중 하나 트릭을하지 않았다 cmake ..
을 다시 실행하지 못했습니다. 빌드 폴더 전체를 재생성해야했습니다.
빌드 폴더에 응용 프로그램이 포함되어 있기 때문에 더 좋은 방법이 있는지 알고 싶습니다. 새 커널이 있기 때문에 재구성 할 필요가 없습니다.
CMake 버전은 무엇입니까? CMAKE_SYSTEM_VERSION의 최신 문서를 확인하십시오. https://cmake.org/cmake/help/v3.6/variable/CMAKE_SYSTEM_VERSION.html – usr1234567
@ usr1234567 버전이 3.5.2입니다. 변수를 명시 적으로 설정하지 않았으므로 'uname -r'이어야하는'CMAKE_HOST_SYSTEM_VERSION'이되어야합니다. 그리고 나는 CMakeCache.txt에서'CMAKE_HOST_SYSTEM_VERSION'을 찾지 못하기 때문에 여전히 현재 커널 버전을 나타내야합니다, 맞습니까? – ted
@ usr1234567 예 : 'CMAKE_SYSTEM_VERSION'의 기본값은 ['CMAKE_HOST_SYSTEM_VERSION'] (https://cmake.org/cmake/help/v3.5/variable/CMAKE_HOST_SYSTEM_VERSION.html#)입니다. 변수 : CMAKE_HOST_SYSTEM_VERSION)은'uname -r'입니다. – ted