OK6410A 开发板 (七) 8 buildroot-2021.02 OK6410A 用户空间的C语言标准库

发布者:梦想启航最新更新时间:2022-08-18 来源: csdn关键字:OK6410A  开发板  C语言  标准库 手机看文章 扫描二维码
随时随地手机看文章

该文中讲了

C有标准, 有些时候会升级(就像armv6 armv7 armv8 一样),有C99, C11

C++有标准, 有些时候会升级(就像armv6 armv7 armv8 一样),有C++03, C++11, C++14


标准 并不对应代码 , 我们需要将标准转换为代码,并能够解析代码

标准涉及到两个东西

编译器

标准对应的代码 : 标准库

对于C   是 C标准库和ISO C标准库 // C标准库和ISO C标准库 是一样的

对于C++ 是 C++标准库


C标准库的实现有很多种

GNU组织 实现了一种, 叫 glibc

apple公司实现了一种, 位于 libSystem 中

微软公司 实现了 一种,位于 CRT

google公司 实现了一种,叫Bionic

嵌入式中一般用 uClibc-ng, musl libc和diet libc // 提供更小的二进制文件和更少的内存占用

C++标准库的实现有很多种

GNU组织实现了一种,叫libstdc++

apple公司没有实现,但使用了libc++

微软公司 实现了 一种,位于 CRT

google公司没有实现,提供了多种 libc++ libstdc++ STLport


各大linux发行版用了C/C++标准库的哪些实现

ubuntu 16.04 用了 glibc 和 libstdc++


我们必需使用标准库吗

可以不用

只要在你的程序中不引入它们的任何一个头文件,就代表了不用标准库

但是你实现工程的时候就需要通过一些提供的系统调用使用某种方法与操作系统互动。

其实 标准库中的函数/方法在底层实现的时候 也是 用 系统调用(与硬件设备交互)做的


嵌入式可以考虑不使用标准库(但是一般没必要)

极致优化 可以考虑 不使用标准库(这个就很有必要了)


C标准在哪里

https://www.zhihu.com/question/20725002

c语言有标准文档 。ISO国际组织官网能搜索到相关标准号是ISO/IEC 9899:2011文件


想要下载这些pdf文档居然还要花钱,198的瑞士法郎换成人民币是1300左右


C语言的虽然标准是有国际标准化组织制定的,但是具体编译器的实现和标准制定还是有所不同的


比如GNU GCC 编译器就添加了自己的语法规则,还有嵌入式领域的Keil C51编译器(多定义了自己的数据类型),还有基于llvm框架的Clang编译器,还有和Visual Studio2015集成的VC++ Compiler(包含了微软自定义的内联汇编的语法)都有各自的特殊语法规则,但大体来说每个c语言编译器还是实现了标准文档里面的大部分特性


去找这些编译器官方文档,也是可以。如果用GNU GCC就它的官方网站下载他的文档吧


要写可移植的代码的话最好只看标准文档,另外虽然正式稿收费,但是草案是免费的,在正式稿出版之前的最后一版草案往往和正式标准基本没有区别,所以作为一般学习者使用标准草案才是上策



https://stackoverflow.com/questions/81656/where-do-i-find-the-current-c-or-c-standard-documents


https://en.cppreference.com/w/c


搞了C11的草案,分享给大家

链接:https://pan.baidu.com/s/1aCr7-gpw56qIXDjW82XwPQ 

提取码:np0b


搞到了 gnu c 的介绍(其中包括C标准的实现部分介绍)

地址 : https://gcc.gnu.org/onlinedocs/gcc/index.html

好像没有 pdf 格式 // https://www.zhihu.com/question/24151438

在这里插入图片描述

关键字:OK6410A  开发板  C语言  标准库 引用地址:OK6410A 开发板 (七) 8 buildroot-2021.02 OK6410A 用户空间的C语言标准库

上一篇:OK6410A 开发板 (八) 79 linux-5.11 OK6410A schedule总览
下一篇:OK6410A 开发板 (七) 7 buildroot-2021.02 OK6410A 用户空间的浮点处理过程

推荐阅读最新更新时间:2024-10-11 12:41

