Я пытаюсь собрать busybox из исходного кода, установил все необходимые зависимости, но сборка каждый раз завершается с ошибкой: заголовок ncurses не найден. Ошибка.
ОС: Arch Linux x86_64 (в докере: образ ArchLinux)
Ядро: 6.8.9-arch1-2
Оболочка: bash 5.2.21
Установленные пакеты: bzip2 git make gcc ncurses flex bison bc cpio libelf openssl
Источник: git clone --length 1 https://git.busybox.net/busybox
Создайте cmd: cd busybox && make menuconfig
Ожидаемое поведение: открывается графический интерфейс конфигурации
Реальное поведение:
*** Не удалось найти библиотеки ncurses или
*** необходимые файлы заголовков.
*** Для команды make menuconfig требуются библиотеки ncurses.
***
*** Установите ncurses (ncurses-devel) и попробуйте еще раз.
***
make[2]: *** [/home/sysmount/busybox/scripts/kconfig/lxdialog/Makefile:15: scripts/kconfig/lxdialog/dochecklxd
диалог] Ошибка 1
make[1]: *** [/home/sysmount/busybox/scripts/kconfig/Makefile:14: menuconfig] Ошибка 2
make: *** [Makefile:444: menuconfig] Ошибка 2
поскольку Archlinux объединяет файлы заголовков с базовым пакетом ncurses, этого не должно происходить.





Для меня это было просто :)
$ nano scripts/kconfig/lxdialog/Makefile
и захэшируйте эту строку:
always := $(hostprogs-y) dochecklxdialog
удаление правила запуска проверки не решает проблему
У меня это работает 😊 Можете ли вы объяснить особенности?
diff --git a/scripts/kconfig/lxdialog/check-lxdialog.sh b/scripts/kconfig/lxdialog/check-lxdialog.sh
index 5075ebf2..4e138366 100755
--- a/scripts/kconfig/lxdialog/check-lxdialog.sh
+++ b/scripts/kconfig/lxdialog/check-lxdialog.sh
@@ -47,7 +47,7 @@ trap "rm -f $tmp" 0 1 2 3 15
check() {
$cc -x c - -o $tmp 2>/dev/null <<'EOF'
#include CURSES_LOC
-main() {}
+int main() {}
EOF
Вы можете ответить на свой вопрос, включив трассировку оболочки (установив -x) в
check-lxdialog.sh, чтобы увидеть, какие параметры ей передаются. Скрипт перенаправляет свои ошибки на/dev/null— просмотр этих ошибок покажет вам, что пошло не так.