Centos 7编译musl

更换源

参考 CentOS 7更换为阿里云源

安装依赖

bash 复制代码
# 安装基础开发工具
sudo yum groupinstall -y "Development Tools"

# 安装额外依赖
sudo yum install -y wget git gcc gcc-c++ make \
    gmp-devel mpfr-devel libmpc-devel \
    texinfo bison flex
# 依赖安装失败尝试修改源,失败无法执行后续

下载代码

bash 复制代码
cd ~
git clone https://github.com/richfelker/musl-cross-make
cd musl-cross-make

创建配置文件

bash 复制代码
cat > config.mak << 'EOF'
# 目标架构
TARGET = x86_64-linux-musl

# 安装目录
OUTPUT = /opt/musl-toolchain

# 组件版本(使用稳定版本)
# GCC_VER = 11.2.0
# MUSL_VER = 1.2.3
# BINUTILS_VER = 2.38
# GMP_VER = 6.2.1
# MPC_VER = 1.2.1
# MPFR_VER = 4.1.0

# 通用配置
COMMON_CONFIG += --disable-nls

# GCC 配置:启用 C 和 C++ 支持
GCC_CONFIG += --enable-languages=c,c++
GCC_CONFIG += --disable-libquadmath
GCC_CONFIG += --disable-decimal-float
GCC_CONFIG += --disable-multilib
EOF

编译

bash 复制代码
# 编译
make -j$(nproc)

# 如果编译过程中下载源码失败,可以手动下载
# make download
# make -j$(nproc)

手动下载源码

bash 复制代码
mkdir -p sources
cd sources

# 下载各组件(使用国内镜像加速)
wget https://mirrors.aliyun.com/gnu/gcc/gcc-11.2.0/gcc-11.2.0.tar. xz
wget https://mirrors.aliyun.com/gnu/binutils/binutils-2.38.tar.xz
wget https://mirrors.aliyun.com/gnu/gmp/gmp-6.2.1.tar.xz
wget https://mirrors.aliyun. com/gnu/mpfr/mpfr-4.1.0.tar. xz
wget https://mirrors.aliyun.com/gnu/mpc/mpc-1.2.1.tar. gz
wget https://musl.libc.org/releases/musl-1.2.3.tar.gz
# 下载失败还可以注释掉组件版本,重新尝试
cd ..
make -j$(nproc)

安装

bash 复制代码
sudo make install

配置环境变量(可选)

bash 复制代码
# 既然选择了musl作为编译工具链,那么意味着要做静态编译,跨平台使用。即可以直接指定绝对路径
# 添加到 PATH
echo 'export PATH=/opt/musl-toolchain/bin:$PATH' >> ~/.bashrc
source ~/.bashrc

# 验证安装
x86_64-linux-musl-gcc --version
x86_64-linux-musl-g++ --version
相关推荐
镜子AI5 小时前
镜子AI 技术复盘:三条自动化链路上的“停止条件“设计
运维·人工智能·自动化
tianyuanwo6 小时前
NetBox 数据库详解:当“关系型数据库”被装进一个网络运维的领域模型里
运维·数据库·netbox
HideF6 小时前
Linux sudo
linux
FlightYe6 小时前
视界原理之3D视频(四):裸眼、眼镜和头显
android·linux·c++·3d·ffmpeg·音视频
蹊黎7 小时前
Linux 下用 C 语言实现进度条
linux·c语言·单片机
知已难寻8 小时前
03 · OpenStack的计算管理 Nova
运维·服务器·开发语言·云原生·云计算·openstack·开源软件
huainingning8 小时前
Windows syslog日志服务器搭建与模拟器对接
运维·服务器·智能路由器
牛马鸡niumasi8 小时前
【Linux】C语言文件操作
linux
say_fall8 小时前
【Linux系统编程】Ext 文件系统:磁盘与存储、文件与目录、现代计算机究竟如何寻找文件
linux·运维·服务器·数据库·c++
wacsii9 小时前
【Linux进程(一)】Linux 进程初探:操作系统如何管理进程?fork() 为什么返回两次?
linux·运维·服务器