本文主要介绍musl的功能、使用方法以及调试方法。
1 Musl简介
Musl简单来讲就是一个简化版的gblic库。这个代码库代码简介,易读性好,适合初学者想学习glibc中的一些实现(glibc的实现过于复杂,不适合入门者学习)。
并且这个clib库使用MIT license许可以协议,意味着开发者可以随意修改代码而不用担心法律存在法律风险。
2 在linux中编译Musl的方法
2.1 下载musl代码
1
2
3
4
5
|
#直接下载最新版本的压缩包
wget https://musl.libc.org/releases/musl-1.2.6.tar.gz
# 使用git下载源代码
git clone git://git.musl-libc.org/musl
|
2.2 编译musl-gcc
1
2
3
4
5
6
|
# 自定义软件配置
./configure --prefix=/usr/local/musl --syslibdir=/usr/local/musl/lib
# 编译源代码
make
sudo make install
|
2.3 使用musl-gcc编译c源代码
1
2
3
4
5
|
# 编译c程序
musl-gcc -o myapp myapp.c
# 编译包含debug信息且将musl静态链接的二进制程序
musl-gcc -g3 -static -o myapp myapp.c
|
3 调试Musl源代码的方法
3.1 编译生成代码调试信息的musl-gcc
1
2
3
4
|
# 在 musl 源码根目录下
./configure --prefix=/usr/local/musl-debug --exec-prefix=/usr/local/musl-debug CFLAGS="-g3 -O0"
make -j$(nproc)
sudo make install
|
3.2 编译包含调试信息的二进制源代码用于gdb调试
1
2
|
# 例如编译 test.c
/usr/local/musl-debug/bin/musl-gcc -g3 -static -o test_with_debug test.c
|