时间:2022-12-26 19:01编辑:九州下载来源:www.wzjsgs.com
这个没有什么特殊的要求。你只要按照你需要的正确的语法规则和编译顺序,将 gcc 编译器对 C 语言源程序的编译选项(例如:对源程序只编译不连接的选项为:-c、或者是生成指定的运行文件:-o my_outputfile,等等)写到 makefile 文本文件中即可。 但是一定要注意它们之间在 makefile 文件之间的前后顺序。
如果Linux服务器能够上网的话,使用 yum命令安装安装gcc yum install gcc 安装g++ yum install gcc-c++如果是纯手工安装RPM包的话,比较繁。要依赖包一个一个安装上去,最后再安装gccrpm -ivh kernel-headers-2.6.32-431.el6.x86_64.rpmrpm -ivh glibc-headers-2.12-1.132.el6.x86_64.rpmrpm -ivh glibc-devel-2.12-1.132.el6.x86_64.rpmrpm -ivh libgomp-4.4.7-4.el6.x86_64.rpmrpm -ivh ppl-0.10.2-11.el6.x86_64.rpmrpm -ivh cloog-ppl-0.15.7-1.2.el6.x86_64.rpmrpm -ivh mpfr-2.4.1-6.el6.x86_64.rpmrpm -ivh cpp-4.4.7-4.el6.x86_64.rpmrpm -ivh gcc-4.4.7-4.el6.x86_64.rpm
GCC 编译可以分为4个阶段:预处理(pre-processing)、编译(compiling)、汇编(assembling)、链接(linking)。
一、预处理阶段 gcc -E hello.c -o hello.i
GCC预处理阶段第一个主要完成的工作是头文件展开,例如一开始#include <stdio.h>,那么预处理阶段就会把这个stdio.h文件加载到你的.c中去,这边还有一个要注意的是#include "stdio.h" 和 #include <stdio.h> 的区别,<>这个尖括号符号代表的意思是让程序在预处理阶段加载文件的时候到预定义的缺省路径下寻找该文件,那缺省路径是什么呢?在LINUX下可以使用 echo | gcc -E -v - 来显示出include包含的路径
二、编译阶段 gcc -S hello.i -o hello.s
gcc在编译阶段进行代码的规范性检查以及代码是否有语法错误,如果没有就生成.s汇编文件。关于汇编本人表示也不太会,如果有兴趣的读者可以自己搜索其他相关文章学习汇编语言。
三、汇编阶段 gcc -c hello.s -o hello.o
将编译生成的汇编文件转换成二进制代码文件.o文件。
四、链接阶段 gcc hello.c -o hello.exe
一旦完成这个阶段就会直接生成一个可执行文件。那么链接阶段到底干了什么呢?
我们都知道预处理的时候虽然加载了stdio.h,但是这个头文件里面全都是一些声明,并没有具体的代码实现,例如调用了printf函数的时候,stdio.h里面没有实现代码,所以链接阶段主要的工作就是链接所需要的函数库。printf这个函数是在libc.so.6这个库里面,所以链接阶段gcc编译器会链接到这个库,所以就实现了这个函数的调用。
专业数据统计,95%的用户会因为[不安全]提示而放弃访问,从而给网站造成用户流失。问题就出在不安全的HTTP 明文传输协议上。2018年2月初,谷歌旗下Chrome浏览器宣布“封杀”HTTP协议的网站,并将这些网站标示为“Not Secure”(不安全)。
2023-03-03 21:141、do-while语句是一种后测试循环语句,即循环体中的代码执行后才会对退出条件进行求值。2、循环体内的代码至少执行一次。do-while的语法如下:do{ statement }while(expression)下面是一个例子:letxhs=0 do{ xhs+=2 }while(xhs<10)在上面的
2023-02-26 12:191、while语句是一种先测试循环语句,即先检测退出条件,再执行循环体内的代码。2、while循环体内的代码有可能不会执行。下面是 while 循环的语法:while(expression){ statement }实例leti=0 while(i<10){ i+=2 }在这个例子中,变量 xhs 从 0 开
2023-02-26 12:181、for语句也是先测试语句,只不过增加了进入循环之前的初始化代码.以及循环执行后要执行的表达式(loop-expression),语法如下:for(initialization;expression;loop-expression){ statement }下面是一个用例:letxhsLength=10 for(letxhs=0;xh
2023-02-26 12:17说明1、for-of语句是一种严格的迭代语句,用于遍历可迭代对象的元素。2、for-of循环将按照可迭代对象的next()方法产生值的顺序迭代元素。关于可迭代对象,请参考ES6系列的Iterator。如果尝试迭代的变量不支持迭代,for-of语句就会出错。语法:只
2023-02-26 12:16说明1、switch语句可用于所有的数据类型(在许多语言中,它只能用于数值),因此可以使用字符串甚至对象。2、条件值不一定是常量,或者是一个变量或者一个表达式。实例switch('helloxhsRookies'){ case'hello'+'xhsRookies&#
2023-02-26 12:15发布日期:2022-10-29人气:641
发布日期:2022-10-10人气:555
发布日期:2022-09-29人气:335
发布日期:2022-09-04人气:311
发布日期:2023-01-16人气:226
发布日期:2022-10-02人气:149
发布日期:2022-11-07人气:145