我正在使用联想 X1 Yoga 平板电脑,我需要一个自定义版本的 xf86-input-wacom 驱动程序才能使我的笔正常工作。在此过程中,我发现一些头文件包含与实际安装不一致的版本信息。我的问题是如何获取正确的开发文件,以便我从源代码编译此驱动程序。
我做了什么:
我在 Lenovo X1 Yoga Tablet 上安装了 Ubuntu 16.04.3 LTS。手写笔可以工作,但会产生一些虚假的输入数据。为了解决这个问题,我需要安装 xf86-input-wacom 驱动程序的自定义版本:请参阅以下讨论https://sourceforge.net/p/linuxwacom/bugs/339/按照该页面第二条评论中的说明,我做了以下操作。
$ sudo apt-get install autoconf pkg-config make xutils-dev libtool xserver-xorg-dev libx11-dev libxi-dev libxrandr-dev libxinerama-dev libudev-dev
安装开发文件(一些软件包已经安装。)
$ git clone https://github.com/jigpu/xf86-input-wacom -b fix-bug-339
获取我需要的特定分支。
$ cd xf86-input-wacom
$ ./autogen.sh --prefix=/usr && make
编译驱动程序。
由于遇到问题,我手动复制了生成的驱动程序
$ cp src/.libs/wacom_drv.so /usr/lib/xorg/modules/input/wacom_drv.so
重新启动后,xinput 看不到任何 wacom 设备。问题出在
/var/log/Xorg.0.log:
[ 11.725] (II) LoadModule: "wacom"
[ 11.725] (II) Loading /usr/lib/xorg/modules/input/wacom_drv.so
[ 11.726] (II) Module wacom: vendor="X.Org Foundation"
[ 11.726] compiled for 1.18.4, module version = 0.35.0
[ 11.726] Module class: X.Org XInput Driver
[ 11.726] ABI class: X.Org XInput driver, version 22.1
[ 11.726] (EE) wacom: module ABI major version (22) doesn't match the server's version (24)
[ 11.726] (II) UnloadModule: "wacom"
[ 11.726] (II) Unloading wacom
那么,为什么刚从源代码编译的模块的 xinput ABI 版本会落后于 X 服务器的版本呢?让我们来看看
/usr/include/xorg/xf86Module.h:
#define ABI_ANSIC_VERSION SET_ABI_VERSION(0, 4)
#define ABI_VIDEODRV_VERSION SET_ABI_VERSION(20, 0)
#define ABI_XINPUT_VERSION SET_ABI_VERSION(22, 1)
#define ABI_EXTENSION_VERSION SET_ABI_VERSION(9, 0)
#define ABI_FONT_VERSION SET_ABI_VERSION(0, 6)
因此,根据这个头文件,版本确实是 22,但我全新安装的 Ubuntu 16.04.3 LTS 的实际版本是 24。
所以我的问题是,如何获取正确的开发文件,以便我编译与 Ubuntu 16.04.3 LTS 附带的 Xorg 版本兼容的驱动程序?
顺便说一句,我能够通过让我的朋友在他的 Fedora 系统上编译具有兼容版本的驱动程序来实现这一点。我只是将他的 wacom_drv.so 复制到 /usr/lib/xorg/modules/input。但将来我希望能够在没有他帮助的情况下维护它。
答案1
奇怪的是,我今天遇到了与 mtrack 完全相同的问题。我通过执行 clean checkout(准确地说是 git clone)并重新运行 autoreconf 和 ./configure 解决了这个问题。但我仍然不知道如何清理原始目录。
答案2
我又搜索了一下,问题已经解决了。据我所知,Ubuntu 16.04.3 LTS 附带的默认 Xorg 版本对应于带有后缀的软件包
*-hwe-16.04
当我安装开发文件时,我安装了包
xserver-xorg-dev
这不正确。我应该安装
xserver-xorg-dev-hwe-16.04
虽然我不确定我作为用户应该如何知道这一点。无论如何,安装该软件包、重新编译并重新安装解决了该问题。