欢迎来到天天文库
浏览记录
ID:50369686
大小:45.00 KB
页数:15页
时间:2020-03-08
《Linux上的C编译器和调试器.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、Linux上的C/C++编译器和调试器Linux中最重要的软件开发工具是GCC。GCC是GNU的C和C++编译器。实际上,GCC能够编译三种语言:C、C++和ObjectC(C语言的一种面向对象扩展)。利用gcc命令可同时编译并连接C和C++源程序。#DEMO#:hello.c如果你有两个或少数几个C源文件,也可以方便地利用GCC编译、连接并生成可执行文件。例如,假设你有两个源文件main.c和factorial.c两个源文件,现在要编译生成一个计算阶乘的程序。清单factorial.c---------------------
2、--#include#includeintfactorial(intn){if(n<=1)return1;elsereturnfactorial(n-1)*n;}-----------------------清单main.c-----------------------#include#includeintfactorial(intn);intmain(intargc,char**argv){intn;if(argc<2){printf("Usage:%sn",argv[0]);return-1;}else{n=atoi(a
3、rgv[1]);printf("Factorialof%dis%d.",n,factorial(n));}return0;}-----------------------利用如下的命令可编译生成可执行文件,并执行程序:$gcc-ofactorialmain.cfactorial.c$./factorial5Factorialof5is120.GCC可同时用来编译C程序和C++程序。一般来说,C编译器通过源文件的后缀名来判断是C程序还是C++程序。在Linux中,C源文件的后缀名为.c,而C++源文件的后缀名为.C或.cpp。
4、但是,gcc命令只能编译C++源文件,而不能自动和C++程序使用的库连接。因此,通常使用g++命令来完完成C++程序的编译和连接,该程序会自动调用gcc实现编译。假设我们有一个如下的C++源文件(hello.C):#includevoidmain(void){cout<<"Hello,world!"<5、持ANSI标准的C语法。这一选项将禁止GNUC的某些特色,例如asm或typeof关键词。-c只编译并生成目标文件。-DMACRO以字符串“1”定义MACRO宏。-DMACRO=DEFN以字符串“DEFN”定义MACRO宏。-E只运行C预编译器。-g生成调试信息。GNU调试器可利用该信息。-IDIRECTORY指定额外的头文件搜索路径DIRECTORY。-LDIRECTORY指定额外的函数库搜索路径DIRECTORY。-lLIBRARY连接时搜索指定的函数库LIBRARY。-m486针对486进行代码优化。-oFILE生成指定的6、输出文件。用在生成可执行文件时。-O0不进行优化处理。-O或-O1优化生成代码。-O2进一步优化。-O3比-O2更进一步优化,包括inline函数。-shared生成共享目标文件。通常用在建立共享库时。-static禁止使用共享连接。-UMACRO取消对MACRO宏的定义。-w不生成任何警告信息。-Wall生成所有警告信息。 Linux包含了一个叫gdb的GNU调试程序.gdb是一个用来调试C和C++程序的强力调试器.它使你能在程序运行时观察程序的内部结构和内存的使用情况.以下是gdb所提供的一些功能:·它使你能监视你程序中7、变量的值.·它使你能设置断点以使程序在指定的代码行上停止执行.·它使你能一行行的执行你的代码. 在命令行上键入gdb并按回车键就可以运行gdb了,如果一切正常的话,gdb将被启动并且你将在屏幕上看到类似的内容:GDBisfreesoftwareandyouarewelcometodistributecopiesofitundercertainconditions;type"showcopying"toseetheconditions.ThereisabsolutelynowarrantyforGDB;type"showwa8、rranty"fordetails.GDB4.14(i486-slakware-linux),Copyright1995FreeSoftwareFoundation,Inc.(gdb) 当你启动gdb后,你能在命令行上指定很多的选项.你也可以以下面的方式来运
5、持ANSI标准的C语法。这一选项将禁止GNUC的某些特色,例如asm或typeof关键词。-c只编译并生成目标文件。-DMACRO以字符串“1”定义MACRO宏。-DMACRO=DEFN以字符串“DEFN”定义MACRO宏。-E只运行C预编译器。-g生成调试信息。GNU调试器可利用该信息。-IDIRECTORY指定额外的头文件搜索路径DIRECTORY。-LDIRECTORY指定额外的函数库搜索路径DIRECTORY。-lLIBRARY连接时搜索指定的函数库LIBRARY。-m486针对486进行代码优化。-oFILE生成指定的
6、输出文件。用在生成可执行文件时。-O0不进行优化处理。-O或-O1优化生成代码。-O2进一步优化。-O3比-O2更进一步优化,包括inline函数。-shared生成共享目标文件。通常用在建立共享库时。-static禁止使用共享连接。-UMACRO取消对MACRO宏的定义。-w不生成任何警告信息。-Wall生成所有警告信息。 Linux包含了一个叫gdb的GNU调试程序.gdb是一个用来调试C和C++程序的强力调试器.它使你能在程序运行时观察程序的内部结构和内存的使用情况.以下是gdb所提供的一些功能:·它使你能监视你程序中
7、变量的值.·它使你能设置断点以使程序在指定的代码行上停止执行.·它使你能一行行的执行你的代码. 在命令行上键入gdb并按回车键就可以运行gdb了,如果一切正常的话,gdb将被启动并且你将在屏幕上看到类似的内容:GDBisfreesoftwareandyouarewelcometodistributecopiesofitundercertainconditions;type"showcopying"toseetheconditions.ThereisabsolutelynowarrantyforGDB;type"showwa
8、rranty"fordetails.GDB4.14(i486-slakware-linux),Copyright1995FreeSoftwareFoundation,Inc.(gdb) 当你启动gdb后,你能在命令行上指定很多的选项.你也可以以下面的方式来运
此文档下载收益归作者所有