musl libc是另一种C标准库,比glibc更小巧,并支持静态链接CRT; 在PC上,为了使编译出来的可执行文件能在某种CPU架构的各发行版中运行,可以使用musl编译器来制作静态链接的可执行文件; 本仓库仅用来编译适用于各架构的musl toolchains,没有源代码;
源代码来自:https://git.zv.io/toolchains/musl-cross-make 工具链也可以从此处下载:https://musl.cc/ 原始代码仓库来自:https://github.com/richfelker/musl-cross-make
- 运行环境ubuntu2204
- 这里以x86_64-linux-musl为例
- 把7z压缩包解压到/opt/x86_64-linux-musl
- 修改~/.bashrc增加Path
PATH="/opt/x86_64-linux-musl/bin:$PATH"
- 在x86平台上,使用工具链编译出其它平台的可执行文件
- x86平台本机编译也可以使用此方法,cmake可以兼容
#从本仓库下载musl-cross.toolchain.cmake放到需要编译的项目里
#使用参数传入 -DCMAKE_TOOLCHAIN_FILE=路径/musl-cross.toolchain.cmake
#配置TOOLCHAIN_NAME,支持的名称在下面的表格中列出
export TOOLCHAIN_NAME="riscv64-linux-musl"
#配置TOOLCHAIN_PATH,你自己部署工具链的路径
export TOOLCHAIN_PATH="/opt/riscv64-linux-musl"
cmake -DCMAKE_TOOLCHAIN_FILE=path/to/musl-cross.toolchain.cmake \
-DCMAKE_C_FLAGS="-pthread" -DCMAKE_CXX_FLAGS="-pthread" \
..
- 这里特指在x86_64平台上进行本机编译 host==target
- 注意:如果想在树莓派或riscv等板子上进行本机编译,需要去musl.cc下载以-native结尾的工具链
#没有添加PATH时,可以用绝对路径
export CC="/opt/x86_64-linux-musl/bin/x86_64-linux-musl-gcc"
export CXX="/opt/x86_64-linux-musl/bin/x86_64-linux-musl-g++"
#有添加PATH时
export CC="x86_64-linux-musl-gcc"
export CXX="x86_64-linux-musl-g++"
......
cmake ......
export C_INCLUDE_PATH="/opt/x86_64-linux-musl/x86_64-linux-musl/include"
export LD="/opt/x86_64-linux-musl/bin/x86_64-linux-musl-ld"
export AR="/opt/x86_64-linux-musl/bin/x86_64-linux-musl-ar"
export RANLIB="/opt/x86_64-linux-musl/bin/x86_64-linux-musl-ranlib"
export OBJCOPY="/opt/x86_64-linux-musl/bin/x86_64-linux-musl-objcopy"
export OBJDUMP="/opt/x86_64-linux-musl/bin/x86_64-linux-musl-objdump"
export STRIP="/opt/x86_64-linux-musl/bin/x86_64-linux-musl-strip"
export NM="/opt/x86_64-linux-musl/bin/x86_64-linux-musl-nm"
export SIZE="/opt/x86_64-linux-musl/bin/x86_64-linux-musl-size"
export CPP="/opt/x86_64-linux-musl/bin/x86_64-linux-musl-cpp"
export AS="/opt/x86_64-linux-musl/bin/x86_64-linux-musl-as"
export F77="/opt/x86_64-linux-musl/bin/x86_64-linux-musl-gfortran"
工具链名称 | 备注 |
---|---|
aarch64-linux-musl | |
aarch64_be-linux-musl | |
arm-linux-musleabi | |
arm-linux-musleabihf | |
armeb-linux-musleabi | |
armeb-linux-musleabihf | |
armel-linux-musleabi | |
armel-linux-musleabihf | |
armv5l-linux-musleabi | |
armv5l-linux-musleabihf | |
armv6-linux-musleabi | |
armv6-linux-musleabihf | |
armv7l-linux-musleabihf | |
armv7m-linux-musleabi | |
armv7r-linux-musleabihf | |
i486-linux-musl | |
i686-linux-musl | |
m68k-linux-musl | |
microblaze-linux-musl | |
microblazeel-linux-musl | |
mips-linux-musl | |
mips-linux-muslsf | |
mips-linux-musln32sf | |
mips64-linux-musl | |
mips64-linux-musln32 | |
mips64-linux-musln32sf | |
mips64el-linux-musl | |
mips64el-linux-musln32 | |
mips64el-linux-musln32sf | |
mipsel-linux-musl | |
mipsel-linux-musln32 | |
mipsel-linux-musln32sf | |
mipsel-linux-muslsf | |
or1k-linux-musl | |
powerpc-linux-musl | |
powerpc-linux-muslsf | |
powerpc64-linux-musl | |
powerpc64le-linux-musl | |
powerpcle-linux-musl | |
powerpcle-linux-muslsf | |
riscv32-linux-musl | |
riscv64-linux-musl | |
s390x-linux-musl | |
sh2-linux-musl | |
sh2-linux-muslfdpic | |
sh2eb-linux-musl | |
sh2eb-linux-muslfdpic | |
sh4-linux-musl | |
sh4eb-linux-musl | |
x86_64-linux-musl | 一般家用PC机 |
x86_64-linux-muslx32 |