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

做建材的网站好名字杭州搜索推广公司

做建材的网站好名字,杭州搜索推广公司,移动开发软件,网站更换服务器在windows下#xff0c;很多用来进行编程软件对于写好的文件#xff0c;点击编译即可生成想要文件。如.exe可执行文件#xff0c;.hex文件或者.bin文件等等。软件为我们省略了很多事。但是对于linux初学者来说#xff0c;初次接触linux系统#xff0c;面对命令行黑框框有点…        在windows下很多用来进行编程软件对于写好的文件点击编译即可生成想要文件。如.exe可执行文件.hex文件或者.bin文件等等。软件为我们省略了很多事。但是对于linux初学者来说初次接触linux系统面对命令行黑框框有点无从下手也不明白linux下C程序不用可视化编译器如何对程序进行编译生成可执行文件。 一、C文件的编译过程  C语言的编译过程是将源代码转换成计算机能够被理解的机器代码的过程。一般来说主要为以下流程。 C文件-预处理-编译-汇编-连接-可执行文件。 1.1预处理 首先是预处理阶段主要对源代码的预处理指令进行处理如头文件 #include stdio.h、宏定义 #define  XX 等等。将#include xx.h替换成头文件中的东西并删除不属于程序的内容如程序中的注释。预处理完输出的文件被称为pp文件通常以.i或者.ii结尾。 1.2编译 编译阶段通过编译器将预处理后的文件转换为汇编语言代码。在这个过程中编译器会进行词法分析和语法分析检查代码的语法和语义确保代码的正确性。同时编译器还会生成与平台相关的汇编代码。编译阶段完成后会生成一个或多个汇编文件这些文件是用汇编语言编写的包含了与C语言源代码对应的机器代码指令。 1.3汇编 汇编阶段将编译阶段生成的汇编码转换为目标文件汇编器将汇编代码转换为机器码并生成一个或者多个目标文件.o或.obj文件。 1.4链接 链接过程是将汇编阶段生成的目标文件或者多个目标文件以及库文件合并成一个可执行文件。链接器还会进行地址解析和重定位等工作以确保最终生成的可执行文件中的地址正确无误。链接阶段完成后会生成最终的可执行文件这个文件可以直接在操作系统上运行。 二、GCC编译器 gcc编译器是linux环境中使用的比较多的一个编译器gccGNU Compiler CollectionGNU编译器套件。 在linux下可以直接通过命令行查看gcc编译器的使用方法 man gcc 在命令行界面中直接输入man gcc即可查看使用方法 gcc         xx1        xx2 xx1为选项即使用gcc进行什么操作 xx1可为以下几种选项 -c 只编译不链接为可执行文件编译器将输入的.c 文件编译为.o 的目标文件。 -o 输出文件名用来指定编译结束以后的输出文件名如果不使用这个选项的话 GCC 默 认编译出来的可执行文件名字为 a.out。 例 gcc -o hello hello.c  hello为生成的可执行文件的名字hello.c为需要编译的c文件。 -g 添加调试信息如果要使用调试工具(如 GDB)的话就必须加入此选项此选项指示编 译的时候生成调试所需的符号信息。 -O 对程序进行优化编译如果使用此选项的话整个源代码在编译、链接的的时候都会进 行优化这样产生的可执行文件执行效率就高。 -O2 比-O 更幅度更大的优化生成的可执行效率更高但是整个编译过程会很慢。 2.1 编译流程 GCC 编译器的编译流程是预处理、编译、汇编和链接。预处理就是展开所有的头文件、 替换程序中的宏、解析条件编译并添加到文件中。编译是将经过预编译处理的代码编译成汇编 代码也就是我们常说的程序编译。汇编就是将汇编语言文件编译成二进制目标文件。链接就 是将汇编出来的多个二进制目标文件链接在一起形成最终的可执行文件链接的时候还会涉 及到静态库和动态库等问题。 2.2 单个文件编译运行 对于简单的单个的C程序只需要调用系统的头文件而不需要调用外部自己编写的c程序那么只需要使用 gcc -o  xx   xx.c即可。如下所示。 在命令行中输入 vi hello.c 在hello.c中添加一个简单的c程序 #include stdio.hint main(void){printf(hello world\r\n);return 0;}保存后退出使用gcc编译 gcc -o hello hello.c 使用ls 即可查看到生成的hello文件 运行 ./hello  即可看到命令行输出打印信息 2.3 多个文件编译链接运行 通过键盘输入两个整形数字然后计算他们的和并将结果显示在屏幕上在这个工程中我们有 main.c、 input.c 和 calcu.c 这三个 C 文件和 input.h、 calcu.h 这两个头文件。其中 main.c 是主体 input.c 负责接收从键盘输入的数值 calcu.c 进行任意两个数相加。 在文件夹中创建以下几个文件 main.c 1 #include stdio.h2 #include input.h3 #include calcu.h4 5 int main(int argc, char *argv[])6 {7 int a, b, num;8 input_int(a, b);9 num calcu(a, b);10 printf(%d %d %d\r\n, a, b, num);11 }input.c #include stdio.h #include input.hvoid input_int(int *a, int *b){printf(input two num:);scanf(%d %d, a, b);printf(\r\n);} calcu.c #include calcu.h int calcu(int a, int b) {return (a b); }input.h #ifndef _INPUT_H #define _INPUT_Hvoid input_int(int *a, int *b);#endif calcu.h #ifndef _CALCU_H #define _CALCU_Hint calcu(int a, int b);#endif 输入命令行  gcc main.c calcu.c input.c -o main 对 main.c calcu.c input.c 进行编译并链接成 main 可执行文件 运行结果 三、 makefile引入使用 3.1 实例 对于2.3中的例子只需要一行代码即可解决编译看起来还是挺简单的。但是在实际项目中有很多.c和.h文件如果每次都这样编译链接的话可就太麻烦了。因此引入makefile简化这个编译流程。 在当前文件中创建一个 Makefile文件 vi Makefile 在代码中添加 1 main: main.o input.o calcu.o2 gcc -o main main.o input.o calcu.o3 main.o: main.c4 gcc -c main.c5 input.o: input.c6 gcc -c input.c7 calcu.o: calcu.c8 gcc -c calcu.c9 10 clean:11 rm *.o12 rm main写好makefile后使用make 即可对多个文件进行编译、链接 make 可以看到编译器单独对 main.c input.c calcu.c 进行了编译最后链接生成了main.o可执行文件 对于多个C文件来说方便了很多。 3.2 makefile解释 1 main: main.o input.o calcu.o2 gcc -o main main.o input.o calcu.o3 main.o: main.c4 gcc -c main.c5 input.o: input.c6 gcc -c input.c7 calcu.o: calcu.c8 gcc -c calcu.c9 10 clean:11 rm *.o12 rm mainmain: main.o input.o calcu.ogcc -o main main.o input.o calcu.o main 是最后需要生成的目标文件而main.o input.o calcu.o是生成main所需要的依赖文件 如果要更新目标 main就必须先更新它的所有依赖文件如果依赖文件中的任何一个有更新那么目标也必须更新“更新”就是执行一遍规则中的命令列表。 并通过gcc 命令将main.o input.o calcu.o链接成可执行文件main。 main.o: main.cgcc -c main.c 如上述代码差不多main.o为目标文件main.c为依赖文件通过执行gcc -c main.c生成目标文件。input.o calcu.o跟这个一样就不过多阐述了。 clean:rm *.orm main 当需要清除生成的目标文件时可通过命令行控制删除以.o结尾的目标文件 删除可执行文件 main。 可以看到输入make clean命令后以上文件皆被删除了。
http://www.w-s-a.com/news/906983/

