所以,我試圖修改evdev.c,這是一個輸入設備的事件處理程序驅動程序,如Linux上的鼠標。Linux模塊編譯:struct evdev沒有找到成員
我遇到的問題是,當我嘗試編譯模塊時,出現大量錯誤,指出找不到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;
};
舉個例子,在這裏是如何使用它上線215
spin_lock(&evdev->client_lock);
list_add_tail_rcu(&client->node, &evdev->client_list);
spin_unlock(&evdev->client_lock);
synchronize_rcu();
什麼會導致這些錯誤?整個文件可以在這裏找到: http://lxr.free-electrons.com/source/drivers/input/evdev.c
哪一款是您的操作系統?如果是Ubuntu,你可以試試'apt-get build-dep',然後'apt-get source -b ',他們會照顧包編譯所需的所有東西 –
sashoalm
2011-04-01 06:34:25
使用ubuntu,但不是在談論軟件包。我有我需要在/ usr/include/linux下編譯的所有東西。問題是編譯器似乎沒有找到位於我希望編譯的文件中的結構成員。 – user623879 2011-04-01 06:42:29
你是如何獲得源代碼的? – sashoalm 2011-04-01 07:03:44