(交叉)编译工具链组成部分分析
|
扩展比较 |
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/例外情况 |

浙公网安备 33010602011771号