Open quant61 opened 2 years ago
I finally implemented working Dockerfile.
I'm not sure if it's implemented in a best way, but test file with #include <mfast.h>
compiled
FROM teeks99/boost-cpp-docker:clang-14
RUN apt update
RUN apt upgrade -y
RUN apt install -y cmake curl
# copied from `.github/workflows/main.yml`
RUN cd / && curl -L https://boostorg.jfrog.io/artifactory/main/release/1.72.0/source/boost_1_72_0.tar.gz | tar zx
RUN cd /boost_1_72_0 && ./bootstrap.sh && ./b2
RUN git clone --recursive https://github.com/objectcomputing/mFAST.git /mFAST
RUN mkdir /mFAST/build
RUN cd /mFAST/build \
&& cmake -DBOOST_ROOT=/boost_1_72_0 -DBoost_INCLUDE_DIR=/boost_1_72_0 -DCMAKE_C_COMPILER=/usr/bin/clang-14 -DCMAKE_CXX_COMPILER=/usr/bin/clang++-14 .. \
&& make
# make it available without additional flags in compiler
RUN cd /mFAST/build && make install
# without this compiler will `fatal error: 'boost/config.hpp' file not found`
RUN ln -s /boost_1_72_0/boost /usr/local/include/boost
UPDATE: but linker still can't find any references even if I just declare variable of mfast type. so it doesn't work yet.
mi_test.cpp:(.text+0x9): undefined reference to `mfast::malloc_allocator::instance()'
/usr/bin/ld: mi_test.cpp:(.text+0x15): undefined reference to `mfast::fast_encoder::fast_encoder(mfast::allocator*)'
/usr/bin/ld: mi_test.cpp:(.text+0x1e): undefined reference to `mfast::fast_encoder::~fast_encoder()'
Finally, I come to this version:
FROM madduci/docker-linux-cpp
RUN apt update
RUN apt upgrade -y
RUN apt install -y cmake curl git
RUN cd / && curl -L https://boostorg.jfrog.io/artifactory/main/release/1.72.0/source/boost_1_72_0.tar.gz | tar zx
# BOOOST.BOOTSTRAP!!!
# Y U CANNO SPECIFY VERSION FOR CLANG++ ???!!!
RUN update-alternatives --install /usr/bin/clang clang /usr/bin/clang-12 90 --slave /usr/bin/clang++ clang++ /usr/bin/clang++-12
RUN cd /boost_1_72_0 && ./bootstrap.sh -with-toolset=clang \
&& ./b2 && ./b2 install
RUN git clone --recursive https://github.com/objectcomputing/mFAST.git /mFAST && sleep 0
RUN mkdir /mFAST/build
RUN cd /mFAST/build \
&& cmake -DBOOST_ROOT=/boost_1_72_0 \
-DBoost_INCLUDE_DIR=/boost_1_72_0 \
-DCMAKE_C_COMPILER=/usr/bin/clang-12 \
-DCMAKE_CXX_COMPILER=/usr/bin/clang++-12 \
-DBUILD_SHARED_LIBS=ON \
.. \
&& make
RUN cd /mFAST/build && make install
Is it possible to build it with docker?
I tried
Dockerfile:
On make I get following error:
Which docker image and which clang++ or g++ version is it better to use? If possible with std-c++20 or at least std-c++17