JZ2440开发板烧写系统
注意USB烧写方法: 1、因为没有裁剪的u-boot达到500K,但是我们自带的u-boot烧写分区没有这么大,所以不能使用u-boot来烧写u-boot,只能使用u-boot里的指令来烧写: 烧写到nand flash: usb 1 30000000 用DNW发送文件过去 nand erase 0 80000 nand write 30000000 0 80000 把开关拨到nand重启有输出,说明现在支持了nand启动 烧写到nor flash: usb 1 30000000 //1表示一直等待 用DNW发送文件过去 protect off all //解除norf
[单片机]
反思里寻找C语言之路
记得苏格拉底所说的那样一句话,人的知识如同一个圆的面积,而接触知识的范围就是圆的周长知道得越多,才发现不知道的也越多。不知道这是在夸自己还是在打击。 大学里这浑浑噩噩的生活一度的让我成为迷途的羔羊,与我心目中的完全是唱了反调。很放松,放松的有一丝丝的放纵。如果不是在理想中来考察我的生活,那生活的平庸将使我痛苦不堪,而在我怀有这种杂念的时候,欲望受到侵蚀,行动定要受阻。就在生活里我深深的体会到了这一点,根本不存在出路,只存在幻想、幻想 这致命的东西。 2009年大一里的我很狂,很目中无物。觉得自己什么都行,什么都了解,什么活动都能搞定。在当时毫无生气的环境里越是最求卓越,最求别人的仰慕,尝试各种各样的锻炼之后感觉学校里的讲台太小了,
[单片机]
OK6410A 开发板 (八) 22 linux-5.11 OK6410A start_kernel 功能角度 第一阶段
CPU0 从 u-boot 的 theKernel 到 linux的 start_kernel中的 stext - start_kernel cpu 寄存器的初始化 sp寄存器 cpsr Supervisor Mode irq disabled fiq disabled little endian cp15 寄存器 的初始化 cache dcache icache write buffer mmu page table domain access CPU1 … cpu 寄存器的初始化 sp寄存器 // 值来自于 cpu0的设定值 secondary_da
[单片机]
可支持快速二次开发的zigbee核心板
关于zigbee组网协议,我们是否发现,只要涉及到二次开发,总会遇到各种无法预料的问题。下面就随网络通信小编一起来了解一下相关内容吧。 zigbee二次开发大家都在抱怨什么? 可支持快速二次开发的zigbee核心板 目前市面上的zigbee模块最大的不足在于不能很好的支持用户进行二次开发,即便支持,用户也只能基于原始的zigbee协议栈进行应用的实现,所花费的时间和精力多用于zigbee组网协议,而并非自己的核心技术和产品。如何才能解决二者之间的矛盾,让客户快速完成应用和产品的开发呢? AW系列zigbee核心板是ZLG致远电子结合多年的市场经验和各行业用户的实际需求,集成一系列不同层次的处理器,并结合现成、稳定、可靠的z
[网络通信]
基于单片机的红外发射C语言程序
#include reg52.h sbit P3_4 = P2^1; static bit OP; //红外发射管的亮灭 static unsigned int count; //延时计数器 static unsigned int endcount; //终止延时计数 static unsigned char flag; //红外发送标志 char iraddr1; //十六位地址的第一个字节 char iraddr2; //十六位地址的第二个字节 void SendIRdata(char p_irdata); void delay(); void main(void) { count = 0; fl
[单片机]
OK6410A 开发板 (三) 25 u-boot-2021.01 boot 解析 U-boot 内存命令 md
md.b $address $count (从地址$address处显示$count个字节的数据 b=byte,字节,8位) md.w $address $count (从地址$address处显示$count个字的数据 w=word,字 ,16位) md.l $address $count (从地址$address处显示$count个双字的数据 l=long,双字,32位) 内存里的数据 = tftp 51000000 2led_c.bin dm9000 i/o: 0x18000300, id: 0x90000a46 DM9000: running in 16 bit mode MAC: 76:c5:cb:38
[单片机]
STM32MP135开发板助力电力行业,IEC61850协议移植笔记
1.概述 IEC61850是变电站自动化系统(SAS)中通信系统和分散能源(DER)管理的国际标准。它通过标准的实现,实现了智能变电站的工程运作标准化。使得智能变电站的工程实施变得规范、统一和透明,在电力和储能系统中应用非常广泛。 本文基于米尔MYD-YF13X开发板,在Linux系统上移植和使用开源的libIEC61850库,该库提供了用C语言编写的IEC 61850 / MMS,IEC 61850 / GOOSE和IEC 61850-9-2 /采样值通信协议的服务端和客户端库。 IEC61850开源库了解更多请访问:http://libiec61850.com/libiec61850/ MYD-YF13X开发板了解更多访问
[单片机]
STM32MP135<font color='red'>开发板</font>助力电力行业,IEC61850协议移植笔记
Nordic低功耗蓝牙开发板为专业,业余IoT应用提供快速原型构建
挪威奥斯陆 2016年11月8日 Nordic Semiconductor宣布香港红熊公司在新的 BLE Nano 2.0开发板 中选择Nordic新一代nRF52832低功耗蓝牙(Bluetooth low energy)(前称为蓝牙智能)系统级芯片(SoC)。BLE Nano 2.0设计面向低功耗蓝牙物联网(IoT)应用的业余爱好者、生产商和专业开发人员。 这款开发板的外形尺寸是18.5 x 21mm,包含基于Nordic nRF52832的MB-02专有天线封装(Antenna-on-Package, AOP)模块,上面安装开发人员的应用软件。开发板具有11个可编程I/O,并支持3.3 至13V电源。该产品可以加入
[物联网]
Nordic低功耗蓝牙<font color='red'>开发板</font>为专业,业余IoT应用提供快速原型构建
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved