- 84
- 0
- 约1.05万字
- 约 8页
- 2016-03-12 发布于山西
- 举报
gcc-help
GCC 起步
在学习使用 GCC 之前,下面的这个例子能够帮助用户迅速理解 GCC 的工作原理,并将其立即运用到实际的项目
开发中去。首先用熟悉的编辑器输入清单1 所示的代码:
清单1:hello.c
CODE:
#include stdio.h
int main(void)
{
printf (Hello world, Linux programming!\\n);
return 0;
}
然后执行下面的命令编译和运行这段程序:
CODE:
# gcc hello.c -o hello
# ./hello
Hello world, Linux programming!
警告:输入 gcc hello.c -o hello 后出现下列错误:
bash: gcc: command not found ,是因为gcc 未安装。
redhat 9.0 安装gcc
在X-window 下选“主菜单”──“系统设置”──“添加/删除应用程序”──“开发工具”中的gcc 并
安装它
从程序员的角度看,只需简单地执行一条GCC 命令就可以了,但从编译器的角度来看,
却需要完成一系列非常繁杂的工作。首先,GCC 需要调用预处理程序 cpp,由它负责展开
在源文件中定义的宏,并向其中插入“#include”语句所包含的内容;接着,GCC 会调用ccl
和as 将处理后的源代码编译成目标代码;最后,GCC 会调用链接程序ld,把生成的目标代
码链接成一个可执行程序。
为了更好地理解GCC 的工作过程,可以把上述编译过程分成几个步骤单独进行,并观
察每步的运行结果。第一步是进行预编译,使用-E 参数可以让GCC 在预处理结束后停止编
译过程:
CODE:
# gcc -E hello.c -o hello.i
此时若查看hello.cpp 文件中的内容,会发现stdio.h 的内容确实都插到文件里去了,而其它应当被预处理的宏定义
也都做了相应的处理。下一步是将hello.i 编译为目标代码,这可以通过使用-c 参数来完成:
CODE:
# gcc -c hello.i -o hello.o
GCC 默认将.i 文件看成是预处理后的C 语言源代码,因此上述命令将自动跳过预处理步骤而开始执行编译过程,
也可以使用-x 参数让GCC 从指定的步骤开始编译。最后一步是将生成的目标文件链接成可执行文件:
CODE:
# gcc hello.o -o hello
在采用模块化的设计思想进行软件开发时,通常整个程序是由多个源文件组成的,相应地也就形成了多个编译单元,
使用GCC 能够很好地管理这些编译单元。假设有一个由foo1.c 和foo2.c 两个源文件组成的程序,为了对它们进行编译,
并最终生成可执行程序foo ,可以使用下面这条命令:
CODE:
# gcc foo1.c foo2.c -o foo
如果同时处理的文件不止一个,GCC 仍然会按照预处理、编译和链接的过程依次进行。如果深究起来,上面这条
命令大致相当于依次执行如下三条命令:
CODE:
# gcc -c foo1.c -o foo1.o
# gcc -c foo2.c -o foo2.o
# gcc foo1.o foo2.o -o foo
在编译一个包含许多源文件的工程时,若只用一条GCC 命令来完成编译是非常浪费时间的。假设项目中有 100 个
源文件需要编译,并且每个源文件中都包含 10000 行代码,如果像上面那样仅用一条GCC 命令来完成编译工作,那么
GCC 需要将每个源文件都重新编译一遍,然后再全部连接起来。很显然,这样浪费的时间相当多,尤其是当用户只是
修改了其中某一个文件的时候,完全没有必要将每个文件都重新编译一遍,因为很多已经生成的目标文件是不会改变的。
要解决这个问题,关键是要灵活运用GCC,同时还要借助像Make 这样的工具。
作者: SmileAgain 发布日期: 2006-10-12
警告提示功能
GCC 包含完整的出错检查和警告提示功能,它们可以帮助Linux 程序员写出更加专业和优美的代码。先来读读清单
2 所示的程序,这段代码写得很糟糕,仔细检查一下不难挑出很多毛病:
◆main 函数的返回值被声明为void
您可能关注的文档
- c语言深度解剖(完美高清文字版).pdf
- dcfw-1800ges防火墙快速配置手册--for v3x版本.pdf
- ebox-2300_wifi_installation.pdf
- fortigate防火墙安全配置规范.pdf
- fbi秘籍:如何读懂肢体语言(图文原版).pdf
- gartner如何定义下一代防火墙-sinogrid.pdf
- freelink wifi hdmi 无线媒体分享器使用说明书.pdf
- gbt1.1-2009培训教材(福建标准院内部培训教材).pdf
- gcc hacks in the linux kernel.pdf
- gcc internals and porting.pdf
原创力文档

文档评论(0)