Linux —— 一键编译安装GCC脚本【Bash】

GCC编译安装脚本支持“yum、apt-get”包管理的linux系统;

#!/usr/bin/env bash
set -e -x

SCRIPTPATH=$(pwd)
WORKSPACE=${SCRIPTPATH}/workspace

GCC_SOURCES_VERSION=latest
THREADS=$(grep -c ^processor /proc/cpuinfo)

[[ $EUID -ne 0 ]] && SUDO=sudo

command -v yum && PACKAGE_MANAGER=yum
command -v apt-get && PACKAGE_MANAGER=apt
$SUDO $PACKAGE_MANAGER install -y curl gcc gcc-c++ bzip2

if [[ "${GCC_SOURCES_VERSION}" == "latest" ]]; then
    GCC_SOURCES_VERSION=$(curl -sSL https://ftpmirror.gnu.org/gcc/ | grep -oE 'gcc-[0-9]+(\.[0-9]+)+' | sort -Vr | head -n1)
fi

GCC_VERSION_SHORT=$(echo "$GCC_SOURCES_VERSION" | grep -oE '[0-9]' | head -n1)

echo "Will download ${GCC_SOURCES_VERSION} (short version: $GCC_VERSION_SHORT)."

mkdir -p "${WORKSPACE}/gcc"
pushd "${WORKSPACE}/gcc"

wget https://ftpmirror.gnu.org/gcc/${GCC_SOURCES_VERSION}/${GCC_SOURCES_VERSION}.tar.xz
tar xf ${GCC_SOURCES_VERSION}.tar.xz
pushd ${GCC_SOURCES_VERSION}
./contrib/download_prerequisites
popd
mkdir gcc-build
pushd gcc-build
../${GCC_SOURCES_VERSION}/configure --enable-languages=c,c++ --disable-multilib
make -j $THREADS
$SUDO make install

popd
popd

$SUDO ln -sf /usr/local/bin/gcc /usr/local/bin/gcc-${GCC_VERSION_SHORT}
$SUDO ln -sf /usr/local/bin/g++ /usr/local/bin/g++-${GCC_VERSION_SHORT}
$SUDO ln -sf /usr/local/bin/gcc /usr/local/bin/cc
$SUDO ln -sf /usr/local/bin/g++ /usr/local/bin/c++

echo '/usr/local/lib64' | $SUDO tee /etc/ld.so.conf.d/10_local-lib64.conf
$SUDO ldconfig

hash gcc g++
gcc --version

export CC=gcc-${GCC_VERSION_SHORT}
export CXX=g++-${GCC_VERSION_SHORT}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容