简介

  • PC上常用的标准库glibc是一个非常宠大而完整的库,但是对于嵌入式系统来说,其体积显得过于大了一些;uClibc的提出就是为了解决这个问题。
  • uClibc尽可能的兼容Glibc,大多数应用程序可以在很小或完全不修改的情况下就可能使用uClibc替代glibc;通过uClibc来代替Glibc,可以在不改变应用程序功能的前提下,大大减少发布文件的大小,无论应用程序以静态链接来编译,还是以动态链接形式编译。

使用

  • 在嵌入式平台,标准库(不管是glibc还是uClibc)的使用,有两种情况。
  1. 环境搭建时生成交叉编译链;交叉编译链是基于标准库的,使用不同标准库(glibc或uClibc)的编译链也是不同的。
  2. 已有交叉编译链,标准库版本更新。
  • 两种情况的使用方法是不同的。

uClibc 版本更新

  • 在已有交叉编译链,标准库版本的更新和普通库的移植差别不大。
  1. 库下载
  • 早期官网:https://www.uclibc.org/;只能下载早期版本,但是有些有用的文档。
  • 新官网:https://uclibc-ng.org/
  • 库下载地址:https://downloads.uclibc-ng.org/releases/
  • 个人使用的版本是:uClibc-ng-1.0.36
  1. 库编译
  • 使用命令make menuconfig进行配置。
  • 第一步,选择系统平台
Target Architecture - 选择arm
  • 第二步,设置交叉编译链头文件路径
Target Architecture Features and Options
--> Linux kernel header
* 注意:这里选择的不是内核头文件,是交叉编译链中的内核相关接口头文件路径,比较容易出错,编译提示头文件找不到,可以去交叉编译链中找到对应路径再设置。
  • 第三步,设置工具链和调试选项
Development/debugging options -->  Cross-compiling toolchain prefix
  • ssc323平台上还进行了以下设置
* Target Architecture Features and Options
--> Build for EABI
* Target Architecture Features and Options
--> Target Processor Endianness
选择对应的大小端
  • 其它配置,看项目需求,一些配置没选择,程序运行时可能会出错
  • 最后编译
make
  • 生成文件在lib目录下。
  • 替换掉平台中使用的版本即可,注意软链接。

标准库 uClibc相关推荐

  1. C/C++——C语言标准、C语言标准库、 C标准库实现glibc, uClibc, Elibc

    C语言标准 C语言作为一种常用的计算机开发语言,被用于各种领域,尤其是单片机与嵌入式的开发,在现阶段更有着无可替代的作用,我也经常会使用C语言进行各种开发,使用过程中我们经常会听说 GUN C .AN ...

  2. C标准库和glibc(C运行库)的关系

    C 标准主要由两部分组成,一部分描述C的语法,另一部分描述C标准库.C标准库定义了一组标准头文件,每个头文件中包含一些相关的函数.变量.类型声明和宏定义.要在一个平台上支持C语言,不仅要实现C编译器, ...

  3. C++-网络库:Poco概述【开源的C++类库的集合】【提供简单的、快速的网络和可移植应用程序的C++开发】【和C++标准库可以很好的集成并填补C++标准库的功能空缺】【适合嵌入式开发】

    学习一个框架前,要先明白它的是什么,为什么,怎么用.下面这些文字,是从中文poco官网上转过来的,正如poco c++库的特点,非常清晰,代码风格更是一目了然: poco开发库的特点,非常适合写后台处 ...

  4. 不同平台的C/C++标准库

    1. C/C++标准 C/C++所涉及到的参与者,根据角色的不同,可以分为以下3类: C/C++标准起草者,主要在ISO标准组织( International Organization for Sta ...

  5. linux程序 都用libc,uClinux的通用c库:uC-libc和uClibc的区别概述

    uClinux的通用c库:uC-libc和uClibc的区别概述 (2006-09-13 19:49:04) uClinux通常使用两种c库:uC-libc和uClibc.尽管它们名字近似,但有很大区 ...

  6. Go 学习笔记(78)— Go 标准库 net/http 创建服务端(接收 GET、POST 请求)

    使用 net/http 标准库创建一个 http 的 restful api 的服务端,用来处理 GET.POST 等请求. 源代码如下: package mainimport ("enco ...

  7. GCC 连接器、链接标准库 gcc -l、链接手动创建库(指定目录的库 gcc -L)

    1. 链接器 链接器把多个二进制的目标文件(object file)链接成一个单独的可执行文件. 在链接过程中,它必须把符号(变量名.函数名等一些列标识符)用对应的数据的内存地址(变量地址.函数地址等 ...

  8. Go 学习笔记(55)— Go 标准库 sql (初始化数据库、插入、更新、删除数据库表、单行查询、多行查询、事务处理)

    1. 标准库说明 Go 的标准库中是没有数据库驱动,只提供了驱动接口,有很多第三方实现了驱动,我们这里选择 go-sql-driver 这个实现是目前使用最多的.github 地址是:https:// ...

  9. Python 标准库之 subprocesss

    Python 目前已经废弃了 os.system.os.spawn*.os.popen*.popen2.*.commands.* 来执行其他语言的命令,取而代之的是 subprocess 模块. 运行 ...

最新文章

  1. 拥抱敏捷的用例分析方法
  2. Maven发布jar包到Nexus私库
  3. Socket.io 深入理解
  4. shiro-cas------自定义登录页面
  5. R语言与回归分析几个假设的检验
  6. 小程序block标签配合if和else 和 动态修改标题栏
  7. JAVA——电子商城三级分类目录查询-递归树形数据结构
  8. Python代码对接抖音去水印提取API接口、TikTok去水印解析接口的源码
  9. 如果有人问你爬虫抓取技术的门道,请叫他来看这篇文章
  10. linux下对SD卡分区
  11. 多功能科学计算机在线使用,多功能科学计算器
  12. 西门子S7通信案例分享
  13. 三步搞定ABAP DOI操作EXCEL
  14. 划分计算机发展的四个阶段主要依据,计算机的发展划分为4个阶段,分别为什么、什么、什么和什么。...
  15. java集合类set初解
  16. Computer Shader
  17. Scroller源码详解
  18. android 毫秒 计时器,Android时分秒计时器的两种实现方法
  19. 洛谷P3957 跳房子(玩转单调队列)
  20. Android电视开发,Mstar_828平台信号源画面比例调节调用流程

热门文章

  1. 手把手教你搭建OpenStack云平台(超级详细)
  2. 为何优秀的程序员不断离开?
  3. JVM原理及GC优化
  4. oracle 19c INS-20802
  5. 室内设计优美语句_描写家居的优美句子
  6. 阿布扎比王储支持区块链在航空业的应用
  7. 【导航】自己的导航网站
  8. 墨者——WebShell文件上传漏洞分析溯源(第2题)
  9. java梭哈的小游戏
  10. redis:redis介绍和安装、普通连接和连接池、redis 5大数据类型之字符串、Hash、列表、其他操作(通用)、管道、django使用redis、接口缓存