byconity 基础环境搭建
个人走了一趟便便,发现centos 编译下最大的问题是。byconity依赖 llvm下clang,但clang 又不完全满足byconity 依赖包,一部分依赖来自于gcc lib,因此我们是在gcc基础上,进行llvm 的编译安装,并在byconity 编译时 设置cmake gcc_toolchain 指向gcc-10,如果官方有其他解决方案也可参考官方。
FROM centos:centos7
USER root
WORKDIR /root/
RUN mv /etc/yum.repos.d /etc/yum.repos.d.bk && mkdir /etc/yum.repos.d && \
curl -L -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo && \
sed -i 's/http/https/g' /etc/yum.repos.d/CentOS-Base.repo && \
yum clean all && yum makecache && \
yum groupinstall "Development Tools" -y && \
yum install -y centos-release-scl wget git swig unzip openssh-server gzip bash binutils bzip2 coreutils diffutils \
findutils grep hostname ncurses-base passwd perl procps psmisc python3 sed tar tzdata util-linux curl make make perl-core zlib-devel
COPY tools ${WORKDIR}/tools
# ninja
RUN cd ${WORKDIR}/tools && \
unzip ninja-linux.zip && mv ninja /usr/local/bin/
# foundationdb
RUN cd ${WORKDIR}/tools && \
yum localinstall -y foundationdb-clients-7.1.27-1.el7.x86_64.rpm
# cmake
RUN cd ${WORKDIR}/tools && \
mkdir /usr/local/cmake-3.25.3 && ./cmake-3.25.3-linux-x86_64.sh --skip-license --prefix=/usr/local/cmake-3.25.3
ENV PATH /usr/local/cmake-3.25.3/bin:${PATH}
# openssl todo --prefix=/usr/local/openssl-1.1.1i --openssldir=/usr/local/openssl-1.1.1i
RUN cd ${WORKDIR}/tools && \
mkdir /usr/local/openssl-1.1.1i && \
tar -zxvf openssl-1.1.1i.tar.gz && cd openssl-1.1.1i && \
./config shared zlib && \
make -j $(nproc) && make install
# gcc
RUN if [ ! -f "/root/tools/gcc-10.2.0.zip" ];then \
cd ${WORKDIR}/tools/ && tar -zxvf gcc-10.2.0.tar.gz && cd gcc-10.2.0 && ./contrib/download_prerequisites ; \
else \
cd ${WORKDIR}/tools/ && unzip gcc-10.2.0.zip && cd gcc-10.2.0 ; \
fi
RUN cd ${WORKDIR}/tools/gcc-10.2.0 && \
mkdir /usr/local/gcc-10.2.0 && \
./configure --prefix=/usr/local/gcc-10.2.0 --enable-checking=release --enable-languages=c,c++ --disable-multilib && \
make -j $(nproc) && make install
RUN if [ ! -f "/lib64/libstdc++.so.6" ];then \
ln -s /usr/local/gcc-10.2.0/lib64/libstdc++.so.6 /lib64/libstdc++.so.6 ; \
else \
rm -rf /lib64/libstdc++.so.6 && ln -s /usr/local/gcc-10.2.0/lib64/libstdc++.so.6 /lib64/libstdc++.so.6 ; \
fi
ENV PATH /usr/local/gcc-10.2.0/bin:${PATH}
ENV LD_LIBRARY_PATH /usr/local/gcc-10.2.0/lib64/:$LD_LIBRARY_PATH
ENV GCC_TOOLCHAIN /usr/local/gcc-10.2.0
# llvm
RUN cd ${WORKDIR}/tools && \
mkdir /usr/local/llvm-11.1.0 && \
mkdir llvm-11.1.0.build && \
tar -xf llvm-11.1.0.src.tar.xz && \
tar -xf lld-11.1.0.src.tar.xz && mv lld-11.1.0.src lld && \
tar -xf compiler-rt-11.1.0.src.tar.xz && mv compiler-rt-11.1.0.src compiler-rt && \
tar -xf clang-11.1.0.src.tar.xz && mv clang-11.1.0.src clang && \
cmake -S ./llvm-11.1.0.src -B ./llvm-11.1.0.build -DCMAKE_INSTALL_PREFIX=/usr/local/llvm-11.1.0 -G Ninja \
-DLLVM_ENABLE_PROJECTS="clang;lld;compiler-rt" -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_C_COMPILER=/usr/local/gcc-10.2.0/bin/gcc -DCMAKE_CXX_COMPILER=/usr/local/gcc-10.2.0/bin/g++ && \
cd llvm-11.1.0.build && ninja -j 70 && ninja install
ENV PATH /usr/local/llvm-11.1.0/bin:${PATH}
ENV LD_LIBRARY_PATH /usr/local/llvm-11.1.0/lib/:$LD_LIBRARY_PATH
RUN rm -rf ${WORKDIR}/tools
RUN rm -rf /etc/yum.repos.d/CentOS-SCLo* && yum makecache
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
tools: # 依赖下载 部分资源可从 https://github.com/enjay-s/software 下载
echo "tools start"
test -d tools || mkdir tools
test -f tools/foundationdb-clients-7.1.27-1.el7.x86_64.rpm || curl -L -o tools/foundationdb-clients-7.1.27-1.el7.x86_64.rpm \
https://github.com/apple/foundationdb/releases/download/7.1.27/foundationdb-clients-7.1.27-1.el7.x86_64.rpm
test -f tools/cmake-3.25.3-linux-x86_64.sh || curl -L -o tools/cmake-3.25.3-linux-x86_64.sh \
https://github.com/Kitware/CMake/releases/download/v3.25.3/cmake-3.25.3-linux-x86_64.sh || chmod a+x tools/cmake-3.25.3-linux-x86_64.sh
test -f tools/ninja-linux.zip || curl -L -o tools/ninja-linux.zip \
https://github.com/ninja-build/ninja/releases/download/v1.11.1/ninja-linux.zip
test -f tools/llvm-11.1.0.src.tar.xz || curl -L -o tools/llvm-11.1.0.src.tar.xz \
https://github.com/llvm/llvm-project/releases/download/llvmorg-11.1.0/llvm-11.1.0.src.tar.xz
test -f tools/clang-11.1.0.src.tar.xz || curl -L -o tools/clang-11.1.0.src.tar.xz \
https://github.com/llvm/llvm-project/releases/download/llvmorg-11.1.0/clang-11.1.0.src.tar.xz
test -f tools/lld-11.1.0.src.tar.xz || curl -L -o tools/lld-11.1.0.src.tar.xz \
https://github.com/llvm/llvm-project/releases/download/llvmorg-11.1.0/lld-11.1.0.src.tar.xz
test -f tools/compiler-rt-11.1.0.src.tar.xz || curl -L -o tools/compiler-rt-11.1.0.src.tar.xz \
https://github.com/llvm/llvm-project/releases/download/llvmorg-11.1.0/compiler-rt-11.1.0.src.tar.xz
test -f tools/openssl-1.1.1i.tar.gz || curl -L -o tools/openssl-1.1.1i.tar.gz \
https://www.openssl.org/source/openssl-1.1.1i.tar.gz
test -f tools/gcc-10.2.0.tar.gz || curl -L -o tools/gcc-10.2.0.tar.gz \
https://ftp.gnu.org/gnu/gcc/gcc-10.2.0/gcc-10.2.0.tar.gz
#test -f tools/gcc-10.2.0.zip
echo "tools finish"
base: tools
echo "base start"
docker build --network=host -t $(BASE_IMAGE) -f ./Dockerfile_base .
echo "base finish"
#基础镜像构建
make base BASE_IMAGE=byconity_base PROJECT=/jasong/ByConity
#git clone
git clone -b jasong_online https://github.com/enjay-s/ByConity
or
git clone https://github.com/ByConity/ByConity
git cherry-pick https://github.com/ByConity/ByConity/commit/5dfe81e0af425f549d3fb0e1ba28af25bf624843
cmake -DCMAKE_BUILD_TYPE=Debug \
-DCMAKE_C_COMPILER=/usr/local/llvm-11.1.0/bin/clang-11 \
-DCMAKE_CXX_COMPILER=/usr/local/llvm-11.1.0/bin/clang++ \
-DGCC_TOOLCHAIN=/usr/local/gcc-10.2.0 \
-G Ninja \
-S /jasong/ByConity \
-B /jasong/ByConity/cmake-build-debug
vnc界面 下文介绍,可参考 https://github.com/enjay-s/Dockerfile/tree/main
效果如下
jum deskop vnc client
clion 基础参数
build
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。