gcc使用整理(1)
来源:互联网 发布:前锦网络2018校园招聘 编辑:程序博客网 时间:2024/06/06 19:10
GCC是一个用于linux系统下编程的编译器。GCC(GNU Compiler Collection)是一套由GNU开发的编程语言编译器。
GCC所遵循的部分约定规则:.c C语言源代码文件;.a 由目标文件构成的档案库文件;.C、.cc、.cxx C++源代码文件;.h 头文件;.i 已经预处理过的C源代码文件;.ii 已经预处理过的C++源代码文件;.m Obj-C源代码文件;.o 编译后的目标文件;.s 汇编语言源代码文件;.S 经过预编译的汇编语言源代码文件。
基本用法:-c 只编译,不连接为可执行文件;-o output_filename 确定输出文件的名称为output_filename。如果不给出这个选项,GCC就给出预设的可执行文件a.out;-g 产生符号调试工具所必要的符号资讯,要想对源代码进行调试,我们就必须加入这个选项;-On 对程序进行优化编译、连接;-ldirname 将dirname所指出的目录加入到程序头文件目录列表中。
参数详解:
-x language filename
设定文件所使用的语言,使后缀名无效,对以后多个有效。例子:gcc -x c hello.pig。
-x none filename
关掉上一个选项。例子:gcc -x c hello.pig -x none hello2.c
-c
只激活预处理、编译和汇编,也就是只把程序做成obj文件。例子:gcc -c hello.c 将生成.o的文件。
-S
只激活预处理和编译,就是把文件编译成汇编代码。例子:gcc -S hello.c 将生成.s的汇编代码。
-E
只激活预处理,这个不生成文件,需要把它重定向到一个输出文件里面。例子:gcc -E hello.c > pianoapan.txt
-o
制定目标名称。
例子:gcc -o hello.exe hello.c
gcc -o hello.asm -S hello.c
-pipe
使用管道代替编译中的临时文件。
例子:gcc -pipe -o hello.exe hello.c
-ansi
关闭GNU C中与ANSI C不兼容的特性。
-include file
包含某个代码,相当于#include <filename>
例子:gcc hello.c -include /root/pianopan.h
-imacros file
将file文件中的宏,扩展到gcc的输入文件。
-Dmacro
相当于C语言中的#define macro。
-Dmacro=defn
相当于C语言中的#define macro=defn。
-Umacro
相当于C语言中的#undef macro。
-undef
取消对任何非标准宏的定义。
-Idir
在你是用#include "file"的时候,gcc会先在当前目录查找你所制定的头文件,如果没有找到,它会回到缺省的头文件目录中找。如果使用-I制定了目录,它会先在你所制定的目录中查找,然后再按常规的顺序去找。
-idirafter dir
在-I的目录中查找失败,将到这个目录里面查找。
-iprefix prefix
-iwithprefix dir
一般一起使用,当-I的目录查找失败,会到prefix+dir下查找。
-nostdinc
使编译器不再系统缺省的头文件目录里面找,一般和-I联合使用,明确限定头文件的位置。
-C
在预处理的时候,不删除注释信息,一般和-E使用,有时候分析程序,用这个很方便的。
-M
生成文件关联信息。包含目标文件所依赖的所有源代码可以用gcc -M hello.c来测试一下。
-MM
和上面的那个一样,但是它将忽略由#include <file>造成的依赖关系。
-MMD
和-MM相同,但是输出导入到.d文件里面。
-Wa,option
此选项传递option给汇编程序;如果option中间有逗号,就将option分成多个选项,然后传递给汇编程序。
-Wl.option
此选项传递option给连接程序。
-llibrary
制定编译的时候使用的库。
例子:gcc -lcurses hello.c 使用ncurses库编译程序。
-Ldir
制定编译的时候,搜索库的路径。不然,编译器只在标准库的目录找。
-On
编译器优化选项的4个级别。
-g
只是编译器在编译的时候,产生调试信息。
-ggdb
此选项将尽可能的生产gdb的可以使用的调试信息。
-static
此选项将禁止使用动态库。所以,编译出来的东西,一般都很大,不需要什么动态链接库就可以运行。
-share
此选项将尽可能使用动态库,所以生成的文件比较小,但是需要动态库。
- gcc使用整理(1)
- gcc使用整理(2)
- GCC参数解释(整理)
- arm gcc工具链使用整理
- GDB学习整理1--Gcc编译详解
- 常见gcc 编译错误整理(开始)
- 常见gcc编译警告整理(开始)
- 常见gcc编译警告整理(开始)
- 常见gcc编译警告整理(开始)
- 常见gcc编译警告整理(开始)
- 常见gcc编译警告整理(开始)
- GCC使用入门(一)(1)
- GCC使用详解(1)
- ubuntu下 arm-linux-gcc-4.5.1安装v1.0(未经整理版本)
- GCC使用指南(整理)
- GCC命令选项(整理)
- gcc gdb 整理
- gcc编译错误整理
- IO(J2SE学习随笔二)
- c 指针
- Linux系统下文件的上传与下载命令
- C++ heap 和 stack 的区别
- SQLServer数据库误删除恢复
- gcc使用整理(1)
- 【转】C++静态成员小结
- Proe二次開發之裝配
- Java IO _数据操作流
- js中截取字符串的两种方式 及其区别
- Android GPS相关文章
- 什么是虚拟服务器
- Sorry, the command is not available in this version: syntax enable的解决方法
- memcached在大负载高并发网站上的应用概述