Настройка 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 пакета.