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

建设银行无锡分行网站桂林黄页大全桂林本地信息网

建设银行无锡分行网站,桂林黄页大全桂林本地信息网,公司网站域名注册,wordpress 手机支付项目九 使用gcc和make调试程序 #职业能力目标和要求 1#xff0c;理解程序调试。 2#xff0c;掌握利用gcc进行调试的方法。 3#xff0c;掌握使用make编译的方法。9.1 了解程序的调试 9.1.1 编译时错误 主要是语法错。 9.1.2 运行时错误 编译器检查不出这类错误#x…项目九 使用gcc和make调试程序 #职业能力目标和要求 1理解程序调试。 2掌握利用gcc进行调试的方法。 3掌握使用make编译的方法。9.1 了解程序的调试 9.1.1 编译时错误 主要是语法错。 9.1.2 运行时错误 编译器检查不出这类错误仍然可以生成可执行文件但是运行时会出错而导致程序崩溃。 要区分编译时和运行时。 9.1.3 逻辑错误和语义错误 如果程序里有逻辑错误编译和运行都会很顺利看上去也不产生任何错误信息但是程序没有干它该干的事情而是干了别的事情。 9.2 使用传统程序语言进行编译 9.2.1 安装GCC 1认识GCC GCC是一套由GNU开发的编程语言编译器以GPL许可证发行的自由软件。可以处理C语言等。 2安装GCC #1检查是否安装 [rootlocalhost ~]# rpm -qa | grep gcc libgcc-4.8.5-39.el7.x86_64 #没有安装#2如果系统还没有安装GCC软件包可以使用yum命令安装所需软件包。 #挂载ISO安装映像: [rootlocalhost ~]# mount /dev/cdrom /iso #制作用于安装的yum源文件 [rootlocalhost ~]# vim /etc/yum.repos.d/dev.repo # /etc/yum.repos.d/dvd.repo # or for ONLY the media repo, do this: # yum --disablerepo\* --enablerepoc6-media [command] [dvd] namedvd baseurlfile:///iso gpgcheck0 enabled1 #使用yum命令查看GCC软件包的信息 [rootlocalhost ~]# yum info gcc #使用yum命令安装GCC。 [rootlocalhost ~]# yum clean all #清除缓存 [rootlocalhost ~]# yum -y install gcc #Complete!表示安装成功 #所有软件包安装完毕可以使用rpm命令再一次进行查询 [rootlocalhost ~]# rpm -qa | grep gcc libgcc-4.8.5-39.el7.x86_64 gcc-4.8.5-39.el7.x86_649.2.2 单一程序打印 hello world 1编辑程序代码即源码 [rootlocalhost ~]# vim hello.c #include stdio.h #这个#号不是注解 int main(void) {printf(Hello World\n); } 2开始编译与测试运行 [rootlocalhost ~]# gcc hello.c [rootlocalhost ~]# ll hello.c a.out #默认生成的文件 -rwxr-xr-x. 1 root root 8360 Nov 28 14:17 a.out -rw-r--r--. 1 root root 68 Nov 28 14:16 hello.c [rootlocalhost ~]# ./a.out Hello World#要生成目标文件object file进行其他操作而且执行文件的文件名也不能用默认的a.out [rootlocalhost ~]# gcc -c hello.c[rootlocalhost ~]# ll hello.* -rw-r--r--. 1 root root 68 Nov 28 14:16 hello.c -rw-r--r--. 1 root root 1496 Nov 28 14:29 hello.o #目标文件 [rootlocalhost ~]# gcc -o hello hello.o [rootlocalhost ~]# ll hello* -rwxr-xr-x. 1 root root 8360 Nov 28 14:30 hello #可执行文件-o的结果 -rw-r--r--. 1 root root 68 Nov 28 14:16 hello.c -rw-r--r--. 1 root root 1496 Nov 28 14:31 hello.o [rootlocalhost ~]# ./hello Hello World9.2.3 主程序子程序链接子程序的编译 1撰写所需要的主程序、子程序 #我们以thanks.c这个主程序去调用thanks_2.c子程序 [rootlocalhost ~]# vim thanks.c #include stdio.h int main(void) {printf(Hello Word\n);thanks_2(); }[rootlocalhost ~]# vim thanks_2.c #include stdio.h void thanks_2(void) {printf(Thak you\n); }2进行程序的编译与链接Link 1开始将源码编译成为可执行的binary file。 [rootlocalhost ~]# gcc -c thanks.c thanks_2.c [rootlocalhost ~]# ll thanks* -rw-r--r--. 1 root root 71 Nov 28 14:40 thanks_2.c -rw-r--r--. 1 root root 1496 Nov 28 15:55 thanks_2.o 生成的目标文件 -rw-r--r--. 1 root root 86 Nov 28 15:55 thanks.c -rw-r--r--. 1 root root 1560 Nov 28 15:55 thanks.o 生成的目标文件 [rootlocalhost ~]# gcc -o thanks thanks.c thanks_2.c [rootlocalhost ~]# ll thanks* -rwxr-xr-x. 1 root root 8424 Nov 28 15:56 thanks -rw-r--r--. 1 root root 71 Nov 28 14:40 thanks_2.c -rw-r--r--. 1 root root 1496 Nov 28 15:55 thanks_2.o -rw-r--r--. 1 root root 86 Nov 28 15:55 thanks.c -rw-r--r--. 1 root root 1560 Nov 28 15:55 thanks.o 生成可执行标文件2执行可执行文件 [rootlocalhost ~]# ./thanks Hello Word Thak you 9.2.4 调用外部函数库加入链接的函数库 #计算三角函数里面的sin90°大多数程序语言都使用弧度而不是“角度”180度等于3.14弧度。 [rootlocalhost ~]# vim sin.c #include stdio.h int main(void) {float value;value sin ( 3.14 / 2 );printf(%f\n,value); } #该结果会报错我们编译时加入额外函数库链接的方式 [rootlocalhost ~]# gcc sin.c -lm -L/lib -L/usr/lib [rootlocalhost ~]# ./a.out I:是加人某个函数库( library) 的意思。 m.县libm.so函数库其中lib与扩展名(.a或.so)不需要写。9.2.5 GCC的简易用法编译、参数与链接) 1仅将原始码编译成为目标文件并不制作链接等功能。 [rootlocalhost ~]# gcc -c hello.c 会生成hello.o文件但不会产生二进制可执行文件。 2在编译的时候依据作业环境给予执行速度优化。 [rootlocalhost ~]# gcc -c hello.c -O 3在进行二进制可执行文件制作时将链接的函数库与相关的路径填入 [rootlocalhost ~]# gcc sin.c -lm -l/usr/lib -I/usr/include -lm指的是libm.so或libm.a函数库文件。-L后面接的路径是刚刚上面那个函数库的搜索目录。-I后面接的是源码内的include文件所在的目录。 4将编译的结果生成某个特定文件。 [rootlocalhost ~]# gcc -o hello hello.c -0后面接的是要输出的二进制可执行文件名。 5在编译的时候输出较多的信息说明。 [rootlocalhost ~]# gcc -o hello hello.c -Wall 9.3 使用make进行宏编译 9.3.1 为什么要用make **1make功能**可以简化编译过程里面所下达的命令 **2案例**假设执行文件里面包含了4个源码文件分别是main.c、haha.c 、sin value.c和cos _value.c, 这4个文件的功能如下。 main.c主要目的是让用户输人角度数据与调用其他3个子程序。haha.c输出一堆信息。sin value.c计算用户输人的角度( 360)正弦数值。cos value.c计算用户输人的角度( 360)余弦数值。 [rootlocalhost ~]# mkdir /c [rootlocalhost ~]# cd /c [rootlocalhost c]# vim main.c #include stdio.h #define pi 3.14159 char name[15]; float angle;int main(void) { printf (\n\nPlease input your name: );scanf (%s, name);printf (\nPlease enter the degree angle (ex 90): );scanf (%f, angle );haha(name);sin_value(angle);cos_value(angle); }[rootlocalhost c]# vim haha.c #include stdio.h int haha(char name[15] ) {printf (\n\nHi, Dear %s, nice to meet you., name); }[rootlocalhost c]# vim sin_value.c#include stdio.h #define pi 3.14159 float angle; void sin_value (void) {float value;value sin( angle / 180.* pi );printf (\nThe Sin is: %5.2f\n, value); }[rootlocalhost c]# vim cos_value.c #include stdio.h #define pi 3.14159 float angle; void cos_value(void) {float value;valuecos(angle/180. * pi);printf (The Cos is: %5.2f\n, value) ; }1,先进行目标文件的编译最终会有4个*.o的文件名出现。 [rootlocalhost c]# gcc -c main.c [rootlocalhost c]# gcc -c haha.c [rootlocalhost c]# gcc -c sin_value.c [rootlocalhost c]# gcc -c cos_value.c2,再链接形成可执行文件main,并加人libm的数学函数。 [rootlocalhost c]# gcc -o main main.o haha.o sin_value.o cos_value.o -lm -L/usr/lib -L/lib3,本程序的运行结果必须输人姓名、360度角的角度值来完成计算。 [rootlocalhost c]# ./main Please input your name: Bobby Please enter the degree angle (ex 90): 30 Hi, Dear Bobby, nice to meet you. The Sin is: 0.50 The Cos is: 0.874,用一个步骤完成上述操作 #先编辑makefile这个规则文件内容是制作出main这个可执行文件 [rootlocalhost c]# vim makefile main: main.o haha.o sin_value.o con_value.ogcc -o main main.o haha.o sin_value.o cos_value.o #尝试使用makefile制订的规则进行编译 [rootlocalhost c]# rm -f main *.o 先将之前的目标文件删除 [rootlocalhost c]# make cc -c -o main.o main.c cc -c -o haha.o haha.c .... 9.3.2 了解makefile的基本语法与变量 1基本的Makefile守则 目标(target):目标文件1 目标文件2 tab gcc -0 欲创建的可执行文件 目标文件1 目标文件2注创建可执行文件的语法就是按“Tab”键开头的那一行。 在makefile当中的#代表注解。需要在命令行(例如gcc这个编译器命令)的第一个字节按 “Tab” 键。目标(target) 与相关文件(就是目标文件)之间需以“:” 隔开。 #例如执行一个命令就直接清除掉所有的目标文件与可执行文件 (1)先编辑makefile 来建立新的规则此规则的目标名称为clean。 [rootlocalhost c]# vim makefile main: main.o haha.o sin_value.o con_value.ogcc -o main main.o haha.o sin_value.o cos_value.o -lm clean:rm -f main main.o haha.o sin_value.o cos_value.o(2)以新的目标(clean)测试看看执行make的结果。 [rootlocalhost c]# make clean rm -f main main.o haha.o sin_value.o cos_value.o(3)我们可以通过shell script的“变量”来简化Makefile。 [rootlocalhost c]# vim makefile LIBS -lm OBJS main.o haha.o sin_value.o con_value.o main:$(OBJS)gcc -o main $(OBJS) $(LIBS) clean:rm -f main $(OBJS) 变量与变量内容以“” 隔开同时两边可以有空格。变量左边不可以按“Tab键例如上面范例的第一行LIBS左边不可以按“Tab’键。变量与变量内容在“”两边不能具有“:”。习惯上变量最好是以“大写字母”为主。运用变量时使用$ {变量}或$ (变量)。该shell的环境变量是可以被套用的例如提到的CFLAGS这个变量。在命令行模式也可以定义变量。 **2**由于GCC在进行编译的行为时会主动地去读取CFLAGS这个环境变量所以可以直接在shell定义这个环境变量也可以在makefile文件里面去定义或者在命令行当中定义。 [rootlocalhost c]# CFLAGS-Wall make clean main #这个操作在make上进行编译时会取用CFLAGS的变量内容#也可以这样 [rootlocalhost c]# vim makefile LIBS -lm OBJS main.o haha.o sin_value.o con_value.o CFLAGS -Wall main:$(OBJS)gcc -o main $(OBJS) $(LIBS) clean:rm -f main $(OBJS) 3环境变量使用的规则如下 make 命令行后面加上的环境变量优先。makefile 里面指定的环境变量第二。shell原本具有的环境变量第三。
http://www.yutouwan.com/news/398491/

