cc,gcc,g++ 比较 gcc ,gdb, makefile 在 linux 下编程都是很重要的东西 GDB 手册在 chinaunix 有一份:你去好好研究下哦, http://wiki.//%E5%88%86%E7%B1%BB:GDB%E6%89% 8B%E5%86%8C 下面是 gcc 常用的选项,后面会经常用到的编译时加个开关-g -g 在编译的时候,产生调试信息-c 只激活预处理, 编译和汇编, 也就是把程序做成 ob j 文件。如 gcc -c 就会生成 文件, 当然这样还只是目标文件, 需要经过 ld 文件进行联接才能生成可执行文件. -S 只激活预处理和编译, 把文件编译到汇编代码。相当到对源程序做一个 egcs 操作, 文件。可以查看生成的汇编文件结果。这个对于研究汇编语言的程序员来说是很有作用的。-E 只激活预处理,这个将对文件进行预处理,将对所有引入的 includ e 文件和 define 定义的量进行代换, 为我们开头所说的 gcc 编译的第一步, 即用 cpp 命令将程序语言文件进行预处理. 但这一步不生成结果文件, 如果你需要生成结果文件保存,那么需要利用系统中的输出重定向。-o 定制目标名称, 缺省的时候在 unix 和 linux 平台下 gcc filename 的结果是一个文件名为 的文件, windows 下用 mingw 里带的 gcc 编译结果是 。如果我们用 gcc -o 的话, 将生成 可执行程序。这个并不一定只限于最后一步可执行程序的生成, 如用上面所讲的-S 生成的汇编程序也可以用-o 参数生成, 比如 gcc -o -S 这样 就是 经过预处理和编译之后的结果。-Idir 在#include 的时候, 先在用这个参数指定的位置找头文件, 如果没有找到,则到缺省的目录找头文件-llibrary 用于制定编译的时候使用的库,如 gcc -lgtk 则程序使用 gtk 库进行编译, 不过需要注意的是 gcc 库一般都是以 来命名库文件,在用-l 参数来加入库文件的时候, 直接用-lname 来引入,而前面的 lib 被省掉。这一点需要注意。-Ldir 编译的时候设定库文件查找的路径, 不然的话, 编译器只在标准库路径里面找库。-------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------- 一、 GCC 简介通常所说的 GCC 是 piler Collection 的简称, 除了编译程序之外,它还含其他相关工具, 所以它能把易于人类使用的高级语言编写的源代码构建成计算机能够直接执行的二进制代码。 GCC 是 Linux 平台下最常用的编译程序, 它是 Linux 平台编译器的事实标准。同时,在 Linux 平台下的嵌入式开发领域, GCC 也是用得最普遍的一种编译器。 GCC 之所以被广泛采用,是因为它能支持各种不同的目标体系结构。例如,它既支持基于宿主的开发(简单讲就是要为某平台编译程序, 就在该平台上编译), 也支持交叉编译(即在 A 平台上编译的程序是供平台 B 使用的) 。目前, GCC 支持的体系结构有四十余种, 常见的有 X86 系列、 Arm 、 PowerPC 等。同时, GCC 还能运行在不同的操作系统上,如 Linux 、 Solaris 、 Window s 等。除了上面讲的之外, GCC 除了支持 C 语言外,还支持多种其他语言, 例如 C++ 、 Ada 、 Java 、 Objective-C 、 FORTRAN 、 Pascal 等。二、程序的编译过程对于 GUN 编译器来说, 程序的编译要经历预处理、编译、汇编、连接四个阶段,如下图所示: 从功能上分, 预处理、编译、汇编是三个不同的阶段,但 GCC 的实际操作上, 它可以把这三个步骤合并为一个步骤来执行。下面我们以 C 语言为例来谈一下不同阶段的输入和输出情况。在预处理阶段,输入的是 C 语言的源文件, 通常为*.c 。 之类头文件的包含文件。这个阶段主要处理源文件中的#ifdef 、#include 和#define 命令。该阶段会生成一个中间文件*.i,
cc,gcc,g++比较 来自淘豆网m.daumloan.com转载请标明出处.