gcc编译器是由Free Software Foundation(自由软件基金会)开发并推出的一款GNU编译器套件,软件具有多个平台的兼容性体验,不仅支持在windows平台下进行主流编程语言的编译,而且在Linux系统下也能达到很好的软件应用编程,使用者在命令窗口中键入gcc的程序名,以及一些命令参数便可以执行一系列的功能化操作,每个语言编译器都是独立程序,此程序可处理输入的原始码,并输出组合语言码,软件大部分都是由c编写而成的,很好的增强了底层应用的兼容性开发。
为了解决大多数用户在软件下载资源上的困扰,本站提供
gcc编译器下载,方便用户更好的引用软件提供的功能进行程序应用的编译,引导用户对功能进行快速上手的操作,另外,软件支持常见的C、C++、Objective-C、Fortran、Java等多种语言的编写,极大的简化了不同语言种类的多编译选择难题。有需要的用户可以在本站下载!
注:下载包中有gcc编译器windows版安装包以及软件使用说明,请用户不要轻易删除安装包文件以及更改文件类型。安装教程
1、在本站下载好压缩包,解压缩,双击运行“gccgdb.exe”程序进行软件的解压安装,自定义软件解压目录,点击“Unzip”按钮开始解压安装;
2、解压安装完成后,找到软件安装的“bin”目录,复制路径;
3、右键“计算机”选择“属性”,在窗口中选择“高级系统设置”;
4、在弹出的“系统属性”窗口点击“环境变量”按钮;
5、在系统变量里面找到Path变量,双击出现下面输入框,在变量值的末尾加上加上英文状态下的分号(;),添加完成后将刚刚复制的bin目录粘贴在最后,点击“确定”按钮完成设置;
6、测试是否安装成功,在cmd命令提示符里面输入gcc --help 回车键,出现以下信息,表示安装成功;
使用教程
命令格式:gcc [选项] [文件名]
编译的四个阶段:
-E:仅执行编译预处理;?
-c:仅执行编译操作,不进行连接操作;
-S:将C代码转换为汇编代码;?
-o:指定生成的输出文件。
-c是使用GNU汇编器将源文件转化为目标代码之后就结束,在这种情况下,只调用了C编译器(ccl)和汇编器(as),而连接器(ld)并没有被执行,所以输出的目标文件不会包含作为Linux程序在被装载和执行时所必须的包含信息,但它可以在以后被连接到一个程序。
-c表示只编译(compile),而不连接成为可执行文件。生成同名字的 .o 目标文件。通常用于编译不包含主程序的子程序文件。
gcc -c hello.c
生成:hello.o
-o选项用于说明输出(output)文件名,gcc将生成一个目标(object)文件xx。
gcc hello.c -o xqf
或者:gcc -o xqf hello.c(顺序可以调换)
输出:xqf 为程序可执行文件
-g 选项产生符号调试工具(GNU的gdb)所必要的符号信息,插入到生成的二进制代码中。表示编译DEBUG版本。
想要对源代码进行调试,就必须加入这个选项。当然,会增加可执行文件的大小。
gcc study.c -o xqf
gcc -g study.c -o xqf_g
结果如下:(确实加了 -g 可执行文件后变大了一点)
-rwxr-xr-x 1 root root 12393 Apr 19 21:39 xqf_g
-rwxr-xr-x 1 root root 11817 Apr 19 20:48 xqf
gcc 在产生调试符号时,同样采用了分级的思路,开发人员可以通过在 -g 选项后附加数字1、2、3指定在代码中加入调试信息的多少。默认的级别是2(-g2),此时产生的调试信息包括:扩展的符号表、行号、局部或外部变量信息。
级别3(-g3)包含级别2中的所有调试信息以及源代码中定义的宏。
级别1(-g1)不包含局部变量和与行号有关的调试信息,因此只能够用于回溯跟踪和堆栈转储。
回溯追踪:指的是监视程序在运行过程中函数调用历史。
堆栈转储:则是一种以原始的十六进制格式保存程序执行环境的方法。
常用命令
一. 常用编译命令选项假设源程序文件名为test.c。
1. 无选项编译链接
用法:#gcc test.c
作用:将test.c预处理、汇编、编译并链接形成可执行文件。这里未指定输出文件,默认输出为a.out。
2. 选项 -o
用法:#gcc test.c -o test
作用:将test.c预处理、汇编、编译并链接形成可执行文件test。-o选项用来指定输出文件的文件名。
3. 选项 -E
用法:#gcc -E test.c -o test.i
作用:将test.c预处理输出test.i文件。
4. 选项 -S
用法:#gcc -S test.i
作用:将预处理输出文件test.i汇编成test.s文件。
5. 选项 -c
用法:#gcc -c test.s
作用:将汇编输出文件test.s编译输出test.o文件。
6. 无选项链接
用法:#gcc test.o -o test
作用:将编译输出文件test.o链接成最终可执行文件test。
7. 选项-O
用法:#gcc -O1 test.c -o test
作用:使用编译优化级别1编译程序。级别为1~3,级别越大优化效果越好,但编译时间越长。
二. 多源文件的编译方法如果有多个源文件,基本上有两种编译方法:
[假设有两个源文件为test.c和testfun.c]
1. 多个文件一起编译
用法:#gcc testfun.c test.c -o test
作用:将testfun.c和test.c分别编译后链接成test可执行文件。
2. 分别编译各个源文件,之后对编译后输出的目标文件链接。
用法:
#gcc -c testfun.c //将testfun.c编译成testfun.o
#gcc -c test.c ? //将test.c编译成test.o
#gcc -o testfun.o test.o -o test //将testfun.o和test.o链接成test
以上两种方法相比较,第一中方法编译时需要所有文件重新编译,而第二种方法可以只重新编译修改的文件,未修改的文件不用重新编译。
3库文件连接
开发软件时,完全不使用第三方函数库的情况是比较少见的,通常来讲都需要借助许多函数库的支持才能够完成相应的功能。从程序员的角度看,函数库实际上就是一些头文件(.h)和库文件(so、或lib、dll)的集合。。虽然Linux下的大多数函数都默认将头文件放到/usr/include/目录下,而库文件则放到/usr/lib/目录下;Windows所使用的库文件主要放在Visual Stido的目录下的include和lib,以及系统文件夹下。但也有的时候,我们要用的库不再这些目录下,所以GCC在编译时必须用自己的办法来查找所需要的头文件和库文件。
例如我们的程序test.c是在linux上使用c连接
MySQL,这个时候我们需要去mysql官网下载MySQL Connectors的C库,下载下来解压之后,有一个include文件夹,里面包含mysql connectors的头文件,还有一个lib文件夹,里面包含二进制so文件libmysqlclient.so
其中inclulde文件夹的路径是/usr/dev/mysql/include,lib文件夹是/usr/dev/mysql/lib
0条评论