gpt4 book ai didi

docker - KDE目的构建仅在Docker容器中失败

转载 作者:行者123 更新时间:2023-12-02 20:07:06 26 4
gpt4 key购买 nike

当前,最新的KDE / Archlinux版本遇到一个奇怪的问题。
尽管KDE的Purpose框架可以在我们的主机上正常运行,但我们无法在Docker容器中进行编译。我们试图用GCC和Clang编译它。

我们收到的错误是:

CMakeFiles/saveasplugin.dir/saveasplugin.cpp.o: In function `SaveAsShare::SaveAsShare()':
saveasplugin.cpp:(.text+0x81): undefined reference to `vtable for SaveAsShare'
CMakeFiles/saveasplugin.dir/saveasplugin.cpp.o: In function `SaveAsShare::~SaveAsShare()':
saveasplugin.cpp:(.text+0x113): undefined reference to `vtable for SaveAsShare'
CMakeFiles/saveasplugin.dir/saveasplugin.cpp.o: In function `SaveAsShare::~SaveAsShare()':
saveasplugin.cpp:(.text+0x133): undefined reference to `vtable for SaveAsShare'
collect2: error: ld returned 1 exit status
make[2]: *** [src/plugins/saveas/CMakeFiles/saveasplugin.dir/build.make:122: bin/kf5/purpose/saveasplugin.so] Error 1
make[1]: *** [CMakeFiles/Makefile2:1149: src/plugins/saveas/CMakeFiles/saveasplugin.dir/all] Error 2
make: *** [Makefile:130: all] Error 2

您可以使用以下Dockerfile来复制Docker环境:
FROM archlinux/base
RUN pacman -Syu --noconfirm && pacman --noconfirm -S git base-devel cmake extra-cmake-modules asp sudo
RUN useradd -ms /bin/bash arch
RUN echo 'arch ALL=(ALL) NOPASSWD: ALL' > /etc/sudoers
USER arch
WORKDIR /home/arch
RUN asp checkout purpose
WORKDIR /home/arch/purpose/trunk
RUN gpg --keyserver ipv4.pool.sks-keyservers.net --recv-keys 58D0EE648A48B3BB

(如果只有IPv6可用而没有IPv4,则需要编辑第9行)

构建容器后,运行它并执行 makepkg -s --noconfirm
现在它将构建archlinux软件包,并且在链接阶段您将遇到上述错误。

目前,我们甚至根本不知道此错误的原因是什么,因为它在我们的主机上没有任何问题地生成。有任何想法吗?

我们还测试了不同的基本archlinux docker镜像,例如pritunl / archlinux。

环境:
目的:5.43.0-1
GCC:7.3.0
清除:5.0.1-2

最佳答案

这是statx用于生成适当的cpp文件的MOC系统调用的错误。在默认的受限配置中,docker使用seccomp阻止或允许某些syscall,这不允许statx syscall。有关允许的系统调用,请参见this

已经在archlinux bugtrackerqt bugtrackerdocker bugtracker上报告了此错误,没有(永久)解决方案。

解决方案1:
根据this建议使用docker run --security-opt seccomp:unconfined运行您的docker容器。

解决方案2:
修补或降级以从qt中删除statx系统调用。

关于docker - KDE目的构建仅在Docker容器中失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48876001/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com