相关文章:

  • 宜昌外贸网站建设优化推广WordPress主题自定义里内容
  • 宁波免费建网站中国核工业二三建设有限公司怎么样
  • 合肥网站优化技术教育直播网站建设
  • 怎么利用360域名做网站网站建设 58同城
  • 开o2o网站需要什么手续在本地搭建多个网站
  • 做网站报价出名的江西电信网站备案
  • 跨境电商平台网站wordpress分级菜单
  • 网站服务器自己做设计页面宽度
  • 中山金舜家庭用品有限公司怎样网站地图北京工程造价信息网官网
  • 阿里巴巴网站建设的态度虚心成都人才网站建设
  • 青岛网络推广公司哪家好百度关键词优化排名技巧
  • 大连网站开发 简维科技直装模板下载
  • 网站维护建设招标免费推广网站都有哪些
  • 潍城区住房和城乡建设局网站东莞网站案例营销
  • 重庆市城乡建设施工安全管理总站网站网站一般宽度
  • 云主机安装多个网站自己做网站卖产品怎么样
  • 网站过期就可以抢注vue如何网站开发
  • 网站建设 - 碧诺网络WordPress 要求
  • 安装wordpress用什么宁波seo如何做推广平台
  • 漂亮的蓝色网站网站建设 英语翻译
  • 高端建站咨询建设信用卡手机银行官方网站
  • 网站建设公司广告长沙旅游景点大全排名
  • 做技术一般逛那些网站网站建设网页制作软件
  • wordpress建影视网站上什么网站做会计教育
  • 厂房网行业门户网站建设策划方案ppt网站建设的资料的准备
  • wordpress 自助建站微信小程序加盟哪个好
  • 河北省建设工程安全生产监督管理网站在阿里巴巴上做网站要多少钱
  • tp5.1做的网站上海建设公司
  • 厦门网站开发比较大的公司短网址源码wordpress
  • 重庆网站排名外包成立一家公司的基本流程