标准库 uClibc
简介
- 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
- ssc323平台上还进行了以下设置
* Target Architecture Features and Options
--> Build for EABI
* Target Architecture Features and Options
--> Target Processor Endianness
选择对应的大小端
- 其它配置,看项目需求,一些配置没选择,程序运行时可能会出错
- 最后编译
make
- 生成文件在lib目录下。
- 替换掉平台中使用的版本即可,注意软链接。
标准库 uClibc相关推荐
- C/C++——C语言标准、C语言标准库、 C标准库实现glibc, uClibc, Elibc
C语言标准 C语言作为一种常用的计算机开发语言,被用于各种领域,尤其是单片机与嵌入式的开发,在现阶段更有着无可替代的作用,我也经常会使用C语言进行各种开发,使用过程中我们经常会听说 GUN C .AN ...
- C标准库和glibc(C运行库)的关系
C 标准主要由两部分组成,一部分描述C的语法,另一部分描述C标准库.C标准库定义了一组标准头文件,每个头文件中包含一些相关的函数.变量.类型声明和宏定义.要在一个平台上支持C语言,不仅要实现C编译器, ...
- C++-网络库:Poco概述【开源的C++类库的集合】【提供简单的、快速的网络和可移植应用程序的C++开发】【和C++标准库可以很好的集成并填补C++标准库的功能空缺】【适合嵌入式开发】
学习一个框架前,要先明白它的是什么,为什么,怎么用.下面这些文字,是从中文poco官网上转过来的,正如poco c++库的特点,非常清晰,代码风格更是一目了然: poco开发库的特点,非常适合写后台处 ...
- 不同平台的C/C++标准库
1. C/C++标准 C/C++所涉及到的参与者,根据角色的不同,可以分为以下3类: C/C++标准起草者,主要在ISO标准组织( International Organization for Sta ...
- linux程序 都用libc,uClinux的通用c库:uC-libc和uClibc的区别概述
uClinux的通用c库:uC-libc和uClibc的区别概述 (2006-09-13 19:49:04) uClinux通常使用两种c库:uC-libc和uClibc.尽管它们名字近似,但有很大区 ...
- Go 学习笔记(78)— Go 标准库 net/http 创建服务端(接收 GET、POST 请求)
使用 net/http 标准库创建一个 http 的 restful api 的服务端,用来处理 GET.POST 等请求. 源代码如下: package mainimport ("enco ...
- GCC 连接器、链接标准库 gcc -l、链接手动创建库(指定目录的库 gcc -L)
1. 链接器 链接器把多个二进制的目标文件(object file)链接成一个单独的可执行文件. 在链接过程中,它必须把符号(变量名.函数名等一些列标识符)用对应的数据的内存地址(变量地址.函数地址等 ...
- Go 学习笔记(55)— Go 标准库 sql (初始化数据库、插入、更新、删除数据库表、单行查询、多行查询、事务处理)
1. 标准库说明 Go 的标准库中是没有数据库驱动,只提供了驱动接口,有很多第三方实现了驱动,我们这里选择 go-sql-driver 这个实现是目前使用最多的.github 地址是:https:// ...
- Python 标准库之 subprocesss
Python 目前已经废弃了 os.system.os.spawn*.os.popen*.popen2.*.commands.* 来执行其他语言的命令,取而代之的是 subprocess 模块. 运行 ...
最新文章
- 拥抱敏捷的用例分析方法
- Maven发布jar包到Nexus私库
- Socket.io 深入理解
- shiro-cas------自定义登录页面
- R语言与回归分析几个假设的检验
- 小程序block标签配合if和else 和 动态修改标题栏
- JAVA——电子商城三级分类目录查询-递归树形数据结构
- Python代码对接抖音去水印提取API接口、TikTok去水印解析接口的源码
- 如果有人问你爬虫抓取技术的门道,请叫他来看这篇文章
- linux下对SD卡分区
- 多功能科学计算机在线使用,多功能科学计算器
- 西门子S7通信案例分享
- 三步搞定ABAP DOI操作EXCEL
- 划分计算机发展的四个阶段主要依据,计算机的发展划分为4个阶段,分别为什么、什么、什么和什么。...
- java集合类set初解
- Computer Shader
- Scroller源码详解
- android 毫秒 计时器,Android时分秒计时器的两种实现方法
- 洛谷P3957 跳房子(玩转单调队列)
- Android电视开发,Mstar_828平台信号源画面比例调节调用流程