在编译Docker Alpine中的qpid-cpp时如何解决`构buildCXX对象src / CMakeFiles / qpidcommon.dir / qpid / sys / posix / Condition.cpp.o`?

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以减less图像的磁盘大小

问题

在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 

尝试

为了findDockerfile的replace包,当发生错误时,添加了在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不会build立在Alpine Linux上。

请注意, Ubuntu:16.04映像是130 MB,安装了依赖关系的750 MB。 与Alpine的5 MB和476 MB的依赖相比。

所以这些1.86 GB大部分是由构build依赖关系和qpid构成的。 用任何其他图像你将无法逃脱。 也许你可以在构build之后清除一些构build依赖,以减less最终的大小。

Interesting Posts