GCCWord文件下载.docx
- 文档编号:15853603
- 上传时间:2022-11-16
- 格式:DOCX
- 页数:13
- 大小:371.18KB
GCCWord文件下载.docx
《GCCWord文件下载.docx》由会员分享,可在线阅读,更多相关《GCCWord文件下载.docx(13页珍藏版)》请在冰豆网上搜索。
输入makeinstall命令将将编译好的库文件等拷贝到/usr/local/gcc目录中,至此gcc安装完成。
3.熟悉gcc编译器
二.实验体会:
GCC的学习
1.关于GCC
GCC,全称为GNUCompilerCollection,目前可以编译的语言包括:
C,C++,Objective-C,Fortran,Java,Ada。
GCC是GNU公社的一个项目。
是一个用于编程开发的自由编译器。
最初,GCC只是一个C语言编译器,他是GNUCCompiler的英文缩写。
随着众多自由开发者的加入和GCC自身的发展,如今的GCC以经是一个包含众多语言的编译器了。
GCC的一些基本特性:
GCC是一个可移植的编译器,可以运行在当前的很多平台上,也可以为大部分的平台编译程序。
GCC不是一个本地编译器。
可以在一个平台上编译另一个平台运行的软件。
例如可以在windows平台上编译Linux的可执行文件。
GCC支持多种语言,甚至可以交叉编译不同语言。
GCC是模块化的,当出现新的语言,只需要为GCC开发一个支持该语言的前端,GCC即可支持该语言。
GCC是一个免费自由软件,你可以免费使用GCC,也可以自己修改GCC的内容。
2.关于C语言
C语言允许程序员直接访问系统内存,方便底层软件和高性能软件开发。
在使用C编程的时候一定要注意内存控制,以避免内存方面的错误。
C语言的基本技巧易于掌握,但是想成为C语言的专家需要长时间的经验积累。
3.如何编译一个C程序
程序例子:
hello.c
#include<
stdio.h>
intmain(void)
{
printf("
HelloWord!
\n"
);
return0;
}
在Linux下编写好这个HelloWord程序后,执行gcc–Wallhello.c–ohello命令完成编译。
-Wall的表示gcc在编译时不忽略所有的warning,这样有利于检查程序的潜在错误,在编译时最好加上。
-o指定编译完成的可执行文件名,如果不加,则默认在当前目录下生成a.out文件,加上以后即可指定-o后面的文件名。
4.利用GCC查找程序中的错误
编写的C程序一旦出现错误,GCC在编译时会给出提示信息,方便程序员找出错误。
例如在下面程序中没有给出return语句。
编译后会给出一个worning。
但是程序任然能运行。
5.用GCC编译多个源程序
一个大型程序往往由多个源程序组成,GCC可以对多个源程序进行编译。
例子程序:
源程序1:
add.c
#include"
fun.c"
inta=fun(10);
1+2+...+10=%d"
a);
源程序2:
function.c
intfun(inta)
ints=0;
inti;
for(i=1;
i<
=a;
i++)
{
s+=i;
}
returns;
源程序3:
fun.h
intfun(inta);
6.Verbose开关的使用
在用GCC编译程序时,打开Verbose开关即可显示详细的编译信息,在程序有错误时非常有用。
使用方法为gcc–v–Wallhello.c–ohello
7.利用GCC独立编译文件
在一般情况下,一个大型程序往往由多个源程序组成,GCC可以对单个源程序进行编译,但不连接,使其生成目标文件,最后再对这些目标文件进行连接,使其成为一个可执行文件。
这样,一旦需要对其中的某个源文件进行修改,之需要单独的对其进行编译,生成新的目标文件,最后再连接所有目标文件即可。
如此一来就节约了时间。
在GCC中,想对单个文件进行编译只需加上-c即可。
例如gcc–c–Walladd.cfunction.c,这样,就在当前目录下生成这两个源文件的目标文件add.o和funtion.o,最后,利用gccadd.ofunction.o–oadd即可生成可执行文件add。
8.连接外部库
库(library)就是已经编译好的目标文件的集合,在linux系统中,静态链接库的一般为.a后缀,这些库一般被保存在/usr/lib以及/lib目录中。
在连接目标文件时,连接器会自动的连接用到的库文件。
如果需要连接一个非标准库,即第三方提供的库,在连接时需要显式的申明,例如:
gcc-Wallhello.c/usr/lib/libm.a-ohello。
另外,还有一种更为简洁的方法,gcc-Wallhello.c-lm-ohello。
用"
-lNAME"
可以连接标准库目录下的"
libNAME"
库文件。
正确的使用一个库,应该包含正确的头文件,在这些头文件中有库中所定义函数的原型。
这样,编译器可以根据函数原型来判断传进去的参数是否正确。
当然,不包含这些头文件也许可以生成可执行文件,但是也可能产生一些意想不到的错误。
编译器默认的头文件目录为:
/usr/local/include/和/usr/include/
编译器默认的库文件目录为:
/usr/local/lib/和/usr/lib/
当需要包含的头文件或者库文件不在这些目录中时,必须采取措施让编译器去寻找这些头文件或者库文件,方法有两个:
用GCC编译时需要指定相应的目录。
’-I’指定包含的头文件目录,’-L’指定包含的库文件目录。
推荐使用这种方式。
设置系统的环境变量。
指定头文件搜索路径的环境变量为:
C_INCLUDE_PATH(C语言),CPLUS_INCLUDE_PATH(C++),指定库文件搜索路径的环境变量为:
LABRARY_PATH。
例如:
exportLIBRARY_PATH=/usr/local/myc/lib:
$LIBRARY_PATH
(Ps:
在后面加上:
$LIBRARY_PATH可以避免LIBRARY_PATH原来的值被覆盖)
编译器搜索头文件或库文件的次序为:
’-I’和’-L’指定的目录
环境变量指定的目录
系统默认路径
9.制作自己的库文件
使用ar命令可以创建自己的库文件
arcrlibNAME.afile1.ofile2.ofile3.o…filen.o
用ar命令也可以查看一个库文件中有多少个目标文件
artlibNAME.a
10.静态库与动态库
外部库通常有两种方式:
静态库(staticlibraries)和动态库(sharedlibraries)。
在linux中,.a后缀名的文件为静态库文件,.so后缀名的文件为动态库文件。
在使用静态库时,凡是调用库中的函数,在连接时都会被拷贝到最终的可执行文件里,这就导致了可执行文件比较大,占用内存空间和磁盘空间。
在使用动态库时,连接时只是把一个表考到可执行文件里,在执行文件时,需要找到系统的动态库,并加载到内存。
使用动态库的优点为:
多个程序可以共享一个动态库
节省内存空间
节省磁盘空间
使得更新一个库时不需要重新编译源文件
GCC优先使用动态库,LD_LIBRARY_PATH环境变量指定了搜索动态库的路径,系统默认的路径为/usr/local/lib/和/usr/lib/
11.关于C语言标准
GCC支持多种C语言标准,在编译时在命令行中指定。
命令行中没有指定标志,表示用GNU标准进行编译。
命令行中加–ansi或者–pedantic表示用ansi标准编译C程序。
也可以用-std指定标准,例如:
-std=c89或–std=iso9899:
1990,-std=iso9899:
1994,-std=c99或-std=iso9899:
1999。
建议使用-ansi标准编译,在使用-ansi时,最好加上–pedantic
12.关于-Wall选项
在编译程序时,加上-Wall选项可以检测出潜在的错误,-Wall选项包含了以下选项:
-Wcomment
-Wformat
-Wunsecured
-Wimplicit
-Wreturn-type
-Wcomment:
用于检测注释是否嵌套,当需要对大段程序注释时,为避免注释嵌套,应该使用#if0#endif。
-Wformat:
用于检测向类似scanf()、printf()中的字符串的格式是否有错误。
-Wunsecured:
用于检测申明了却没有使用的变量。
-Wimplicit:
用于检测使用却没有申明的函数。
-Wreturn-type:
用于检测返回值问题。
通常使用-Wall检测所有错误。
13.关于预处理
编译的第一步是进行预处理。
GCC的预处理器是cpp,GCC编译程序之前自动调用cpp对文件进行预处理。
在命令行中可以加上-D定义一些宏,例如gcc–DTEXT=10–Wallhello.c–ohello。
当宏没有指定值时,默认是1。
可以用-E命令查看具体的预处理过程,例如:
gcc–Ehello.c,此时不对程序进行编译。
另外,在编译时也可以加上-save-temps对预处理的结果进行保存,例如gcc–Wall–save-tempshello.c-ohello。
这样在当前目录下生成hello.i和hello.s文件。
14.关于debug
通常,最终的可执行文件是不包含debug信息的,这样就无法在程序出错的情况下进行调试,但是在编译时加上-g命令就可以另产生的目标文件和最终的可执行文件包含debug信息,这些信息包括源文件的行号,变量和函数的名字以及他们的地址。
有了这些信息我们就可以用调试工具对程序进行调试。
GCC的调试工具为GUNDEBUGER(gdb)。
当程序出现bug并崩溃时,操作系统可以为之产生一个core文件,core文件包含程序崩溃的瞬间的信息,通过这个文件以
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- GCC