Ubuntu下用glade和GTK+开发C语言界面程序(二)——gcc常用命令介绍
谈到linux,没人不懂gcc,当然,学过C语言的都该知道gcc,毕竟所有的类C编译器基本都有gcc来构成。
GCC的意思随着时间的发展也从最初的GNU C Compiler发展到GNU Compiler Collection,也就是GNU编译器的统称集合。GCC对与操作系统与硬件的的支持,可以说是:无处不在。
一、gcc编译过程
GCC的编译过程要分为四个阶段来进行:预处理阶段,编译阶段,汇编阶段,以及链接阶段。
1、预处理阶段(也称预编译阶段)
gcc -E helloworld.c -o -helloworld.i
上述的-E参数将helloworld.c 文件进行预处理,-o参数将预处理后的文件输出为helloworld.i 文件
-E 为gcc预处理参数,其后跟.c源代码文件
-o 为gcc输出文件参数,其后跟.i的文件名
2、编译阶段
gcc -S helloworld.i -o helloworld.s-S参数将helloworld.i文件进行编译生成helloworld.s文件
-S参数为gcc编译参数,其后跟经过预处理后生成的.i文件
3、汇编阶段
gcc -c helloworld.s -o helloworld.o-c参数将汇编代码helloworld.s进行汇编生成目标代码helloworld.o
4、链接阶段
gcc helloworld.o -o helloworld将helloworld.o 文件进行链接,生成helloworld可执行程序
最后输入
./helloworld可以运行可执行程序。
对于链接过程来说,又分为两种形式:
(一)静态链接,静态链接依赖的动态链接库较少,对动态链接库的版本不会太敏感,具有较好的兼容性,当然这样生成的程序比较大。静态库的文件后缀名为 .a
(二)动态链接,生成的程序比较小,占用的内存较少。动态库的文件后缀名为 .so
二、用gcc编译程序
gcc -Wall -g -o helloworld helloworld.c上面命令将helloworld.c文件直接编译生成可执行程序helloworld。
编译多个文件
gcc -Wall -g -filename1.c -filename2.c -filename3.c filename4.c filenameX.c -o main上面的命令编译多个源文件,并生成可执行文件main
gcc -Wall -g -fliename.c -I /home/filename/inc -o main上面的命令将会首先到/home/filename/inc中寻找头文件,之后才会引入库函数中的头文件和本地文件夹下的头文件
gcc -Wall -g -o main -lm main.c-lm即表示关联系统库中的libm.a文件, 路径为/usr/lib/libm.a。
gcc -Wall -g -L ./lib -lhello -o helloworld
OK,到这里相信对gcc编译命令有了一个初步的了解,常用的使用gcc的命令也都在上面给出了具体的例子,下一篇中会写些关于make命令的使用方法和构建自己的makefile文件来使编译更加简单更加智能。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。