골
우분투에서 간단한 장치 드라이버를 작성하려고합니다. Eclipse (또는 드라이버 프로그래밍에 적합한 더 나은 IDE)를 사용 하여이 작업을 수행하고 싶습니다. 코드는 다음과 같습니다.
#include <linux/module.h>
static int __init hello_world( void )
{
printk( "hello world!\n" );
return 0;
}
static void __exit goodbye_world( void )
{
printk( "goodbye world!\n" );
}
module_init( hello_world );
module_exit( goodbye_world );
내 노력
몇 가지 연구를 한 후 드라이버 개발에 Eclipse CTD 를 사용하기로 결정했습니다 (멀티 스레딩 디버깅 도구를 지원하는지 확실하지는 않습니다). 그래서 나는 :
- VMWare 가상 머신에 Ubuntu 11.04 데스크탑 x86 설치
- Synaptic Package Manager를 사용하여 linux-headers-2.6.38-8 설치
eclipse-cdt
및 - 생성 된
C Project
이름TestDriver1
과 코드를 복사 - 붙여 넣기, - 기본 빌드 명령
make
을 다음 사용자 정의 빌드 명령으로 변경했습니다.
make -C /lib/modules/2.6.38-8-generic/build M=/home/isaac/workspace/TestDriver1
문제
이클립스를 사용 하여이 프로젝트를 빌드하려고하면 오류가 발생합니다. 빌드 로그는 다음과 같습니다.
**** 프로젝트 TestDriver1에 대한 구성 디버그 빌드 ****
-C /lib/modules/2.6.38-8-generic/build M = / home / isaac / workspace / TestDriver1 모두 작성
확인 : '/usr/src/linux-headers-2.6.38-8-generic'디렉토리 입력
확인 : ***
vmlinux', needed by
모든 대상을 지정하는 규칙이 없습니다 '. 중지.확인 : '/usr/src/linux-headers-2.6.38-8-generic'디렉토리 떠나기
흥미롭게 도이 프로젝트를 빌드 하는 shell
대신 사용할 때 오류가 발생하지 않습니다 eclipse
. 를 사용하기 위해 포함을 shell
만들고 위 명령을 사용하여 빌드합니다.Makefile
obj-m += TestDriver1.o
make
따라서 일식에 문제가 있어야합니다 Makefile
. vmlinux
현재 아키텍처가 x86 인 동안 아키텍처 (?) 또는 무언가를 찾고 있을 수 있습니다. 아마도 VMWare 때문일까요?
내가 이해했듯이 eclipse
makefile을 자동으로 작성하고 수동으로 수정하면 나중에 오류가 발생하거나 관리가 makefile
어려워집니다.
그렇다면 어떻게이 프로젝트를 이클립스에서 컴파일 할 수 있습니까?
autotools
플러그인을 곧 확인하겠습니다 . 드라이버 프로그래밍을위한 더 나은 IDE를 알고 있습니까? 내가 (리눅스에 경험이없는 게으른 VS 사용자) 관리 할 수 있다고 생각makefile
합니까? 가makefile
큰 프로젝트에 정말 관리 s는?