码迷,mamicode.com
首页 > 其他好文 > 详细

000编程基础----GCC程序编译

时间:2014-07-16 19:49:52      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:使用   文件   io   代码   c++   c   

GNU C Compiler 多平台编译器,是GNU的代表作之一。

GCC编译器可以编译链接C\C++\汇编成可执行文件,可执行文件没特殊后缀,看属性。

预处理 编译 汇编 链接

Gcc通过后缀来区分不同类型文件

.c C语言源代码文件

.a库文件 由目标文件构成的库文件

.C .cc .cxx C++源代码文件

.h 头文件

.i 已经预处理过的C源代码文件

.ii 已经预处理过的C++源代码文件

.o 编译后的目标文件

.s 汇编语言源代码文件

.S 经过预编译的汇编语言源代码文件

预处理:把宏展开

-o 指定输出的可执行文件的文件名,如果没有,则默认输出文件名字为:a.out。 gcc hello.c -o hello

-c 只编译,不连接成为可执行文件,编译器只是由输入的.c等源文件代码,生成.o为后缀的目标文件。 gcc -c hello.c

-g产生调试工具(GNU的gdb)所必要的符号信息,要想对编译出的程序进行调试,就必须加入这个选项。 gcc -g hello.c -o hello

-O -O2:对程序进行优化,后面的优化程度更深。

gcc optimize.c -o optimize

time ./optimize

gcc -O optimize.c -o optimize

time ./optimize

对比两种,优化后,明显变好。

-Idirname:将dirname所指出的目录加入到程序头文件目录列表中。

C程序中的头文件包含两种情况:

#include <A.h>

#include "B.h"

对于<>,预处理程序cpp在系统预设的头文件目录(/usr/include)中搜寻相应的文件;

对于“”,cpp在当前目录中搜寻头文件。如果在当前目录中没有找到需要的文件,就到指定的dirname目录中去寻找。

例如: gcc foo.c -I/home/include -o foo

-Ldirname:将dirname所指出的目录加入到库文件的目录列表中。在默认状态下,连接程序ld在系统的预设路径中(如/usr/lib)寻找所需要的库文件,这个选项告诉连接程序,首先到-L指定的目录中去寻找,然后再到系统预设路径中寻找。

-lname 在连接时,装载名字为“libname.a”的函数库,该函数库位于系统预设的目录或者由-L选项确定的目录下。例如,-lm表示连接名为libm.a的数学函数库。

例:gcc foo.c -L/home/lib -lfoo -o foo

-static :静态连接库文件

默认是动态链接。

编译选项:

-Wall :生成所有警告信息

-w :   不生成任何警告

-DMACRO:-DYES:相当于在程序中使用#define YES

#include <stdio.h>

//#define YES

void main()

{

#ifdef YES

  printf("hello");

#endif

}

运行命令:

gcc -DYES hello.c -o hello

./hello

则,可以输出hello。

000编程基础----GCC程序编译,布布扣,bubuko.com

000编程基础----GCC程序编译

标签:使用   文件   io   代码   c++   c   

原文地址:http://www.cnblogs.com/liutianyi10/p/3837318.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!