Linux 中最重要的软件开发工具是 GCC。GCC
是 GNU
的 C
和 C++
编译器。实际上,GCC 能够编译三种:C、C++
和 Object
C(C 语言的一种面向对象扩展)。利用
gcc 命令可同时编译并连接
C 和
C++ 源程序。
#DEMO#: hello.c
如果你有两个或少数几个 C
源,也可以方便地利用 GCC
编译、连接并生成可执行文件。例如,假设你有两个源文件 main.c
和 factorial.c
两个源文件,现在要编译生成一个计算阶乘的程序。
-----------------------
清单 factorial.c
-----------------------
#include <stdio.h>
#include <stdlib.h>
int factorial
(int n)
{
if
(n <=
1)
return
1;
else
return
factorial (n
- 1)
* n;
}
-----------------------
-----------------------
清单 main.c
-----------------------
#include <stdio.h>
#include <stdlib.h>
int factorial
(int n);
int main
(int argc,
char **argv)
{
int
n;
if
(argc <
2) {
printf
("Usage: %s
n\n", argv
[0]);
return
-1;
}
else
{
n
= atoi
(argv[1]);
printf
("Factorial of
%d is
%d.\n", n,
factorial (n));
}
return
0;
}
-----------------------
利用如下的命令可编译生成可执行文件,并执行程序:
$ gcc
-o factorial
main.c factorial.c
$ ./factorial
5
Factorial of
5 is
120.
GCC 可同时用来编译
C 程序和
C++ 程序。一般来说,C
编译器通过源文件的后缀名来判断是 C
程序还是 C++
程序。在 Linux
中,C 源文件的后缀名为
.c,而 C++
源文件的后缀名为 .C
或 .cpp。
但是,gcc 命令只能编译
C++ 源文件,而不能自动和
C++ 程序使用的库连接。因此,通常使用
g++ 命令来完成
C++ 程序的编译和连接,该程序会自动调用
gcc 实现编译。假设我们有一个如下的
C++ 源文件(hello.C):
#include <iostream.h>
void main
(void)
{
cout
<< "Hello,
world!" <<
endl;
}
则可以如下调用 g++
命令编译、连接并生成可执行文件:
$ g++
-o hello
hello.C
$ ./hello
Hello, world!
1.7.2 gcc/egcs
的主要选项
表
1-3 gcc
命令的常用选项
选项 解释
-ansi 只支持
ANSI 的
C 语法。这一选项将禁止
GNU C
的某些特色,
例如
asm 或
typeof 关键词。
-c 只编译并生成目标文件。
-DMACRO 以字符串“1”定义
MACRO 宏。
-DMACRO=DEFN 以字符串“DEFN”定义
MACRO 宏。
-E 只运行
C 预编译器。
-g 生成调试信息。GNU
调试器可利用该信息。
-IDIRECTORY 指定额外的头文件搜索路径DIRECTORY。
-LDIRECTORY 指定额外的函数库搜索路径DIRECTORY。
-lLIBRARY 连接时搜索指定的函数库LIBRARY。
-m486 针对
486 进行代码优化。
-o FILE
生成指定的输出文件。用在生成可执行文件时。
-O0 不进行优化处理。
-O 或
-O1 优化生成代码。
-O2 进一步优化。
-O3 比
-O2 更进一步优化,包括
inline 函数。
-shared 生成共享目标文件。通常用在建立共享库时。
-static 禁止共享连接。
-UMACRO 取消对
MACRO 宏的定义。
-w 不生成任何警告信息。
-Wall 生成所有警告信息。
#DEMO#
Linux下如何编译、运行C、C++程序?
最新推荐文章于 2025-07-06 14:34:11 发布