커널 모듈: .o 및 .ko

커널 모듈: .o 및 .ko

커널 모듈을 포함하는 파일이 호출되는 것 같습니다 .o. 적어도 비슷한 튜토리얼을 볼 때 그렇게 생각했습니다.이것. 그러나 내 Debian squeeze 상자에는 파일 이름이 .ko.

.o파일이 또는 으로 호출되는지 여부는 배포판(또는 해당 버전)에 따라 달라지나요? .ko아니면 거의 동일합니까?

답변1

다음 답변을 찾았습니다.여기:

간단히 말해서, .ko 파일은 커널에 필요한 일부 커널 자동 생성 데이터 구조와 연결된 개체 파일입니다.

.o 파일은 모듈의 개체 파일입니다. 즉, c 파일을 컴파일한 결과입니다. 그런 다음 커널 빌드 시스템은 커널 모듈을 설명하는 일부 데이터 구조(your_module_kmod.c라는 이름)가 포함된 또 다른 C 파일을 자동으로 생성하고, 이 C 파일을 다른 객체 파일로 컴파일한 다음, 이를 사용하여 객체 파일을 빌드합니다. .ko 파일입니다.

커널 모듈 로드를 담당하는 커널의 동적 링커는 커널이 .ko 파일에 넣는 kmod 개체에서 데이터 구조를 찾을 것으로 예상합니다. 이 개체가 없으면 커널 모듈을 로드할 수 없습니다.

또한그 소스, 인용하다TLDP: 커널 버전 2.4 이전에는 ".o" 였는데, 2.6부터는 ".ko" 입니다.

답변2

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

관련 정보