编程常识
gcc
GNU编译器套件(GNU Compiler Collection)包括C、C++、Objective-C、Fortran、Java、Ada和Go语言的前端,也包括了这些语言的库(如libstdc++、libgcj等等)。
binutils
提供了一系列用来创建、管理和维护二进制目标文件的工具程序,如汇编(as)、连接(ld)、静态库归档(ar)、反汇编 (objdump)、elf结构分析工具(readelf)、无效调试信息和符号的工具(strip)等。通常,binutils与gcc是紧密相集成 的,没有binutils的话,gcc是不能正常工作的。
glibc
glibc是gnu发布的libc库,也即c运行库。glibc是linux系统中最底层的api(应用程序开发接口),几乎其它任何的运行库 都会倚赖于glibc。glibc除了封装linux操作系统所提供的系统服务外,它本身也提供了许多其它一些必要功能服务的实现,主要的如下:
- string,字符串处理
- signal,信号处理
- dlfcn,管理共享库的动态加载
- direct,文件目录操作
- elf,共享库的动态加载器,也即interpreter
- iconv,不同字符集的编码转换
- inet,socket接口的实现
- intl,国际化,也即gettext的实现
- io,输入输出
- linuxthreads
- locale,本地化
- login,虚拟终端设备的管理,及系统的安全访问
- malloc,动态内存的分配与管理
- nis
- stdlib,其它基本功能
3、glibc和libc都是Linux下的C函数库,那么到底有什么区别呢? 见到Linux下好多的库函数,曾经令我困惑,其实他们是有章可循的。 libc是Linux下的ANSI C的函数库; glibc是Linux下的GUN C函数库; ANSI C和GNU C有什么区别呢? ANSI C是基本的C语言函数库,包含了C语言最基本的库函数。 这个库可以根据 头文件划分为 15 个部分,其中包括:
字符类型 (<ctype.h>)、
错误码 (<errno.h>)、
浮点常数 (<float.h>)、
数学常数 (<math.h>)、
标准定义 (<stddef.h>)、
标准 I/O (<stdio.h>)、
工具函数 (<stdlib.h>)、
字符串操作 (<string.h>)、
时间和日期 (<time.h>)、
可变参数表 (<stdarg.h>)、
信号 (<signal.h>)、
非局部跳转 (<setjmp.h>)、
本地信息 (<local.h>)、
程序断言 (<assert.h>)
等等。这在其他的C语言的IDE中都是有的。 而GNU C函数库是一种类似于第三方插件的东西,由于Linux是用C语言写的,所以Linux的一些函数功能是用C语言实现的,所以GNU组织开发了一个C语言的库 用于我们更好的利用C语言开发基于Linux操作系统的程序。