网站建设需求列表,wordpress+设置七牛,怎么创建自己的免费网址,WordPress开发app在LINUX 下安装个啥,都要涉及到编译,尤其是开源软件. 那么编译就涉及到C/C 和对应的库. 我们理一理之间的关系有助于MYSQL8源码编译libc glibc libc libstdc eglibc GCC G CMakeGDB从libc说起。libc是Linux下原来的标准C库#xff0c;也就是当初写hello world时包含的头文件#…在LINUX 下安装个啥,都要涉及到编译,尤其是开源软件. 那么编译就涉及到C/C 和对应的库. 我们理一理之间的关系有助于MYSQL8源码编译libc glibc libc libstdc eglibc GCC G CMakeGDB从libc说起。libc是Linux下原来的标准C库也就是当初写hello world时包含的头文件#include stdio.h 定义的地方。后来逐渐被glibc取代也就是传说中的GNU C Library,在此之前除了有libc还有klibc,uclibc。现在只要知道用的最多的是glibc就行了主流的一些linux操作系统如 Debian, UbuntuRedhat等用的都是glibc那glibc都做了些什么呢glibc是Linux系统中最底层的API几乎其它任何的运行库都要依赖glibc。glibc最主要的功能就是对系统调用的封装你想想看你怎么能在C代码中直接用fopen函数就能打开文件打开文件最终还是要触发系统中的sys_open系统调用而这中间的处理过程都是glibc来完成的。除了封装系统调用glibc自身也提供了一些上层应用函数必要的功能,如string,malloc,stdlib,linuxthreads,locale,signal等等。还有一个glib看起来也很相似那它又是什么呢glib也是个c程序库不过比较轻量级glib将C语言中的数据类型统一封装成自己的数据类型提供了C语言常用的数据结构的定义以及处理函数有趣的宏以及可移植的封装等.(注glib是可移植的说明你可以在linux下也可以在windows下使用它)。那它跟glibc有什么关系吗其实并没有除非你的程序代码会用到glib库中的数据结构或者函数这里强调一点在你准备更换/升级这些库之前你应该好好思考一下你真的要更换/升级吗你要知道你自己在做什么你要时刻知道glibc的影响有多大不管你之前部署的什么程序linux系统的ls,cd,mv,ps等等全都得依赖它很多人在更换/升级都有过惨痛的教训甚至让整个系统奔溃无法启动。所以强烈不建议更换/升级这些库当然如果你写的是C代码还有两个库也要非常重视了libc/libstdc,这两个库有关系吗有。两个都是C标准库。libc是针对clang编译器特别重写的C标准库那libstdc自然就是gcc的事儿了。再说说libstdcglibc的关系。libstdc与gcc是捆绑在一起的也就是说安装gcc的时候会把libstdc装上。那为什么glibc和gcc没有捆绑在一起呢相比glibclibstdc虽然提供了c程序的标准库但它并不与内核打交道。对于系统级别的事件libstdc首先是会与glibc交互才能和内核通信。相比glibc来说libstdc就显得没那么基础了。说完了这些库这些库最终都是拿来干嘛的当然是要将它们与你的程序链接在一起这时候就不得不说说gcc了。你写的C代码.c文件通过gcc首先转化为汇编.S文件之后汇编器as将.S文件转化为机器代码.o文件生成的.o文件再与其它.o文件或者之前提到的libc.so.6库文件通过ld链接器链接在一块生成可执行文件。当然在你编译代码使用gcc的时候gcc命令已经帮你把这些细节全部做好了。那g是做什么的? 慢慢说来不要以为gcc只能编译C代码g只能编译c代码。后缀为.c的gcc把它当作是C程序而g当作是c程序后缀为.cpp的两者都会认为是c程序注意虽然c是c的超集但是两者对语法的要求是有区别的。在编译阶段g会调用gcc,对于c代码两者是等价的但是因为gcc命令不能自动和C程序使用的库联接需要这样gcc -lstdc, 所以如果你的Makefile文件并没有手动加上libstdc库一般就会提示错误要求你安装g编译器了。另外eglibc是嵌入式编程的系统库Make工具遵循着不同的规范和标准所执行的 Makefile 格式也千差万别。这样就带来了一个严峻的问题如果软件想跨平台必须要保证能够在不同平台编译。而如果使用上面的 Make 工具就得为每一种标准写一次 Makefile 这将是一件让人抓狂的工作。CMake就是针对上面问题所设计的工具它首先允许开发者编写一种平台无关的 CMakeList.txt 文件来定制整个编译流程然后再根据目标用户的平台进一步生成所需的本地化 Makefile 和工程文件如 Unix 的 Makefile 或 Windows 的 Visual Studio 工程。从而做到“Write once, run everywhere”。显然CMake 是一个比上述几种 make 更高级的编译配置工具。在 linux 平台下使用 CMake 生成 Makefile 并编译的流程如下编写 CMake 配置文件 CMakeLists.txt 。执行命令 cmake PATH 或者 ccmake PATH 生成 Makefile.txtccmake 和 cmake 的区别在于前者提供了一个交互式的界面。。其中 PATH 是 CMakeLists.txt 所在的目录。使用 make 命令进行编译。UNIX及UNIX-like下的调试工具一般来说GDB主要帮助你完成下面四个方面的功能1、启动你的程序可以按照你的自定义的要求随心所欲的运行程序。2、可让被调试的程序在你所指定的调置的断点处停住。(断点可以是条件表达式)3、当程序被停住时可以检查此时你的程序中所发生的事。4、你可以改变你的程序将一个BUG产生的影响修正从而测试其他BUG。总结下:我们只要记住 glibc glib libstdc GCC G CMakeGDBglibc 是系统C库 不可更新glib 是C语言移植库libstdc 是C语言的标准库GCC 是C语言编译器G 是C语言编译器cmake 是编译配置工具GDB 是调试工具LINUX C语言的多线程POSIXC编译经验小结GCC编译链接参数LINUX LIBXXX.SO NOT FOUND