커널 모듈 : .o vs.ko


10

이 커널 모듈을 포함하는 파일이라고 보인다 .o적어도 그와 같은 튜토리얼을 볼 때 내가 알아낼거야, 이 중 하나 . 그러나 내 데비안 스퀴즈 박스 에서이 파일은이라고 .ko합니다.

이 파일을 호출 여부 분포 (또는적인 버전 그)에 의존 하는가 .o또는 .ko그렇지 않으면, 그들은 더 많거나 적은 동일?

답변:


11

나는 다음과 같은 답을 찾을 여기 :

짧은 대답은 .ko 파일이 커널에 필요한 일부 커널 자동 생성 데이터 구조와 연결된 개체 파일이라는 것입니다.

.o 파일은 모듈의 객체 파일이며 c 파일을 컴파일 한 결과입니다. 그런 다음 커널 빌드 시스템은 커널 모듈 (your_module_kmod.c)을 설명하는 일부 데이터 구조로 다른 C 파일을 자동으로 작성하고이 C 파일을 다른 오브젝트 파일로 컴파일 한 후 오브젝트 파일과 함께 빌드 한 오브젝트 파일을 링크하여 .ko를 작성합니다. 파일.

커널 모듈로드를 담당하는 커널의 동적 링커는 커널이 .ko 파일의 kmod 객체에 넣은 데이터 구조를 찾고 커널 모듈이 없으면 커널 모듈을로드 할 수 없습니다.

또한 그 소스 에서 tldp를 인용 하여 : 최대 2.4 커널 버전은 ".o"였으며 2.6 이후로는 ".ko"입니다.


3

실제로는 2005 년에 작성된 오래된 하우투 (자습서) 인 것 같습니다. Linux 커널이 2.4.x 일 때 모듈의 확장명은 .o이고 2.6에서는 .ko가되었습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.