커널 및 사용자 공간에 대한 공통 코드

커널 및 사용자 공간에 대한 공통 코드

저는 리눅스 프로젝트를 진행하고 있습니다. 커널과 사용자 공간 모두에 공통적인 일부 코드(특히 구조체)와 헤더 파일(직접 구현)이 필요합니다. 누군가 이것을 구현하는 방법을 말해 줄 수 있습니까?

답변1

간단한 대답은 프로젝트의 두 부분(별도로 컴파일된)에 헤더를 포함하는 것입니다. 원하는 방식으로 이를 수행할 수 있습니다. 명확한 디렉토리 계층 구조는 다음과 같습니다.

project/
    userspace_stuff/
    kernal_stuff/
    inc/
       project_namespace/

이는 inc/project_namespace선택 사항입니다. 헤더를 최상위 수준에 쉽게 배치하고 #include "../myheader.h"두 하위 디렉터리의 소스 파일에서 사용할 수 있습니다. 개인적으로 저는 포함에 상대 경로를 사용하면 혼란스러울 수 있다는 것을 알았습니다. 그래서 저는 inc디렉토리와 절대 경로( ) 를 갖고 싶습니다 #include <project_namespace/myheader.h>. 이는 다음과 같이 최상위 레벨 메이크파일을 구성함으로써 촉진됩니다.

INC = -Iinc
CFLAGS += $(INC)

관련 정보