현재 프로젝트의 일부로 Redhat8에서 일부 독점 장치 드라이버를 컴파일하려고 합니다(처음에는 gcc를 호출하는 공급업체에서 제공한 Makefile을 사용하여 Redhat6 커널 버전 2.6.32-504.el6.x86_64에 대해 성공적으로 컴파일되었습니다). 내가 사용하고 있는 커널 버전은 4.18.0-240.15.1.el8_3.x86_64입니다.
컴파일하면 <linux/printk.h> 및 <linux/kernel.h>와 같은 시스템 헤더 파일에 많은 오류가 발생합니다.
나는 이 게시물을 특정한 오류로 채우고 싶지 않지만, 내가 분명히 하고 싶은 것은위에서 언급한 이전 커널 버전으로 성공적으로 컴파일할 수 있는 동일한 드라이버 코드의 최신 커널 버전에 대한 커널 헤더 파일에 컴파일 오류가 표시되는 이유는 무엇입니까?
어떤 아이디어라도 크게 감사하겠습니다.
티아
답변1
리눅스 커널내부적으로 안정적인 ABI나 API가 없습니다.이는 외부 모듈에서 사용하는 인터페이스의 이전 버전과의 호환성을 유지하기 위해 거의 노력하지 않음을 의미합니다.
ㅏ많은2.6.32와 4.18 사이에 변경 사항이 발생했습니다. 4.18 커널에서 2.6.32 호환 모듈을 구축하려면 상당한 이식 작업이 필요합니다.