그래서 리눅스에서 mouse와 같은 입력 장치를위한 이벤트 핸들러 드라이버 인 evdev.c를 수정하려고합니다.리눅스 모듈 컴파일 : struct evdev member not
내가 겪고있는 문제는 모듈을 컴파일하려고 할 때 evdev 멤버를 찾을 수 없다는 오류가 발생한다는 것입니다.
/home/mousedev_dbl.c:215: error: ‘struct evdev’ has no member named ‘client_lock’
/home/mousedev_dbl.c:216: error: ‘struct evdev’ has no member named ‘client_list’
/hom/mousedev_dbl.c:217: error: ‘struct evdev’ has no member named ‘client_lock’
/home/mousedev_dbl.c: In function ‘evdev_detach_client’:
/home/mousedev_dbl.c:224: error: ‘struct evdev’ has no member named ‘client_lock’
/home/mousedev_dbl.c:226: error: ‘struct evdev’ has no member named ‘client_lock’
/home/mousedev_dbl.c: In function ‘evdev_open_device’:
/home/mousedev_dbl.c:234: error: ‘struct evdev’ has no member named ‘mutex’
/home/mousedev_dbl.c:238: error: ‘struct evdev’ has no member named ‘exist’
이것은 오류의 일부에 지나지 않습니다.
evdev 용 구조체가 컴파일 할 mousedev_dbl.c 파일에 명확하게 있습니다. 여기 예를 들어
struct evdev {
int open;
int minor;
struct input_handle handle;
wait_queue_head_t wait;
struct evdev_client __rcu *grab;
struct list_head client_list;
spinlock_t client_lock; /* protects client_list */
struct mutex mutex;
struct device dev;
bool exist;
};
은, 이러한 오류가 원인이 무엇
spin_lock(&evdev->client_lock);
list_add_tail_rcu(&client->node, &evdev->client_list);
spin_unlock(&evdev->client_lock);
synchronize_rcu();
라인 (215)에 사용되는 방법이다 ?? 전체 파일은 여기에서 찾을 수 있습니다 : http://lxr.free-electrons.com/source/drivers/input/evdev.c
귀하의 OS는 무엇입니까? 그것이 우분투라면 'apt-get build-dep '을 시도한 다음 'apt-get source -b'을 써서 패키지를 컴파일하는 데 필요한 모든 것을 처리 할 것입니다. –
sashoalm
우분투를 사용하면서 패키지에 대한 이야기는하지 않았습니다. . 나는/usr/include/linux에서 컴파일해야 할 모든 것을 가지고있다. 문제는 컴파일러가 컴파일하려는 파일에있는 구조체의 멤버를 찾지 못하는 것입니다. – user623879
어떻게 소스를 얻었습니까? – sashoalm