Сделать для objtool в Ubuntu 20.04 не удается из-за отсутствия файла Build.include? - PullRequest
2 голосов
/ 18 апреля 2020

Я пытаюсь собрать и установить драйвер DisplayLink на недавно обновленном ноутбуке Ubuntu 20.04, чтобы я мог использовать док-станцию ​​Dell D3100 для управления двумя внешними мониторами через DisplayPorts. Ранее я успешно установил этот драйвер на тот же ноутбук, когда он работал под управлением Ubuntu 18.04, и смог обнаружить и использовать дополнительные мониторы (хотя иногда и с черным экраном).

Я скачал последнюю версию 5.2 .14 ​​установщик драйвера со страницы загрузки , но на этот раз, когда я запускаюсь как sudo, он завершается с ошибкой из-за какой-либо неправильной конфигурации или отсутствующей папки file / build, в файле журнала make отображается следующее:

/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: No such file or directory

На самом деле нет файла /usr/src/linux-headers-/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..

Каталог показывает, что Build.include:

$ 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

Есть предложения по тому, что мне не хватает? Любая помощь будет принята с благодарностью!

1 Ответ

2 голосов
/ 18 апреля 2020

Таким образом, похоже, что проблема была вызвана неправильными инструкциями каталога в Makefile драйвера DisplayLink, как я в конечном итоге нашел здесь (хотя это относится к выпуску rpm драйвера).

Похоже, что когда я обновился до ядра 5.4, это также изменило способ синтаксического анализа Make-файлов, так что любые параметры SUBDIRS = игнорируются, оставляя инструкции, пытающиеся запустить make, в linux - папка headers / tools / build вместо папки модуля ядра.

Как описано выше в ветке обсуждения, решение состоит в том, чтобы заменить SUBDIRS=blah на M=blah в Makefile, в дополнение к применению другого патча для обновления исходных файлов, которые ссылаются на <linux/reservation.h> вместо того, чтобы ссылаться на более новый <linux/dma-resv.h>.

Когда я обновил источник драйвера DisplayLink 5.2 с этими исправлениями, я смог успешно собрать модуль ядра evdi и подключить другие мои мониторы через DisplayPorts на док. Надеюсь, это поможет кому-то еще, пока не будет выпущен следующий драйвер DisplayLink!

...