首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >docker buildkit opencv编译

docker buildkit opencv编译
EN

Stack Overflow用户
提问于 2022-09-16 06:46:47
回答 1查看 34关注 0票数 0

我有一个Dockerfile来编译opencv很长一段时间。最近,我决定试用buildkit (用于交叉编译)。但是,使用buildkit,opencv编译失败。有以下错误:

代码语言:javascript
复制
#9 130.0 [ 87%] Linking CXX shared library ../../lib/libopencv_imgcodecs.so
#9 130.5 [ 87%] Built target opencv_imgcodecs
#9 130.5 [ 87%] Generating src/moc_window_QT.cpp
#9 130.5 [ 87%] Generating qrc_window_QT.cpp
#9 130.5 standard input:0: Note: No relevant classes found. No output generated.
#9 130.5 RCC: Error in '/opencv/modules/highgui/src/window_QT.qrc': Cannot find file 'files_Qt/Milky/48/28.png'
#9 130.5 make[2]: *** [modules/highgui/CMakeFiles/opencv_highgui.dir/build.make:78: modules/highgui/qrc_window_QT.cpp] Error 1
#9 130.5 make[1]: *** [CMakeFiles/Makefile2:1684: modules/highgui/CMakeFiles/opencv_highgui.dir/all] Error 2
#9 130.5 make: *** [Makefile:163: all] Error 2

我尝试在git clone之后停止构建,以查看文件files_Qt/Milky/48/28.png是否存在于容器中,它是否存在。此外,如果我从容器中的交互式shell开始编译过程,编译过程就会成功。

因此,编译似乎只有在它是坞构建的一部分时才会失败。

有没有人知道有关buildkit如何工作的更多细节,以及这是否会对编译过程产生影响?

下面是构建命令和Dockerfile的一个最小示例:

代码语言:javascript
复制
DOCKER_BUILDKIT=1 docker build --no-cache --progress=plain -t "buildkit_error:latest" -f Dockerfile .
代码语言:javascript
复制
FROM ubuntu:20.04

WORKDIR /

# Setup apt repositories
RUN \
  apt update && \
  apt install -y --no-install-recommends \
      wget \
      software-properties-common && \
  add-apt-repository ppa:deadsnakes/ppa && \
  apt install -y --fix-broken && \
  apt update && \
  apt upgrade -y && \
  apt dist-upgrade -y && \
  apt remove -y python3 && \
  apt clean && \
  apt autoremove -y && \
  apt autoclean -y

# Install apt packages
# ORDER ALPHABETICALLY!
RUN \
  apt install -y --no-install-recommends \
      build-essential \
      clang-10 \
      cmake \
      cpio \
      git \
      libdrm-dev \
      libcairo2-dev \
      libomp-10-dev \
      llvm-10-dev \
      openssh-client \
      pkg-config \
      python3.6-dev \
      python3.6-distutils\
      python3.6-minimal \
      python3-pip \
      qt5-default

# Install pip dependencies
# ORDER ALPHABETICALLY!
RUN python3.6 -m pip install --no-cache-dir \
  numpy==1.16.1 \
  setuptools==59.6.0 \
  wheel==0.37.1

RUN \
    ln -sf /usr/bin/python3.6 /usr/bin/python3 && \
    ln -sf /usr/bin/python3 /usr/bin/python

ENV opencv=3.4.3
RUN git clone --branch $opencv --depth 1 https://github.com/opencv/opencv.git

RUN ls -al /opencv/modules/highgui/src/files_Qt/Milky/48

# build opencv from source
RUN \
  mkdir opencv/build && cd opencv/build && cmake -DBUILD_TIFF=ON \
  -DCMAKE_C_COMPILER=clang-10 \
  -DCMAKE_CXX_COMPILER=clang++-10 \
  -DENABLE_FAST_MATH=ON \
  -DCMAKE_BUILD_TYPE=Release \
  -DBUILD_opencv_java=OFF \
  -DWITH_CUDA=OFF \
  -DENABLE_CXX11=ON \
  -DWITH_OPENGL=ON \
  -DWITH_OPENCL=ON \
  -DWITH_IPP=ON \
  -DWITH_TBB=ON \
  -DWITH_EIGEN=ON \
  -DWITH_V4L=OFF \
  -DWITH_GTK=ON \
  -DWITH_GTK_2_X=ON \
  -DBUILD_PERF_TESTS=OFF \
  -DBUILD_opencv_apps=OFF \
  -DBUILD_JAVA=OFF \
  -DBUILD_PROTOBUF=OFF \
  -DBUILD_PACKAGE=OFF \
  -DBUILD_TESTS=OFF \
  -DBUILD_opencv=OFF \
  -DBUILD_opencv_dnn=OFF \
  -DBUILD_opencv_java_bindings_generator=OFF \
  -DBUILD_opencv_shape=OFF \
  -DBUILD_opencv_stitching=OFF \
  -DBUILD_opencv_superres=OFF \
  -DBUILD_opencv_ts=OFF \
  -DBUILD_opencv_video=OFF \
  -DBUILD_opencv_videoio=OFF \
  -DBUILD_opencv_videostab=OFF \
  -DBUILD_opencv_world=OFF \
  -DBUILD_opencv_ml=OFF \
  -DBUILD_opencv_photo=OFF \
  -DWITH_1394=OFF \
  -DWITH_FFMPEG=OFF \
  -DWITH_GSTREAMER=OFF \
  -DWITH_IMGCODEC_HDR=OFF \
  -DWITH_IMGCODEC_PXM=OFF \
  -DWITH_IMGCODEC_SUNRASTER=OFF \
  -DWITH_JASPER=OFF \
  -DWITH_OPENCVAMDBLAS=OFF \
  -DWITH_OPENCVAMDFFT=OFF \
  -DWITH_OPENEXR=OFF \
  -DWITH_OPENNI=OFF \
  -DWITH_OPENNI2=OFF \
  -DWITH_OPENVX=OFF \
  -DWITH_VTK=OFF \
  -DWITH_V4L=OFF \
  -DWITH_QUIRC=OFF \
  -DWITH_QT=ON \
  -DBUILD_opencv_calib3d=ON \
  -DBUILD_opencv_core=ON \
  -DBUILD_opencv_python3=ON \
  -DBUILD_opencv_flann=ON \
  -DBUILD_opencv_python_binding_generator=ON \
  -DBUILD_opencv_highgui=ON \
  -DBUILD_opencv_imgcodecs=ON \
  -DBUILD_opencv_features2d=ON \
  -DBUILD_opencv_imgproc=ON \
  -DWITH_OPENMP=ON \
  -DWITH_PNG=ON \
  -DWITH_HALIDE=OFF .. && \
  make -j6 && make install
EN

回答 1

Stack Overflow用户

发布于 2022-09-29 07:40:28

经过一番调查,我终于偶然发现了一张票:https://gitlab.archlinux.org/archlinux/archlinux-docker/-/issues/32

这些评论给了我一个想法,即内核可能是问题所在。我对内核进行了升级,这似乎解决了问题。

希望这能对未来的其他人有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73740928

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档