当前位置: 首页 > news >正文

深圳网站建设 设计创公司新昌网站开发

深圳网站建设 设计创公司,新昌网站开发,如何用wordpress查看搭建的站点,如何自己做音频网站本期主题#xff1a;程序的编译过程和gcc/g的使用博客主页#xff1a;小峰同学分享小编的在Linux中学习到的知识和遇到的问题小编的能力有限#xff0c;出现错误希望大家不吝赐#x1f341; 1.背景知识 预处理#xff08;进行宏替换#xff0c;去注释#xff0c;头文件的… 本期主题程序的编译过程和gcc/g的使用 博客主页小峰同学分享小编的在Linux中学习到的知识和遇到的问题小编的能力有限出现错误希望大家不吝赐 1.背景知识 预处理进行宏替换去注释头文件的展开条件编译)编译生成汇编)汇编生成机器可识别代码连接生成可执行文件或库文件) 2.gcc如何完成编译 格式: gcc /g[选项] 要编译的文件 [选项] [目标文件]2.1.预处理(进行宏替换) 预处理功能主要包括宏定义,头文件的展开,条件编译,去注释等。预处理指令是以#号开头的代码行。实例: g –E test.cpp –o test.i选项“-E”,该选项的作用是让 gcc 在预处理结束后停止编译过程。选项“-o”是指目标文件,“.i”文件为已经过预处理的C原始程序写一段测试代码 执行指令用vim打开预处理后的test.i文件。并和源文件进行比对可以清楚的看到预处理阶段源程序做的那些事情。可以看到预处理后的还是C语言的程序。结果就是这个可以测试条件编译在源文件里面定义和在外面定义都一样也就是宏的命令行定义。深层理解我们可以看到预处理阶段会把头文件拷贝到源文件里面所以这个头文件一定在我们系统中存在或者在库中存在就相当于我们在某一个平台写代码的时候这个头文件不是写着玩的而是这个必须在系统中确确实实存在在Linux下的头文件在 ./usr/include/stdio.h。头文件存在的意义帮我们写代码支持代码自动补齐。可以使用vim打开看一看系统中的头文件2.2.编译生成汇编在这个阶段中,gcc 首先要检查代码的规范性、是否有语法错误等,以确定代码的实际要做的工作,在检查 无误后,gcc 把C语言代码翻译成汇编语言。 用户可以使用“-S”选项来进行查看,该选项只进行编译而不进行汇编,生成汇编代码。 实例: gcc –S test.i –o test.s 打开里面是汇编语言都是一些助记符这就汇编语言。汇编语言和体系结构有很大关系。但是汇编语言并不能被计算机直接执行下一步就是汇编生成二进制 2.3.汇编生成机器可识别代码 汇编阶段是把编译阶段生成的“.s”文件汇编语言转成二进制目标文件 读者在此可使用选项“-c”就可看到汇编代码已转化为“.o”的二进制目标代码了 实例: gcc –c test.s –o test.o执行汇编阶段的指令 用vim打开汇编阶段生成的 二进制目标文件。可以看到此时我们已经看不懂了。只能使用指令 od test.o 用二进制方式打开。深入理解这里已经是一个机器可以识别的二进制目标文件但是还是不能被执行。上面的三个步骤都只是在编译自己的代码最后我们还要进行最后一步就是链接c标准库我们调用的一系列C语言函数都是c标准库里面提前写好的并且以及完成前三部预处理编译汇编。也是一个二进制目标文件。2.4.连接生成可执行文件或库文件 把你写的代码和c标准库中的代码合起来。生成一个可执行程序。实例gcc test.o -o test链接完成后就生成了可执行程序可执行的二进制文件包含库加你的代码帮助记忆看见盘的左上角 ESc 分别对应预处理编译汇编的指令。形成的临时文件对应后缀为 isogcc -(ESc) ------ test.(iso) 3.函数库重要知识点 3.1.动态链接和静态链接感性的认识重要前提我们要清楚我们自己写的代码和库是两码事。C标准库是别人已经给我们准备好的让我们直接使用。我们的程序中用到的C语言函数scanf printf其实我们自己只是写了函数的调用并没有对应的实现只有在链接的时候对应的实现才和我们的代码关联起来了。链接的本质我们调用库函数的时候和标准库是 怎么进行关联的。关联方式不同就是动态链接和静态链接的不同。3.2.动态链接和静态链接具体认识举个好认识的例子小明去网吧的例子。先直接编译链接出一个可执行程序file test 查看文件的具体信息。ldd test 查看可执行程序依赖的动态库列表。可以看到 Linux下默认使用的动态链接使用的是静态库。在Linux下库的命名动态库libXXXX.soXXXX为库的名称 静态库libXXXX.aXXXX为库的名称选项-static 使用静态链接注意自己是否安装静态库后面有安装说明首先我们看到 静态链接的可执行程序大小比动态链接多很多。Linux下的指令都是使用的动态库所以电脑的动态库一定不能删除。用这个库只有一个但是这么多指令这么多C语言成语程序所以动态库也叫共享库。所以以后我们写好的C语言程序我们就可以直接使用可以共享同一个共享库。静态链接的时候和动态库没有关系拷贝的是libc.a静态库的东西。一般系统会自动携带动态库因为系统运行也需要动态库不会自带静态库需要我们自己安装静态库。安装静态库指令sudo yum install glibc -staticfile静态链接的可执行程序。就可以看到静态链接完成。3.3.c的动静链接c中也和C语言相同默认是动态链接。可以看到c也有自己的动态库。也可以-static 静态链接也是需要自己安装的。安装指令sudo yum insatll -y libstdc-static和C语言相同。系统为了支持我们编程会给我们提供标准库和标准库的 .h。所以得到我们的代码库中的代码 可执行程序上面我们讲到的不只是在Linux下有效在Windows下也是一样的原理。window下的:静态库xxxx.dll 静态库xxx.lib 4. gcc选项 -E 只激活预处理,这个不生成文件,你需要把它重定向到一个输出文件里面 -S 编译到汇编语言不进行汇编和链接 -c 编译到目标代码 -o 文件输出到 文件 -static 此选项对生成的文件采用静态链接 -g 生成调试信息。GNU 调试器可利用该信息。 -shared 此选项将尽量使用动态库所以生成文件比较小但是需要系统由动态库. -O0 -O1 -O2 -O3 编译器的优化选项的4个级别-O0表示没有优化,-O1为缺省值-O3优化级别最高 -w 不生成任何警告信息。 -Wall 生成所有警告信息。
http://www.w-s-a.com/news/446348/

