如何在 Docker Alpine 中编译 qpid-cpp 时解决“Building CXX object src/CMakeFiles/qpidcommon.dir/qpid/sys/posix/Condition.cpp.o”问题?

How to solve `Building CXX object src/CMakeFiles/qpidcommon.dir/qpid/sys/posix/Condition.cpp.o` while compiling qpid-cpp within Docker Alpine?

Qpid-cpp 已编译成 Ubuntu docker 镜像,当前大小为 1.86GB:

REPOSITORY          TAG       IMAGE ID       CREATED             SIZE
ubuntu-qpid-cpp     latest    7e60a5eabee1   44 hours ago        1.86 GB

瞄准

在docker alpine 中编译qpid-cpp 以减少映像的磁盘大小

问题

一些在 Ubuntu 中可用的包在 Alpine 中被省略或不同,例如:

ubuntu

RUN apt-get update -y && \
    apt-get install -y wget && \
    apt-get install -y build-essential python ruby && \
    apt-get install -y cmake libblkid-dev e2fslibs-dev libboost-all-dev libaudit-dev

尝试

为了找到替换包,构建了 Docker 文件,并在发生错误时添加了在 Alpine 中可用的所需包。

高山

RUN apk update && \
    apk add wget python ruby cmake build-base boost-dev util-linux-dev

虽然解决了大部分错误,但在alpine中编译qpid-cpp时出现了以下问题:

[ 17%] Building CXX object 
src/CMakeFiles/qpidcommon.dir/qpid/sys/posix/Condition.cpp.o
In file included from
/qpid-cpp/bld/qpid-cpp-1.36.0/src/qpid/sys/posix/Condition.h:31:0,                 
from /qpid-cpp/bld/qpid-cpp-1.36.0/src/qpid/sys/posix/Condition.cpp:22:
/usr/include/sys/errno.h:1:2: error: #warning redirecting incorrect
#include <sys/errno.h> to <errno.h> [-Werror=cpp]
 #warning redirecting incorrect #include <sys/errno.h> to <errno.h>
  ^~~~~~~
cc1plus: all warnings being treated as errors
make[2]: *** [src/CMakeFiles/qpidcommon.dir/build.make:2727: 
src/CMakeFiles/qpidcommon.dir/qpid/sys/posix/Condition.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:1494: src/CMakeFiles/qpidcommon.dir/all] 
Error 2 make: *** [Makefile:161: all] Error 2
The command '/bin/sh -c cd qpid-cpp/bld/qpid-cpp-1.36.0 && make all && make 
install' returned a non-zero code: 2

问题

在Docker Alpine中编译qpid-cpp时如何解决编译问题Building CXX object src/CMakeFiles/qpidcommon.dir/qpid/sys/posix/Condition.cpp.o

我用 Ubuntu 和 Alpine docker 图像试过这个,我在 Alpine 上遇到了同样的问题。 qpid 似乎不会在 Alpine Linux.

上构建

请注意,Ubuntu:16.04 图像为 130 MB,安装依赖项后为 750 MB。与 Alpine 的 5 MB 和具有依赖项的 476 MB 相比。

所以这 1.86 GB 主要由构建依赖项和 qpid 本身组成。你将无法用任何其他图像来逃避它。也许您可以在构建后清除一些构建依赖项以减小最终大小。