(交叉)编译工具链组成部分分析
扩展比较 |
musl |
uClibc |
dietlibc |
glibc |
Complete .a set |
426k |
500k |
120k |
2.0M † |
Complete .so set |
527k |
560k |
185k |
7.9M † |
最小的静态C程序 |
1.8k |
5k |
0.2k |
662k |
静态hello(使用printf) |
13k |
70k |
6k |
662k |
动态开销 (min. dirty) |
20k |
40k |
40k |
48k |
静态开销(min. dirty) |
8k |
12k |
8k |
28k |
静态stdio开销 (min. dirty) |
8k |
24k |
16k |
36k |
可配置功能集 |
no |
yes |
最小 |
最小 |
资源枯竭行为 |
musl |
uClibc |
dietlibc |
glibc |
本地线程存储 |
报告失败 |
失败 |
n/a |
失败 |
SIGEV_THREAD计时器 |
无错误 |
n/a |
n/a |
超支失败 |
pthread_cancel |
无错误 |
失败 |
n/a |
失败 |
regcomp与regexec |
报告失败 |
失败 |
报告失败 |
失败 |
fnmatch |
无错误 |
unknown |
无错误 |
报告失败 |
printf类 |
无错误 |
无错误 |
无错误 |
报告失败 |
strtol类 |
无错误 |
无错误 |
无错误 |
无错误 |
性能比较 |
musl |
uClibc |
dietlibc |
glibc |
小额分配和免费 |
0.005 |
0.004 |
0.013 |
0.002 |
大额分配和免费 |
0.027 |
0.018 |
0.023 |
0.016 |
分配争用,本地 |
0.048 |
0.134 |
0.393 |
0.041 |
分配争用,共享 |
0.050 |
0.132 |
0.394 |
0.062 |
零填充(memset) |
0.023 |
0.048 |
0.055 |
0.012 |
字符串长度(strlen) |
0.081 |
0.098 |
0.161 |
0.048 |
字节搜索(strchr) |
0.142 |
0.243 |
0.198 |
0.028 |
子字符串 (strstr) |
0.057 |
1.273 |
1.030 |
0.088 |
线程创建/连接 |
0.248 |
0.126 |
45.761 |
0.142 |
互斥锁/解锁 |
0.042 |
0.055 |
0.785 |
0.046 |
UTF-8解码缓冲 |
0.073 |
0.140 |
0.257 |
0.351 |
UTF-8逐字节解码 |
0.153 |
0.395 |
0.236 |
0.563 |
Stdio putc/getc |
0.270 |
0.808 |
7.791 |
0.497 |
Stdio putc/getc解锁 |
0.200 |
0.282 |
0.269 |
0.144 |
Regex编译 |
0.058 |
0.041 |
0.014 |
0.039 |
Regex搜索(a{25}b) |
0.188 |
0.188 |
0.967 |
0.137 |
Self-exec (静态链接) |
234µs |
245µs |
272µs |
457µs |
Self-exec (动态链接) |
446µs |
590µs |
675µs |
864µs |
ABI和版本控制比较 |
musl |
uClibc |
dietlibc |
glibc |
稳定的ABI |
yes |
no |
非正式 |
yes |
LSB兼容ABI |
不完整 |
no |
no |
yes |
向后兼容性 |
yes |
no |
非正式 |
yes |
前向兼容性 |
yes |
no |
非正式 |
no |
原子升级 |
yes |
no |
no |
no |
符号版本控制 |
no |
no |
no |
yes |
算法比较 |
musl |
uClibc |
dietlibc |
glibc |
子字符串搜索(strstr) |
双向 |
天真的 |
天真的 |
双向 |
正则表达式 |
dfa |
dfa |
原路返回 |
dfa |
排序(qsort) |
平滑排序 |
shellsort |
天真的 quicksort |
向内排序 |
分配器 (malloc) |
musl-native |
dlmalloc |
diet-native |
ptmalloc |
功能比较 |
musl |
uClibc |
dietlibc |
glibc |
合格打印 |
yes |
yes |
no |
yes |
精确浮点打印 |
yes |
no |
no |
yes |
C99数学库 |
yes |
部分的 |
no |
yes |
C11线程API |
yes |
no |
no |
no |
C11线程本地存储 |
yes |
yes |
no |
yes |
GCC libstdc++兼容性 |
yes |
yes |
no |
yes |
POSIX线程 |
yes |
yes, on most archs |
broken |
yes |
POSIX过程调度 |
stub |
不正确 |
no |
不正确 |
POSIX线程优先调度 |
yes |
yes |
no |
yes |
POSIX localedef |
no |
no |
no |
yes |
宽字符界面 |
yes |
yes |
最小 |
yes |
旧式8位代码页 |
no |
yes |
最小 |
slow, via gconv |
传统CJK编码 |
no |
no |
no |
slow, via gconv |
UTF-8多字节 |
native; 100%合格 |
native; 不合格 |
危险的不合格 |
slow, via gconv; 不合格 |
Iconv字符转换 |
大多数主要编码 |
主要UTFs |
no |
the kitchen sink |
Iconv音译扩展 |
no |
no |
no |
yes |
开放墙式TCB阴影 |
yes |
no |
no |
no |
Sun RPC, NIS |
no |
yes |
yes |
yes |
Zoneinfo (高级时区) |
yes |
no |
yes |
yes |
Gmon评测 |
no |
no |
yes |
yes |
调试功能 |
no |
no |
no |
yes |
各种Linux扩展 |
yes |
yes |
部分的 |
yes |
目标体系结构比较 |
musl |
uClibc |
dietlibc |
glibc |
i386 |
yes |
yes |
yes |
yes |
x86_64 |
yes |
yes |
yes |
yes |
x86_64 x32 ABI (ILP32) |
实验 |
no |
no |
不合格 |
ARM |
yes |
yes |
yes |
yes |
Aarch64 (64-bit ARM) |
yes |
no |
no |
yes |
MIPS |
yes |
yes |
yes |
yes |
SuperH |
yes |
yes |
no |
yes |
Microblaze |
yes |
部分的 |
no |
yes |
PowerPC (32- and 64-bit) |
yes |
yes |
yes |
yes |
Sparc |
no |
yes |
yes |
yes |
Alpha |
no |
yes |
yes |
yes |
S/390 (32-bit) |
no |
no |
yes |
yes |
S/390x (64-bit) |
yes |
no |
yes |
yes |
OpenRISC 1000 (or1k) |
yes |
no |
no |
非upstream |
摩托罗拉680x0 (m68k) |
yes |
yes |
no |
yes |
MMU-less微控制器 |
yes, elf/fdpic |
yes, bflt |
no |
no |
构建环境比较 |
musl |
uClibc |
dietlibc |
glibc |
旧式代码友好型头文件 |
部分的 |
yes |
no |
yes |
轻型头文件 |
yes |
no |
yes |
no |
无需本机工具链即可使用 |
yes |
no |
yes |
no |
尊重C命名空间 |
yes |
LFS64问题 |
no |
LFS64问题 |
尊重POSIX命名空间 |
yes |
LFS64问题 |
no |
LFS64问题 |
安全性/硬化性比较 |
musl |
uClibc |
dietlibc |
glibc |
注意角落案例 |
yes |
yes |
no |
太多malloc |
安全UTF-8解码器 |
yes |
yes |
no |
yes |
避免超线性big-O's |
yes |
有时 |
no |
yes |
栈溢出保护功能 |
yes |
yes |
no |
yes |
堆损坏检测 |
yes |
no |
no |
yes |
Misc. c比较 |
musl |
uClibc |
dietlibc |
glibc |
许可证 |
MIT |
LGPL 2.1 |
GPL 2 |
LGPL 2.1+ w/例外情况 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
2022-10-17 汽车硬件插拔技术分析
2021-10-17 LLVM Clang前端编译与调试