引用:http://developer.51cto.com/art/200609/32317_1.htm

对于GUN编译器来说,程序的编译要经历预处理、编译、汇编、连接四个阶段

假设源程序文件名为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 testfun.o test.o -o test //将testfun.o和test.o链接成test

以上两种方法相比较,第一中方法编译时需要所有文件重新编译,而第二种方法可以只重新编译修改的文件,未修改的文件不用重新编译。

三. 多文件夹的编译方法。

例如,存放源文件的子目录名为./src,而头文件的子目录为 ./inc。方法如下所示:

gcc test.c –I../inc -o test

多个目录情况下,可以使用多个-I 来指定各个目录:

gcc test.c –I../inc –I../../inc2 -o test   //  另一个子目录inc2,需要上跳2级目录

四.编译时,进行宏定义:

在编译命令行中定义符号常量,使用-D选项即可,如下例所示:

gcc -D TEST_CONFIGURATION test.c -o test

上面的命令与在源文件中加入下列命令是等效的:

#define TEST_CONFIGURATION

五.经常处理:

引用文章有详细解释,此处不在列出。

添加警告的方式:  gcc -Wall test.c -o test

gcc常用命令集的更多相关文章

  1. Mysql 常用命令集

    1.mysqlbinlog工具使用方法如下: 先使用 show binary logs 查看 在使用导出命令 mysqlbinlog -R -uroot -pxxxx -hxxx.xxx.xxx.xx ...

  2. GCC常用命令行一览表

    GCC常用命令行一览表 这些常用的 gcc/g++ 命令行参数,你都知道么?1. gcc -E source_file.c-E,只执行到预编译.直接输出预编译结果. 2. gcc -S source_ ...

  3. MySql常用命令集Mysql常用命令showdatabases;显示数据库createdatab

    MySql 常用命令集 Mysql常用命令 show databases; 显示数据库 create database name; 创建数据库 use databasename; 选择数据库 drop ...

  4. MySql常用命令集

    MySql 常用命令集 Mysql常用命令 show databases; 显示数据库 create database name; 创建数据库 use databasename; 选择数据库 drop ...

  5. sqoop 常用命令集

    sqoop是一个介于分布式数据系统与关系型系统之间数据转换的一个数据转换工具 常用命令集sqoop2中sqoop-shell 创建link.job sqoop:001> show link 显示 ...

  6. MySql常用命令集Mysql常用命令2

    MYSQL 常用命令 1.导出整个数据库 mysqldump -u 用户名 -p --default-character-set=latin1 数据库名 > 导出的 文件名(数据库默认编码是la ...

  7. MySql常用命令集Mysql常用命令3

    MYSQL常用命令 有很多朋友虽然安装好了mysql但却不知如何使用它.在这篇文章中我们就从连接 MYSQL.修改密码.增加用户等方面来学习一些MYSQL的常用命令. 有很多朋友虽然安装好了mysql ...

  8. MySql常用命令集Mysql常用命令5

    九. 交叉查询 交叉查询可以对数据进行总和,平均,计数或其他总和计算法的计算,这些数据通过 两种信息进行分组:一个显示在表的左部,另一个显示在表的顶部. Microsoft Jet SQL 用TRAN ...

  9. maven常用命令集

    maven常用命令 mvn compile  编译主程序源代码,不会编译test目录的源代码.第一次运行时,会下载相关的依赖包,可能会比较费时间. mvn test-compile  编译测试代码,c ...

随机推荐

  1. iOS 发布证书错误 Your build settings specify a provisioning profile with the UUID, no provisioning profile was found

    解决办法 1.找到项目中的**.xcodeproj文件,点击右键,show package contents(打开包内容). 2.打开后找到project.pbxproj文件,用文本编辑器打开.其实就 ...

  2. QT错误:collect2:ld returned 1 exit status

    1.编译成功的例子在后台执行,有时一闪而过,如果再次build ,则会提示上述错误. 解决方法:打开任务管理器,找到相应的exe进程,关闭即可:  或者直接关闭QtCreator. 2.没有编译成功的 ...

  3. zoj3231 Apple Transportation(最大流)

    转载请注明出处: http://www.cnblogs.com/fraud/          ——by fraud Apple Transportation Time Limit: 1 Second ...

  4. Eclipse控制台显示Tomcat日志

    今天看一篇学习Struts的博文,文章里面提到从生成的日志,结果,怎么鼓捣都看不到.心情也跟着烦躁了.于是晚饭后出去散步,冷静一下,然后决定晚上一定搞掂这个问题.这不,搞掂了,写篇博文记录一下. St ...

  5. Linux命令查询手册--sort

    一.sort的工作原理 sort将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出. 二.sort的参数选项 1. sort -u 在输出 ...

  6. Linux下VMWare虚拟机的使用技巧

    使用技巧: 1.虚拟机安装文件:vm-workstation-full-8.0.3-703057.x86_64.bundle,./vm-workstation-full-8.0.3-703057.x8 ...

  7. 【转】nginx之逻辑运算

    nginx的配置中不支持if条件的逻辑与&& 逻辑或|| 运算 ,而且不支持if的嵌套语法,否则会报下面的错误:nginx: [emerg] invalid condition. 我们 ...

  8. information_schema.profiling学习

    information_schema.profiling可以用来分析每一条SQL在它执行的各个阶段的用时,注意这个表是session 级的,也就是说如果session1 开启了它:session2没有 ...

  9. SQL Server 索引重建的 4 种方法

    解决方法 方法 1. 重建指定索引,这种方法没有性能可谈.重建时表还不可访问. 方法 2. 在线重建索引,只有SQL Server 企业版才支持. 方法 3. 使用填充因子重建,这样做不一定可以减小查 ...

  10. Go代理,修改标题