2014-06-05 3 views
1

Linux Mint에서 CDT를 통해 Eclipse에서 커널 모듈 (순수 C 사용)을 코딩하려고했지만 CDT가 라이브러리를 감지하지 못하는 것 같습니다. 미해결 라이브러리는 다음과 같습니다Windows에서 Eclipse CDT에 Linux 헤더를 추가하는 방법

#include <linux/module.h> 
#include <linux/slab.h> 
#include <linux/cdev.h> 
#include <asm/atomic.h> 
#include <linux/list.h> 
.... 

어떻게 이클립스에 이러한 라이브러리를 얻고 난 개발을 위해 사용할 수 있도록 그것을 감지해야합니까? 저는 일반적으로 Windows 용 Java 용 Eclipse를 사용하고 있으며 쉽게 라이브러리를 가져올 수 있지만 Linux에서는 CDT를 이해하지 못합니다.

+0

리눅스에서의 표준 실행은 '커널 빌드'기능을 사용하여 커널 모듈을 컴파일하는 것입니다. 일부는 '너무 복잡하다'고 생각할 수도있다. 이클립스를 사용하여 똑같은 일을 시도하는 것은 ... 글쎄 .. "너는 긴 열을 가지고있다"고 말할 수있다. 내 충고, '커널 빌드'. –

+0

커널을 빌드하고 파일을 만들 수 있지만 Eclipse가 빠른 타이핑을위한 옵션을 제안 할 수 있으므로 개발 속도가 그다지 빠르다. – chettyharish

답변

1

질문에 결함이 있습니다. 질문 코드는 몇 가지 '#include'파일을 나열하고 '라이브러리'라고 부릅니다. 실제로 '헤더 파일'(라이브러리가 아님)입니다.

'헤더 파일'은 모두 커널 모듈로드시 insmod 등 커널이 해석하는 심볼을 컴파일러에 정의합니다.

'헤더 파일'에 정의 된 특정 기호는 링크 타임에 코드와 링크해야하는 라이브러리의 일부가 아닙니다. 오히려이 기호들은 커널 자체에 의해 구체화됩니다. "커널은 - 도서관이다"(무딘). 해당 헤더 파일의 심볼을 링크하는 라이브러리를 찾을 수 없습니다.

이클립스를 사용하여 커널 모듈을 만드는 것이 실용적이라고 생각하지는 않습니다.

대신 Linux에서 제공하는 kbuild 환경을 사용하십시오. 리눅스 커널 모듈을 구축 옳은 길을 시작합니다

/usr/src/linux/Documentation/kbuild/modules.txt 

: 리눅스 시스템에서 파일을 읽습니다.

+0

하지만 헤더의 일부를 어떻게 해결할 수 있습니까? (나는 자바를 사용하여 습관적으로 라이브러리를 호출하는 것을 끝내고있다.) 어떻게 든 붙여 넣기를 복사해서 최소한 atleast가 그들을 감지하도록 강제 할 수 있는가? – chettyharish

+0

커널 헤더 파일의 경로가 userspace에 사용 된 경로와 다릅니다. **/usr/src/linux/include/linux ** –

+0

Eclipse를 완전히 컴파일 할 수 없더라도 Eclipse는 코딩 부분과 구조 설계에 실제로 도움이됩니다. – chettyharish

관련 문제