2013-03-04 4 views
0

커널 모듈과 사용자 공간 프로그램 모두에 사용할 소스 코드가 있습니다. 내 소스 트리 내에서 해당 코드의 단일 복사본 만 유지 관리하고 싶습니다. 공유 된 소스 파일을 커널 트리 외부의 공유 폴더에 넣고, kbuild가 외부 디렉토리에서이 파일을 빌드하고, 모듈의 디렉토리 내부에서 .o 파일을 생성 할 생각이었습니다. kbuild를 사용하여 외부 디렉토리의 소스 파일을 포함하는 좋은 방법이 있습니까? 이 빌드 프로세스의 일부로 foo는 디렉토리에 shared.c를 복사 할 수는 있지만 그것은 추한 솔루션처럼 보인다,Kbuild - 외부 디렉토리의 소스 파일 포함

+ linux 
| + drivers 
| + foo 
|  + Makefile 
|  + foomain.c 
|  + foomain.o 
|  + shared.o 
+ shared 
| + shared.c 
+ bar 
    + Makefile 
    + barmain.c 
    + barmain.o 
    + shared.o 

을하고 난 :

내 대상 디렉토리는 다음과 같이 보일 것입니다 더 좋은 방법이 있는지 궁금해.

답변

0

나는 그것이 가능하다고 생각합니다.

커널 모듈 foo에 대한 shared.o을 구축하고 사용자 공간 응용 프로그램 막대에 대한 shared.o을 지원할 수있는 공유 디렉토리에서 Makefile을 작성합니다. 메이크에서 두 개의 서로 다른 빌드 타겟을 생성하는 것을 의미

는 두 대상은 같은 이름을 가지고 있지만 서로 다른에 KERNEL_BUILD 그들과 같이 매크로를 사용할 필요가 있습니다.