Настройка qtbase завершается ошибкой: "не удалось найти спецификацию qmake"."
Я пытаюсь скомпилировать qtbase-everywhere-5.11.0 для Raspberry Pi 3 и настроить фазовые выходы после компиляции qmake с ошибкой, приведенной ниже:
make: Nothing to be done for 'first'.
Could not find qmake spec ''.
Error processing project file: /work/qtbase-everywhere-src-5.11.0
Я делаю это внутри контейнера Docker. Вот это Dockerfile
FROM ubuntu:18.04
COPY sources.list /etc/apt/
RUN apt update -q -yy &&
apt upgrade -q -yy &&
apt install -q -yy aptitude curl
RUN dpkg --add-architecture armhf
RUN apt install -q -yy --allow-downgrades
build-essential
linux-libc-dev:armhf=4.15.0-20.21 linux-libc-dev:amd64=4.15.0-20.21
crossbuild-essential-armhf
libncurses5:amd64=6.1-1ubuntu1
libncursesw5:amd64=6.1-1ubuntu1
libtinfo5:amd64=6.1-1ubuntu1
libgles2-mesa-dev:armhf
libpcre3-dev:armhf
libasound2-dev:armhf
libasound2-data=1.1.3-5
и configure
аргументы
configure
-device linux-rasp-pi3-g++
-examplesdir /usr/lib/qt/examples
-headerdir /usr/include/qt5
-no-rpath
-nomake tests
-plugindir /usr/lib/qt/plugins
-prefix /usr
-v
-confirm-license
-eglfs
-no-cups
-no-iconv
-no-kms
-no-pch
-no-use-gold-linker
-no-xcb
-no-sql-sqlite
-no-sql-mysql
-no-sql-psql
-no-sql-tds
-no-sql-odbc
-no-linuxfb
-no-widgets
-opengl es2
-opensource
-release
-shared
-system-zlib
-device-option CROSS_COMPILE=/usr/bin/arm-linux-gnueabihf-
я понял, что настройка его с параметрами по умолчанию тоже не работает. Бежим просто ./configure -v
внутри исходного каталога дает ту же ошибку.
я обнаружил, что это не происходит, когда я строю с помощью dockcross/linux-armhf7
на основе образов Docker.
1 ответов
это вызвано версией libseccomp, которая поставляется с Ubuntu 18.04 (v2.3.1) не будучи достаточно недавним, чтобы знать statx
syscall, поэтому он не может быть занесен в белый список (v2.3.Для этого потребуется 3, который будет поставляться со следующей версией Ubuntu). Однако Qt 5.10 использует этот syscall в процессе сборки.
в качестве временного решения, вы можете добавить --security-opt seccomp:unconfined
в командной строке docker, но вы должны знать о последствиях для безопасности и использовать это только в trusted docker стеклотара. Кроме того, вы можете, конечно, попробовать обновить libseccomp2
пакета.