소스 코드를 커널로 컴파일하는 방법은 무엇입니까?

소스 코드를 커널로 컴파일하는 방법은 무엇입니까?

내 커널에 사용자 정의 애플리케이션 코드를 추가하고 컴파일하고 싶습니다.

.c내 커널 "bin" 디렉터리에 내 및 파일을 어떻게 추가 .o하고 컴파일해야 합니까?

커널이 시작될 때 실행 되도록 커널에 추가하고 싶은 hello.c및 파일을 만들었습니다 . 일부 메이크파일을 편집해야 합니까?hello.ohello.o

답변1

커널이 시작될 때 이 hello.o 파일이 실행되고 실행되도록 이 파일을 내 커널에 추가하고 싶습니다.

달성하려는 것은 커널 버전을 통해 달성되어서는 안됩니다. 커널 프로그래밍 경험이 없어도 부팅 시 프로그램 실행을 더 간단한 방법으로 처리할 수 있습니다. 당신은 할 수 있습니다:

쉘이 시작될 때 실행: 또는 끝에 기록됩니다 /path/to/hello/executable. 이러한 파일은 쉘(더 구체적으로 bash)을 시작할 때마다 획득됩니다. 이는 또한 터미널을 열 때마다 실행 파일이 실행된다는 것을 의미합니다./etc/profile~/.profile~/.bashrc

init.d 시스템 사용:코드를 컴파일하고 추가하세요초기화 스크립트도착하다시스템 초기화. 필요한 모든 정보를 찾을 수 있습니다.이 페이지에서, 또는여기에서 Ubuntu에 대해 자세히 알아보세요..

이것은 간단한 예입니다초기화 스크립트hello 실행 파일의 경우:

#!/bin/sh

### BEGIN INIT INFO
# Provides:          hello
# Default-Start:     1 2 3 4 5
# Short-Description: Prints Hello World somewhere.
# Description: Some more description...
### END INIT INFO

case "$1" in
    start)
        /path/to/hello/executable
        ;;
    stop|restart|force-reload)
        ;;
    *)
        ;;
esac

exit 0

이제 다음을 사용하여 hello를 실행할 수 있습니다.

service hello start

init 스크립트의 이름이 지정 hello되고 실행 가능하다고 가정합니다. 시작 시 실행되도록 하려면 다음을 사용하십시오.

update-rc.d hello defaults

실제로 커널은 실행 파일보다 라이브러리에 더 많이 의존합니다. 당신은 또한 살펴보고 싶을 수도 있습니다커널 모듈 개발 가이드, 커널 모듈의 기본 사항을 소개할 수 있습니다. 다시 말하지만 이건 정말 끔찍한 일이다지나침당신이하고 싶은 일을 위해.

관련 정보