2012-04-30 1 views
1

C/C++ Linux 개발자를위한 Eclipse IDE (Indigo SR2)에서 임베디드 시스템 용 Linux 커널 모듈 (드라이버)을 개발 중입니다. 커널의 include 디렉토리를 프로젝트의 경로 (Project> Properties> C/C++ General> Paths and Sybmols -> Includes (Tab) -> Add ... (button))에 추가했습니다. 파일은 asm 디렉토리를 가리키며, linux/asm-powerpc 디렉토리 (필자의 경우)의 오버레이인데, 특정 버전이 일반을 대체하는 linux/asm-generic 디렉토리의 맨 위에 있습니다.Eclipse에서 Linux 커널 개발을 위해 asm 헤더 디렉토리를 포함시키는 방법은 무엇입니까?

"asm"을 "asm-powerpc"로 해석하도록 Eclipse의 인덱서에 지시하고, 실패하면 "asm"을 찾는 대신 "asm-generic"을 조사 할 수 있습니까? asm에 대한 asm-powerpc의 Symlink를 사용하면 일부는 도움이되지만 너무 많은 헤더 파일은 일반적인 위치에서만 존재하므로이 파일을 사용할 수 있습니다.

감사합니다.

+0

하나는 전체 커널 소스를 읽을 필요가있는 경우

,이 링크를 읽어 기능이 켜져 있습니까? 리눅스 커널 빌드 환경은 eclipse의 스캐닝의 이익을 위해 다시 생성하는 것이 간단하지 않을 것이다. 만약 당신이 주장한다면, 적어도 이클립스와 리눅스 커널에 대한 웹 검색을하고 다른 누군가가 이미이 문제를 해결했는지 확인하십시오. –

+0

안녕하세요, Chris, 네, 먼저 검색해 보았습니다. :(이것은 IDE의 많은 이점을 줄여줍니다.) 분명히, 누군가는이 작업을하고 있습니다 ... 필자는 asm-generic으로부터 asm-poweprc로 빠진 파일들과 dir들을 항상 심볼릭 링크하여 합계를 만들 수 있지만, 이미 Eclipse에 내장 된보다 자연스러운 솔루션입니다. – Trevor

답변

1

내가 발견 한 것처럼, 커널 빌드 프로세스와 마찬가지로 Eclipse에 인덱스를 지정하는 데 필요한 많은 부분이있다. 그러나,이 특정 질문에 대한 답은 매우 간단했다 :

:

그런 다음 프로젝트에 포함 다음 경로를 추가해야합니다, 리눅스 커널 빌드 디렉토리가 ${KDIR}로 정의하고 커널 구조가 ${ARCH}입니다 가정
  • ${KDIR}/include
  • ${KDIR}/arch/${ARCH}/include

당신은, 일 프로젝트를 마우스 오른쪽 버튼으로 클릭함으로써 Project Explorer에서이 작업을 수행 할 수 있습니다 en Properties > C/C++ General > Paths and Symbols > Includes (tab) > Add ... (button).

두 번째 항목이 누락되었습니다. 그것을 추가하면이 질문이 해결되었습니다. 이 두 항목을 사용하면 확인되지 않은 포함 (오른쪽 클릭 Project > Index > Search for Unresolved Includes)을 검사하면 0 개의 오류가 발생합니다.

이제 나는 또 다른 걸림돌을 맞았습니다. 일부 유형 (예 : u32 및 bool)은 Eclipse에서 아직 정의되지 않았습니다. (내 Makefile은 오류를 발생시키지 않습니다.) 이것은 커널 헤더 컴파일시 정의되지 않은 일부 커널 관련 변수와 관련이 있다고 생각합니다. 이는 커널 모듈 컴파일시와 동일하게 평가되지 않도록하기 위해서입니다. 그러나 나는 아직 이것을 풀지 않았고 그것은 또 다른 질문과 관련이있다. :)

1

프로젝트 당 경로를 추가하는 대신 전역 CDT에 전역 변수를 추가 할 수도 있습니다. 이클립스 케플러 들어 Window > Preferences > C/C++ > Build > Environment에 추가 변수 :

  • C_INCLUDE_PATH = /usr/include/c++/${gcc-version}
  • CPLUS_INCLUDE_PATH = /usr/include:${KDIR}/include:${KDIR}/include/linux:${KDIR}/arch/${ARCH}/include

실제 항목 전술 ${var} 바꾸기 예컨대 ${gcc-version}4.6.3으로 바꾸십시오. 그런 다음 Eclipse를 다시 시작하고 변수를 올바르게 해결해야합니다. 커널 모듈 개발에 충분할 것입니다.특히 코드 검사와 함께 사용하여, 당신이 절대적으로 이클립스를 사용하여 주장해야합니까 -이 빠르게 추한 것입니다 예상 http://wiki.eclipse.org/HowTo_use_the_CDT_to_navigate_Linux_kernel_source

관련 문제