简介
- PC上常用的标准库glibc是一个非常宠大而完整的库,但是对于嵌入式系统来说,其体积显得过于大了一些;uClibc的提出就是为了解决这个问题。
- uClibc尽可能的兼容Glibc,大多数应用程序可以在很小或完全不修改的情况下就可能使用uClibc替代glibc;通过uClibc来代替Glibc,可以在不改变应用程序功能的前提下,大大减少发布文件的大小,无论应用程序以静态链接来编译,还是以动态链接形式编译。
使用
- 在嵌入式平台,标准库(不管是glibc还是uClibc)的使用,有两种情况。
- 环境搭建时生成交叉编译链;交叉编译链是基于标准库的,使用不同标准库(glibc或uClibc)的编译链也是不同的。
- 已有交叉编译链,标准库版本更新。
uClibc 版本更新
- 在已有交叉编译链,标准库版本的更新和普通库的移植差别不大。
- 库下载
- 早期官网:https://www.uclibc.org/;只能下载早期版本,但是有些有用的文档。
- 新官网:https://uclibc-ng.org/
- 库下载地址:https://downloads.uclibc-ng.org/releases/
- 个人使用的版本是:uClibc-ng-1.0.36
- 库编译
- 使用命令make menuconfig进行配置。
- 第一步,选择系统平台
Target Architecture - 选择arm
Target Architecture Features and Options
--> Linux kernel header
* 注意:这里选择的不是内核头文件,是交叉编译链中的内核相关接口头文件路径,比较容易出错,编译提示头文件找不到,可以去交叉编译链中找到对应路径再设置。
Development/debugging options --> Cross-compiling toolchain prefix
* Target Architecture Features and Options
--> Build for EABI
* Target Architecture Features and Options
--> Target Processor Endianness
选择对应的大小端
- 其它配置,看项目需求,一些配置没选择,程序运行时可能会出错
- 最后编译
make
- 生成文件在lib目录下。
- 替换掉平台中使用的版本即可,注意软链接。