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++程序?
最新推荐文章于 2024-08-10 19:22:52 发布