linux下gcc命令 linux gcc命令

在Linux系统中,gcc的命令怎么用?Gcc最基本的用法是∶gcc[options] [filenames] 其中options就是编译器所需要的参数,filenames给出相关的文件名称 。-c,只编译,不连接成为可执行文件,编译器只是由输入的.c等源代码文件生成.o为后缀的目标文件 , 通常用于编译不包含主程序的子程序文件 。-ooutput_filename,确定输出文件的名称为output_filename,同时这个名称不能和源文件同名 。如果不给出这个选项 , gcc就给出预设的可执行文件a.out 。-g,产生符号调试工具(GNU的gdb)所必要的符号资讯,要想对源代码进行调试,我们就必须加入这个选项 。-O,对程序进行优化编译、连接,采用这个选项,整个源代码会在编译、连接过程中进行优化处理,这样产生的可执行文件的执行效率可以提高,但是,编译、连接的速度就相应地要慢一些 。-O2,比-O更好的优化编译、连接 , 当然整个编译、连接过程会更慢 。-Idirname , 将dirname所指出的目录加入到程序头文件目录列表中,是在预编译过程中使用的参数 。找到一个学习linux的好方法,可多看看《linux就该这么学》一书 。
linux下gcc的安装与使用方法一:
该方法超简单:
sudoapt-getbuild-depgcc
就上面这条命令就可以搞定
方法二:
sudoapt-getinstallbuild-essential
还是简单,一句命令也可以搞定
安装完了可以执行
gcc--version
的命令来查看版本,输出如下:
gcc(GCC)4.2.3(Ubuntu4.2.3-2ubuntu7)
Copyright(C)2007FreeSoftwareFoundation,Inc.
编译则使用gcc命令 。要往下学习首先就得熟悉gcc命令的用法 。
gcc命令提供了非常多的命令选项,但并不是所有都要熟悉,初学时掌握几个常用的就可以了,到后面再慢慢学习其它选项,免得因选项太多而打击了学习的信心 。
一. 常用编译命令选项
假设源程序文件名为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 -o testfun.o test.o -o test //将testfun.o和test.o链接成test
以上两种方法相比较,第一中方法编译时需要所有文件重新编译,而第二种方法可以只重新编译修改的文件,未修改的文件不用重新编译 。

推荐阅读