博客新地址 (PS:新搭的个人博客)
CentOS 7.6 系统自带的 GCC 版本是 4.8.5,需要手动编译升级,无需重新安装
mkdir -p /opt/gcc-pkg cd /opt/gcc-pkg wget https://mirrors.tuna.tsinghua.edu.cn/gnu/gcc/gcc-9.3.0/gcc-9.3.0.tar.gz tar -zxvf gcc-9.3.0.tar.gz cd gcc-9.3.0/ # 在下载依赖包时需要先下载这个插件,要不会报错 yum install -y lbzip2 # 下载gmp mpfr mpc等供编译需求的依赖项 ./contrib/download_prerequisites # 创建一个新的目录,并在此目录编译安装,不推荐在源码目录操作 mkdir build && cd build # 配置参数(参数含义见下) ../configure --prefix=/usr/local/gcc-9.3.0 --enable-bootstrap --enable-checking=release --enable-languages=c,c++ --disable-multilib # 编译生成 makefile 文件,开 4 个进程进行编译 make -j 4 # 安装 GCC sudo make install # 设置环境变量 vim /etc/profile # 添加以下配置 export LD_LIBRARY_PATH=/usr/local/lib:/usr/lib:/usr/local/lib64:/usr/lib64 export CC=/usr/local/gcc-9.3.0/bin/aarch64-unknown-linux-gnu-gcc export CXX=/usr/local/gcc-9.3.0/bin/aarch64-unknown-linux-gnu-g++ export PATH=/usr/local/gcc-9.3.0/bin:${PATH} # 设置头文件 sudo ln -sv /usr/local/gcc/include/ /usr/include/gcc # 设置库文件 touch /etc/ld.so.conf.d/gcc.conf sudo chmod 777 /etc/ld.so.conf.d/gcc.conf sudo echo -e "/usr/local/gcc/lib64" >> /etc/ld.so.conf.d/gcc.conf # 加载动态连接库 sudo ldconfig -v ldconfig -p | grep gcc # 测试 gcc --version gcc -v–enable-languages表示你要让你的gcc支持哪些编程语言; –disable-multilib表示编译器不编译成其他平台的可执行代码; –disable-checking表示生成的编译器在编译过程中不做额外检查 –enable-checking=xxx 表示编译过程中增加XXX检查 –prefix=/usr/local/gcc-9.3.0 指定安装路径 –enable-bootstrap 表示用第一次编译生成的程序进行第二次编译,然后用再次生成的程序进行第三次编译,并且检查比较第二次和第三次结果的正确性,也就是进行冗余的编译检查工作。 非交叉编译环境下,默认已经将该值设为 enable,可以不用显示指定;交叉编译环境下,需要显示将其值设为 disable。
在把 GCC 更新到 9.3.0 后也需要把系统库更新到与 GCC 相对应的版本,要不在后面编译安装 CMake 的时候会报 libstdc++.so.6: version 'GLIBCXX_3.4.20' not found 或者其他版本错误,解决方案:
cp /usr/local/gcc-9.3.0/lib64/libstdc++.so.6.0.28 /usr/lib64 cd /usr/lib64 ln -s libstdc++.so.6 libstdc++.so.6.0.28 # 检查是否包含 GLIBCXX_3.4.* 版本 strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX GLIBCXX_3.4 GLIBCXX_3.4.1 GLIBCXX_3.4.2 GLIBCXX_3.4.3 GLIBCXX_3.4.4 GLIBCXX_3.4.5 GLIBCXX_3.4.6 GLIBCXX_3.4.7 GLIBCXX_3.4.8 GLIBCXX_3.4.9 GLIBCXX_3.4.10 GLIBCXX_3.4.11 GLIBCXX_3.4.12 GLIBCXX_3.4.13 GLIBCXX_3.4.14 GLIBCXX_3.4.15 GLIBCXX_3.4.16 GLIBCXX_3.4.17 GLIBCXX_3.4.18 GLIBCXX_3.4.19 GLIBCXX_3.4.20 GLIBCXX_3.4.21 GLIBCXX_3.4.22 GLIBCXX_3.4.23 GLIBCXX_3.4.24 GLIBCXX_3.4.25 GLIBCXX_3.4.26 GLIBCXX_3.4.27 GLIBCXX_3.4.28cmake 用于编译 Ck
mkdir -p /opt/cmake-pkg cd /opt/cmake-pkg wget https://github.com/Kitware/CMake/archive/v3.18.4.tar.gz cd cmake-3.18.4 ./bootstrap # 编译安装 make -j 4 make install # 查看版本 cmake --version没有就安装,有就升级
# 先安装这个依赖,不然在后面 git clone 时会报 https 错误 yum install -y curl-devel mkdir -p /opt/git-pkg cd /opt/git-pkg wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.28.0.tar.gz tar -zxvf git-2.28.0.tar.gz cd git-2.28.0 # 编译安装 ./configure --prefix=/usr/local make -j 4 make install # 查看 git 版本 git --version这里需要注意一下,克隆下来的 ClickHouse 是很干净的,没有其他依赖的,但是编译 ClickHouse 需要相关的子依赖和父依赖,所以需要运行命令 git submodule update --init –recursive 这个命令会把相关的依赖都下载下来,但是有些依赖是在国外的服务器上的,比如 Google Git 上,国内网络无法访问,所以会导致报错,解决方案有三个:
在 git 上开代理,直接访问国外的代码仓库(亲测没成功)在本机上开代理,使用全局代理(亲测没成功)购买国外服务器,可以直接访问国外的代码仓库(亲测可用,要花点钱,可以使用 Vultr 平台,按量付费,用完把实例删掉即可)提供网盘下载:链接,提取码:1nwb,该版本是 v20.3.19.4-lts 的完整源码
# 这里是在国外服务器上的操作,如果下载的是网盘链接里面的文件直接跳过这步 git clone https://github.com/ClickHouse/ClickHouse.git git checkout v20.3.19.4-lts git submodule update --init –recursive # 开始准备编译操作 # 由于各种原因无法将下载完成的包快速下载,SFTP 速度过慢,可以使用 HTTP 服务下载 # 先安装 HTTP 服务组件 yum install -y httpd # 关闭防火墙,因为这个服务器只是用来下载工具的,用完就删了,没必要在意安全问题 systemctl stop filewalld # 直接打开 HTTP 服务,无需配置,默认 80 端口 systemctl start httpd # 这是 HTTP 默认访问文件路径 cd /var/www/html # 创建一个临时目录用于下载文件 mkdir test && cd test # 复制之前先打个包,一共 3.3g cp Ck压缩文件 ./ # 在本机访问地址 http://ipAddress:port/test 就可以在网页上看到文件,点击下载即可,这里还是需要在本机开个代理,要不还是很慢 # 下载下来后解压 tar -xzvf ClickHouse.tar.gz这个文件也需要修改,要不然会在编译阶段出现报错,根据报错信息,最终定位到这个文件
# 在 ClickHouse 源码目录下 vim contrib/zlib-ng/CMakeLists.txt # 把所有带有 -march 的地方都改成 -march=armv8-a-DCMAKE_INSTALL_PREFIX 是安装目录
在编译完成后,会缺少一些文件,并不是编译错误造成的,这些文件需要手动添加
config.xmldhparam.pemserver.crtserver.keyusers.xmlconfig.xml 和 users.xml 文件是从源码目录复制过来的
mkdir cliclhouse/config cp ClickHouse/programs/server/config.xml cliclhouse/config/ cp ClickHouse/programs/server/users.xml cliclhouse/config/ # 验证是否安装成功 clickhouse-server --version链接 —— 提取码:9y2u
鲲鹏(ARM64) ClickHouse20.5.1.1 EulerOS2.8移植指南
CentOS7 编译升级GCC至9.3.0
ARM服务器编译安装ClickHouse
