当前位置: 首页 > 工具软件 > uClibc > 使用案例 >

libc、glibc、libc++、glib、pthread、uclibc、gcc关系

段恩
2023-12-01
libc
Linux下原来的ANSI C的标准C函数库, 逐渐不再被维护,后来逐渐被glibc取代。
库名称:libc.so.6
glibc(GNU C library )
既包含C标准库,也包含POSIX(  为了OS(比如windows和linux)之间的可移植性)库。还有 klibc(KDE),uclibc(小), eglibc( ubuntu系统用的就是eglibc), 主流的一些linux操作系统如 Debian, Ubuntu,Redhat等用的都是glibc或者变种。 是Linux系统中最底层的API,几乎其它任何的运行库都要依赖glibc。glibc最主要的功能就是对系统调用的封装,除了封装系统调用,glibc自身也提供了一些上层应用函数必要的功能,如string,malloc,stdlib,linuxthreads,locale,signal等。
库名称:libc.so.6
uclibc
uClibc 是一个面向嵌入式Linux系统的小型的C标准库。最初uClibc是为了支持uClinux而开发,这是一个不需要内存管理单元(MMU)的Linux版本。uClibc比一般用于Linux发行版的C库GNU C Library (glibc)要小得多, uClibc专注于嵌入式Linux。很多功能可以根据空间需求进行取舍。
库名称:libc.so.6
libstdc++
相比glibc,libstdc++虽然提供了c++程序的标准库,但它并不与内核打交道。对于系统级别的事件,libstdc++首先是会与glibc交互,才能和内核通信。libstdc++与gcc是捆绑在一起的
库名称:libstdc++.so.6
glib
glib也是个c程序库,不过比较轻量级,glib将C语言中的数据类型统一封装成自己的数据类型,提供了C语言常用的数据结构的定义以及处理函数,有趣的宏以及可移植的封装等(注:glib是可移植的,说明你可以在linux下,也可以在windows下使用它, 跟glibc没关系,不依赖glibc)。著名的GTK+和Gnome底层用的都是glib库。
库名称:libglib-2.0.so.0、libgio-2.0.so.0 、libgmodule-2.0.so.0、libgobject-2.0.so.0、libgthread-2.0.so.0
pthread
POSIX Threads 简称 Pthread,是线程的 POSIX 标准,被定义在 POSIX.1c, Threads extensions (IEEE Std1003.1c-1995)标准里,该标准定义了一套 C 程序语言的类型、函数和常量,定义在 pthread.h 头文件和一个线程库里,内容包括线程管理、互斥锁、条件变量、读写锁和屏障。POSIX 信号量(semaphore)和 Pthreads 一起使用,但不是 Pthreads 标准定义的一部分,被定义在 POSIX.1b, Real-time extensions (IEEE Std1003.1b-1993)标准里。因此信号量相关函数的前缀是 “sem_” 而不是“pthread_”。消息队列(Message queue)和信号量一样,和 Pthreads 一起使用,也不是 Pthreads 标准定义的一部分,被定义在 IEEE Std 1003.1-2001 标准里。消息队列相关函数的前缀是 “mq_”。
库名称:libpthread.so.0
注:RT-Thread 的 pthread 接口里面都是用 RT-Thread 接口实现
GCC
GNU Compiler Collection,GNU编译器套件)是由GNU开发的编程语言译器。GNU编译器套件包括C、C++、Objective-C、Fortran、Java、Ada和Go语言前端,也 包括了这些语言的库(如 libstdc++,libgcj等)。 gcc命令:gcc -lstdc++ 等价于g++, pkg-config --cflags --libs glib-2.0。
 类似资料: