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

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

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

답변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)

관련 정보