相关文章:

  • 网站开发负责人是什么职位试剂网站建设
  • 什么是展示型网站wordpress链接视频
  • 佳木斯城乡建设局网站过年做哪个网站能致富
  • 石家庄快速网站搭建设计公司属于什么企业
  • 中小学智慧校园建设平台网站sem竞价推广
  • 想创建一个网站官方网站建设推广
  • 江门网站优化民间it网站建设
  • 科研实验室网站建设wordpress加载模板
  • 用r做简易的网站软件园二期做网站的公司
  • 菏泽网站建设价格长春高档网站建设
  • PHP网站开发与管理设计心得网站流量图怎么做
  • 苏州做网站企业wordpress点击文字弹出层
  • 做网站必要性中山古镇做网站
  • 增城住房和城乡建设局网站2021网站你懂我意思正能量
  • seo优秀网站深圳企业医疗网站建设
  • 单页 网站 模板重庆微信网站制作专家
  • 石家庄网站定制制作企业所得税优惠政策最新2022文件
  • 免费推广网站途径有哪些郑州企业型网站建设
  • wap网站建设设计wordpress首页名称
  • wordpress网站换空间南宁网站设计可以找我
  • 期货贵金属网站建设招远网站建设哪家专业
  • 上海网站排名个人网站可以做百度推广
  • 网站主题及样式优化个人网站 可以做论坛吗
  • 中企动力 网站推广一级域名免费申请
  • 山东专业的网站建设博罗做网站哪家强
  • 手机网站支持微信支付吗宝塔如何添加ip域名做网站
  • 什么专业学网站建设企业合同管理系统
  • 我要啦免费统计怎么做网站销售订单管理系统软件
  • 门户网站建设教程更改wordpress端口
  • 普兰店网站建设公司云计算培训