2009-06-29 7 views
1

나는 building a custom Ubuntu kernel이고 소스 파일 중 하나를 수정했습니다. 빌드 명령을 내릴 때 :수정 한 파일을 다시 빌드하는 Linux 커널 만들기 프로세스

NOEXTRAS=1 skipabi=true skipmodule=true fakeroot debian/rules binary-insp8600 

수정 된 소스 파일은 다시 빌드되지 않습니다.

안녕하세요. 원본 파일을 수정할 때마다 완전하게 다시 작성해야합니까?

그건 의미가 없습니다.

수정 된 파일은 ./init/main.c입니다.

메모로 binary-insp8600은 Inspiron 8600 노트북 용으로 만든 맞춤형입니다.

답변

2

debian/rules은 커널 Makefile이 아닙니다. 이러한 종속성은 실제 Makefile에 있기 때문에 편집 한 파일이 최종 커널의 종속성인지 알 수있는 방법이 없습니다.

실제로, 빌드를 완료 한 후 생성하는 "플래그"파일에만 의존하는 debian/rulesbuild 대상 (실제로 컴파일을 수행하는 대상)이 필요합니다. 이 경우 간단한 해결 방법은 해당 "플래그"파일을 제거하는 것입니다. (커널의 Makefile을 호출하여 부분적으로 다시 빌드하는 방법을 알게 될 것입니다.) 물론 build 타겟은 깔끔하게하려고 시도하지 않고 make clean 또는 이와 동등한 작업을 수행한다고 가정합니다 ...)

(내가 사용하고있는 패키지에 대해 debian/rules을 보지 않았으므로 잘못되었을 수 있지만 적어도 시작일 것입니다.)

+0

보기 좋은 곳과 같습니다. –

+0

좋습니다. 빌드 우표가 들어있는 debian/stamps 디렉토리가 있습니다. 삭제하면 make가 다시 실행됩니다. –

0

Makefile의 종속성이 올바른 경우에는 새로 빌드하지 않아도됩니다.

변경 한 파일이 헤더 파일입니까? 그런 다음 makedepend를 실행하여 헤더 파일 종속성을 자동으로 추가합니다.

헤더 파일이 아니라면 컴파일의 일부인 Makefile에 종속되어야합니다. 검색 및 확인 사용중인 타겟이 컴파일하려는 모듈에 달려 있다는 것을 확인하십시오.

+0

아니요, ./init/main.c –

+0

을 검색 했습니까? main.c가 아닌 Makefile의 main? 거기 있니? 컴파일 될 수 있어야합니다. – hhafez

+0

물론 make 파일에 있습니다. 그렇지 않으면 처음에는 어떻게 컴파일 될까요? –

관련 문제