-
gcc and g++
分别是
gnu
的
c &
c++
编译器
gcc/g++
在执行编译工作的时候,总共需要
4
步
1.
预处理
,
p>
生成
.i
的文件
[
预处理器
cpp]
2.
将预处理后的文件不转换成汇编语言
,
生成文件
p>
.s[
编译器
egcs]
3.
有汇编变为目标代码
(
机
器代码
)
生成
.o
的文件
[
汇编器
as]
4.
连接目标代码
,
生
成可执行程序
[
链接器
ld]
[
参数详解
]
-x language filename
设定文件所使用的语言
,
使后缀名无效
,
对以后
的多个有效
.
也就是根
据约定
c
语言的后缀名称是
.c
的,而
c++
的后缀名是
.
c
或者
.cpp,
如果
你很个性,决定你的
c
代码文件的后缀名是
.pig
哈哈,那你就要用这
个参数
,
这个参数对他后面的文件名都起作用,除非到了下一个参数<
/p>
的使用。
可以使用的参数吗有下面的这些
`c, `objective-c, `c-header, `c++,
`cpp-output,
`assembler, and
`assembler-with-cpp.
看到英文,应该可以理解的。
例子用法
:
gcc -x c
-x none
filename
关掉上一个选
项,也就是让
gcc
根据文件名后缀,自动识别文件类型
例子用法
:
gcc -x c -x none hello2.c
-c
只激活预处理
,
编译
,
和汇编
< br>,
也就是他只把程序做成
obj
文件
例子用法
:
gcc -c hello.c
他将生成
.o
的
obj
文件
-s
-e
只激活预处理和编译,就是指把文件编译成为汇编代码。
例子用法
gcc -s
hello.c
他将生成
.s
的汇编
代码,你可以用文本编辑器察看
只激活预处理
,
这个不生成文件
,
你需要把
它重定向到一个输出文件里
面
.
例子用法
:
gcc -e
hello.c >
gcc
-e hello.c | more
< br>慢慢看吧
,
一个
hello
word
也要与处理成
800
行的代
码
-o
p>
制定目标名称
,
缺省的时候
,gcc
编译出来的文件是
,
很难听
,
如果
你和我有同感,改掉它
,
哈哈
例子用法
gcc -o
hello.c (
哦
,windows
用习惯了
)
gcc -o -s hello.c
-pipe
使用管道代替编译中临时文件
,
在使用非
< br>gnu
汇编工具的时候
,
可能有
些问
题
gcc -pipe -o hello.c
-ansi
关闭
gnu
c
中与
ansi
c
不兼容的特性
,
激活
ansi
c
的专有特性
(
包括禁止一
些
asm inline type
of
关键字
,
以及
unix,vax
等预处理宏
,
-fno-asm
此选项实现
ansi
选项的功能的一部分,它禁止将
asm,inline
和
typeof
用
作
关键字。
-fno-strict-prototype
只对
g++
起作用
,
使用这个选项
,g++
将对不带参数的函数
,
都认为是没有显
式
的对参数的个数和类型说明
,
而不是没有参数
p>
.
而
gcc
无论是否使用这个参数
,
都将对没有带参数的函数
,
认为城没有显式
说
明的类型
-fthis-is-varialble
就是向传统
c++
看齐
,
可以使用
this
当一般变量使用
.
-fcond-mismatch
允许条件表达式的第二和第三参数类型不匹配
,
表达式的值将为
void
类型
-funsigned-char
-fno-signed-
char
-fsigned-char
-fno-
unsigned-char
这
四个参数是对
char
类型进行设置
,
决定将
char
类型设置成
unsigned
char(
前
两个参数
)
或者
signed
char(
后两个参数
)
-include file
包含某个代码
,
简单来说
,
就是便以某个文件<
/p>
,
需要另一个文件的时候
,
就可
以
用它设定
,
功能就相当于在代码中使用
#include
例子用法
:
gcc hello.c -include
/root/pianopan.h
-imacros file
将
file
文件的宏
,
扩展到
gcc/g++
p>
的输入文件
,
宏定义本身并不出现在输入<
/p>
文件
中
-dmacro
相当于
c
语
言中的
#define macro
-dmacro=defn
相当于
c
语言中的
#define macro=defn
-umacro
相当于
c
语言中的
#unde
f macro
-undef
取消对任何非标准宏的定义
-idir
在你是用
#include
的时候
,gcc/g++
会先在当前目录查找你所制定的
头
文件
,<
/p>
如果没有找到
,
他回到缺省的头文件目录
找
,
如果使用
-i
制定了目录
,
他
回先在你所制定的目录查找
,
然后再按常规的顺序去找
.
对于
#i
nclude
会到
-i
制定的目录查找
,
查找不到
,
然后将到
系
统的缺省的头文件目录查找
-i-
就是取消前一个参数的功能
,
所以一般在
-idir
之后使用
-idirafter dir
在
-i
的目录里面查找失败
,
讲到这个目录里面查找
.
-iprefix prefix
-iwithprefix
dir
一般一起使用
,
当
-i
的目录查找失败
,
会到
prefix+dir
下查找
-
-
-
-
-
-
-
-
-
上一篇:固色剂
下一篇:网络原理试题(选择填空)