随笔分类 -  c

摘要:转载 1、变量名是给编译器看的,编译器根据变量是局部还是全局分配内存地址或栈空间,所谓的变量名在内存中不存在,操作时转换成地址数存放在寄存器中了。其实可以理解为是符号表起到了连接作用。 2、符号表 (此段摘抄网上一个课件) 符号表在编译程序工作的过程中需要不断收集、记录和使用源程序中一些语法符号的类 阅读全文
posted @ 2018-11-26 23:01 扫驴 阅读(2073) 评论(0) 推荐(0) 编辑
摘要:本文转载自https://www.cnblogs.com/vipchenwei/p/8686472.html 他也是转载的,但是他里面的博客有些指的一看 本文转载于:https://www.zhihu.com/question/34266997?from=profile_question_card 阅读全文
posted @ 2018-11-26 22:59 扫驴 阅读(266) 评论(0) 推荐(0) 编辑
摘要:libc中果然有很多的函数,使用nm看了一下,里面竟然还有reboot函数,汗! 使用grep,可以看到各种 printf 也都在这里头。 objdump是看函数的地址与函数名对应的,虽然也能证明printf在libc中,但是感觉有些大才小用哪。 使用objdump一下,比nm多出来一些信息,看来n 阅读全文
posted @ 2018-10-09 20:35 扫驴 阅读(546) 评论(0) 推荐(0) 编辑
摘要:转载https://blog.csdn.net/iEearth/article/details/49952047 还有一篇博客也可以看看https://blog.csdn.net/xp5xp6/article/details/52513428 https://www.cnblogs.com/open 阅读全文
posted @ 2018-10-09 16:59 扫驴 阅读(27188) 评论(1) 推荐(3) 编辑
摘要:做C语言开发的人,经常会遇到“ANSI C”、“ISO C”与“Standard C”三种术语,经常会让人傻傻分不清楚。博主之前按也是搞不清三者的关系,于是某天下定决心,一定要搞清楚三者的关系,先百度上搜下。下面是在百度百科上搜索关键字“ANSI C”得到的结果: 分割线 http://baike. 阅读全文
posted @ 2018-10-08 00:36 扫驴 阅读(320) 评论(0) 推荐(0) 编辑
摘要:现在centos6.8-x64系统里的c标准库已经成了glibc,glibc取代了libc,c标准库的位置在/lib64/libc.so.6 以下为转载 一、libc库 Linux平台提供的C标准库包括: 一组头文件,定义了很多类型和宏,声明了很多库函数。这些头文件放在哪些目录下取决于不同的编译器, 阅读全文
posted @ 2018-09-19 22:18 扫驴 阅读(15156) 评论(0) 推荐(1) 编辑
摘要:现在规定一下头文件书写规范, 根据陈皓编写的跟我一起些makefile,一定要记住:头文件中应该只是声明,而定义应该放在C/C++文件中。否则如果出现有定义,比如头文件中有int a =2;如果有多个源程序文件引用该头文件,那么在链接的时候就会出现重复定义,即使在头文件的首尾添加#ifnef,#de 阅读全文
posted @ 2018-09-16 01:59 扫驴 阅读(990) 评论(0) 推荐(0) 编辑
摘要:gcc 生成 .a静态库和 .so动态库 我们通常把一些公用函数制作成函数库,供其它程序使用。函数库分为静态库和动态库两种。静态库在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库。动态库在程序编译时并不会被连接到目标代码中,而是在程序运行是才被载入,因此在程序运行时还需要动态库存在。本 阅读全文
posted @ 2018-09-16 01:28 扫驴 阅读(341) 评论(0) 推荐(0) 编辑
摘要:静态库是在链接阶段被链接的,所以生成的可执行文件就不受库的影响,即使库被删除,程序依然可以成功运行。 而依赖动态库的程序其实也有链接动态库的阶段,只不过这个链接并不是真正的将动态库链接到程序中,其目的是告诉程序,所依赖的到底是哪个动态库。 静态库有点类似于将静态库复制到程序中,而动态库是在程序中创建 阅读全文
posted @ 2018-09-16 01:03 扫驴 阅读(2604) 评论(0) 推荐(0) 编辑
摘要:转载自 https://www.cnblogs.com/qingjiaowoxiaoxioashou/p/6410588.html 根据链接时期的不同,库又有静态库和动态库之分。静态库是在链接阶段被链接的,所以生成的可执行文件就不受库的影响,即使库被删除,程序依然可以成功运行。而动态库是在程序执行的 阅读全文
posted @ 2018-09-15 05:11 扫驴 阅读(769) 评论(0) 推荐(0) 编辑
摘要:这个命令很灵活,格式是: cc -o 目标二进制可执行文件 文件1 文件2 文件3 。。。。。 其中目标文件后面的文件,可为源代码,也可为二进制文件,也可为库文件 比如: cc -c a.c;此命令生成a.o cc -c b.c;此命令生成b.o ar -crv libb.a b.o;此命令生成静态 阅读全文
posted @ 2018-09-15 04:46 扫驴 阅读(4875) 评论(0) 推荐(0) 编辑
摘要:经测试,链接静态库的时候静态库的搜索路径包括/lib;/lib64;/usr/lib;/usr/lib64/;/usr/local/lib;/usr/local/lib64, 静态库文件完整的搜索顺序: 比如我们要生成的最终可执行文件叫main 主程序源代码叫main.c,生成好的库文件叫做kkk库 阅读全文
posted @ 2018-09-15 01:19 扫驴 阅读(1535) 评论(0) 推荐(0) 编辑
摘要:转载自:https://www.cnblogs.com/benio/archive/2010/10/25/1860394.html -l参数就是用来指定程序要链接的库,-l参数紧接着就是库名,那么库名跟真正的库文件名有什么关系呢?就拿数学库来说,他的库名是m,他的库文件名是libm.so,很容易看出 阅读全文
posted @ 2018-09-14 23:41 扫驴 阅读(272) 评论(0) 推荐(0) 编辑
摘要:#include发生在预处理阶段,整个编译链接过程,#include是最简单的了,没有之一。就是在include的位置直接把文件原原本本完完整整一字不落的包含进来,下面举一个极端点的例子: 所以include后,源程序变为 2.关于c语言中#include 路径查找问题 1. 包含命令中的文件名可以 阅读全文
posted @ 2018-09-11 17:44 扫驴 阅读(3451) 评论(0) 推荐(0) 编辑
摘要:c从源代码到二进制可执行文件,到底经历了哪些步骤呢? 可分为两部,编译和链接,在linux中,编译的命令是cc -c,链接的命令是cc -o 而编译又可分为三部,分别是预处理,编译,汇编 程序的基本流程如图: 1. 预处理 预处理相当于根据预处理指令组装新的C/C++程序。经过预处理,会产生一个没有 阅读全文
posted @ 2018-09-11 17:33 扫驴 阅读(3543) 评论(0) 推荐(0) 编辑
摘要:一: python代码: 在b函数中,有a=4这样的代码,说明a是函数b内部的局部变量,而不是外部的那个值为2的全局变量a,那么第一行代码就报错了,原因是local variable 'a' referenced before assignment 而在c中就不会报错: 在main函数中,变量a开始 阅读全文
posted @ 2018-09-10 19:29 扫驴 阅读(2805) 评论(0) 推荐(0) 编辑
摘要:/*主程序在a.c*/ //a.c #include #include "b.h" main(){ printf ("%d\n",a); a=32; printf ("%d\n",a); bb(); } //a.c end //b.h int a; void bb(void); //b.h end //b.c #include #include "b.h" static ... 阅读全文
posted @ 2018-09-09 18:24 扫驴 阅读(159) 评论(0) 推荐(0) 编辑
摘要:2.作用域: 3. 4 定义在程序文件最外层的声明以及定义: 阅读全文
posted @ 2018-09-08 17:10 扫驴 阅读(157) 评论(0) 推荐(0) 编辑
摘要://a.c #include #include "a.h" #include "b.h" void main(void) { printf("safadf %d",i); } //a.c end //a.h #include "b.h" //a.h end //b.h int i = 3; //b.h end /*本例中主程序在a.c中定义。 正常情况下,这三个文件都在同一目录下,进入该目录... 阅读全文
posted @ 2018-09-07 21:56 扫驴 阅读(208) 评论(0) 推荐(0) 编辑
摘要:我想多说关于程序编译的一些规范和方法,一般来说,无论是C、C++、还是pas,首先要把源文件编译成中间代码文件,在Windows下也就是 .obj 文件,UNIX下是 .o 文件,即 Object File,这个动作叫做编译(compile)。然后再把大量的Object File合成执行文件,这个动 阅读全文
posted @ 2018-09-07 18:47 扫驴 阅读(174) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示