如何在 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 本身组成。你将无法用任何其他图像来逃避它。也许您可以在构建后清除一些构建依赖项以减小最终大小。
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 本身组成。你将无法用任何其他图像来逃避它。也许您可以在构建后清除一些构建依赖项以减小最终大小。