Linux 由于缺少Build.include文件,Ubuntu 20.04中的Make for objtool失败?

Linux 由于缺少Build.include文件,Ubuntu 20.04中的Make for objtool失败?,linux,ubuntu,makefile,driver,Linux,Ubuntu,Makefile,Driver,我正在尝试在最近升级的Ubuntu 20.04笔记本电脑上构建并安装,这样我就可以利用Dell D3100扩展底座通过显示端口驱动两个外部显示器。我之前在运行Ubuntu18.04的同一台笔记本电脑上成功安装了这个驱动程序,并且能够检测和使用额外的监视器(尽管偶尔会出现黑屏) 我已从下载了最新的5.2.14驱动程序安装程序,但这次当我以sudo运行时,由于某种错误配置或缺少文件/构建文件夹而失败,生成日志文件中显示以下内容: /usr/src/linux-headers-5.4.0-24-low

我正在尝试在最近升级的Ubuntu 20.04笔记本电脑上构建并安装,这样我就可以利用Dell D3100扩展底座通过显示端口驱动两个外部显示器。我之前在运行Ubuntu18.04的同一台笔记本电脑上成功安装了这个驱动程序,并且能够检测和使用额外的监视器(尽管偶尔会出现黑屏)

我已从下载了最新的5.2.14驱动程序安装程序,但这次当我以sudo运行时,由于某种错误配置或缺少文件/构建文件夹而失败,生成日志文件中显示以下内容:

/usr/src/linux-headers-5.4.0-24-lowlatency/tools/build/Makefile.build:37:/usr/src/linux-headers-5.4.0-24-lowlatency/tools/build/build.include:无此类文件或目录

确实没有/usr/src/linux头-/tools/build/build.include文件,但我不确定为什么,以及是否缺少所需的包

运行安装程序的输出:

bric@home:~/System/DisplayLink$ sudo ./displaylink-driver-5.2.14.run 
Verifying archive integrity...  100%   All good.
Uncompressing DisplayLink Linux Driver 5.2.14  100%  
DisplayLink Linux Software 5.2.14 install script called: install
Distribution discovered: Ubuntu 20.04 LTS
Installing
Configuring EVDI DKMS module
Registering EVDI kernel module with DKMS
Building EVDI kernel module with DKMS
ERROR (code 3): Failed to build evdi/5.2.14. Consult /var/lib/dkms/evdi/5.2.14/build/make.log for details..
目录显示没有生成。包括:

$ ls -la /usr/src/linux-headers-5.4.0-24-lowlatency/tools/build/
total 40
drwxr-xr-x  4 root root 4096 Apr 18 06:27 .
drwxr-xr-x 33 root root 4096 Apr 18 06:27 ..
drwxr-xr-x  2 root root 4096 Apr 18 06:27 feature
-rw-r--r--  1 root root 1066 Nov 25 11:32 Makefile
-rw-r--r--  1 root root 3998 Nov 25 11:32 Makefile.build
-rw-r--r--  1 root root 8295 Nov 25 11:32 Makefile.feature
-rw-r--r--  1 root root  257 Nov 25 11:32 Makefile.include
drwxr-xr-x  3 root root 4096 Apr 18 06:27 tests
make.log文件附在下面,如果还有其他帮助,请告诉我


对我遗漏的东西有什么建议吗?任何帮助都将不胜感激

因此,问题似乎是由DisplayLink驱动程序的Makefile中的无效目录指令引起的,我最终发现了这一点(尽管这是指驱动程序的rpm版本)

看起来,当我升级到5.4内核时,这也改变了Makefiles的解析方式,从而忽略了任何SUBDIRS=参数,将试图运行make的指令留在linux headers/tools/build文件夹中,而不是内核模块文件夹中

正如上面链接的讨论线程所描述的,解决方案是在Makefile中将
SUBDIRS=blah
替换为
M=blah
,此外还应用另一个来更新引用
的源文件,以改为引用较新的


当我用这些补丁更新DisplayLink驱动程序5.2源代码时,我能够成功构建evdi内核模块,并通过dock上的DisplayPorts连接我的其他监视器。希望这能帮助其他人,直到下一个DisplayLink驱动程序发布

有趣的回答谢谢!我不知道如何强制displaylink安装使用该修补程序,您也可以清除它吗?:)@fabianski-I从安装程序中提取。使用
/displaylink-driver-5.2.14.run--noexec--keep--target将文件运行到临时目录中。在这个目录中,有一个tar.gz存档,其中包含用于构建evdi模块的源代码,因此我提取了这些源代码(即,
tar zxvf evdi-5.2.14-src.tar.gz-C sources/
),根据补丁修改了它们,然后使用修改后的文件创建了一个替换tar.gz。然后我通过
sudo./displaylink-installer.sh install
直接运行安装程序。希望有帮助!哦,另外,需要注意的是,卸载程序(
/displaylink-installer.sh uninstall
)将从安装程序的子目录中删除某些关键文件,因此如果不从.run文件中还原它们,您就不能立即重新安装。@BrettRichards请原谅我的无知,但您能详细说明我需要执行的命令吗“根据补丁更改它们"? 尝试了一些事情,证明了我不知道自己在做什么…最后我修复了。找到了安装debian驱动程序的建议,已克隆。已安装的sudo
apt get安装libdrm dev
。然后按照显示链接debian git页面上的安装指南进行操作。最后,使用/etc/X11/xorg.conf.d/20-intel.conf(如果有的话)中需要注释掉英特尔配置的建议修复了鼠标闪烁的问题。现在外部监视器工作正常。也许安装libdrm才是真正的解决方案,而不需要安装debian驱动程序。