相关文章:

  • 唐山教育平台网站建设上海装修网官网
  • 一个公司做多个网站什么行业愿意做网站
  • 成都龙泉建设网站免费域名app官方下载
  • xss网站怎么搭建如何用wordpress站群
  • 怎样做网站外链supercell账号注册网站
  • 阿里巴巴网站是用什么技术做的哪些网站做推广比较好
  • 做网站go和python手机如何创网站
  • 网站开发进修网站做301将重定向到新域名
  • 公司网站开发费用账务处理ucenter wordpress
  • 六站合一的优势少儿编程机构
  • 软件开发与网站开发学做美食网站哪个好
  • 网站搜索 收录优化百度推广页面投放
  • 响应式网站的优点浙江省网站域名备案
  • 网站安全 扫描深圳被点名批评
  • 在哪个网站可以一对一做汉教网站优化策略
  • 龙岩做网站的顺企网宁波网站建设
  • 昆山网站建设河北连锁餐厅vi设计公司
  • 新蔡县住房和城乡建设局网站南昌租房网地宝网
  • 南宁做网站费用iis编辑网站绑定
  • 家用宽带做网站服务器建网站费用明细
  • 电商 网站 降低 跳出率 措施 效果书画院网站模板
  • 兰州移动官网网站建设上海工商网上公示系统
  • 在招聘网站里做电话销售免费空间可以上传网站吗
  • 梅州建站怎么做中国建设银行官网下载
  • 网站静态化设计广州网站备案方案
  • 西安网络技术有限公司网站扬中网站建设方案
  • 青海省教育厅门户网站wordpress core
  • idc科技公司网站模板蜜雪冰城网络营销案例分析
  • 微信与网站对接手机软件怎么做
  • 户县网站建设珠海专业制作网站