Linux GCC基础用法⑦
在 CentOS 7 系统中使用 GCC 与编写 99 乘法表
一、GCC 简介
GCC(GNU Compiler Collection)是一套功能强大的编程语言编译器,在 CentOS 7 系统中广泛用于编译 C、C++等多种编程语言的程序。它能够将源代码转换为可执行文件,让计算机可以直接运行程序。
二、安装 GCC
在 CentOS 7 系统中,如果尚未安装 GCC,可以通过以下命令使用 yum 包管理器进行安装:
yum install gcc
解释:yum
是 CentOS 系统中用于软件包管理的工具,install
是安装操作,gcc
则是我们要安装的软件包名称。执行此命令后,系统会自动从 CentOS 的软件源下载并安装 GCC 及其相关依赖。
以下是在 CentOS 7 系统中使用 GCC 编写并运行最简单的 “Hello, world!” 程序的完整步骤,适合放在博客中展示:
一、编写源代码
- 首先,打开终端,使用文本编辑器(这里以
vi
为例,你也可以选择nano
等其他编辑器)创建一个名为hello.c
的文件,在终端输入以下命令:
vi hello.c
此时进入 vi
编辑器的命令模式。
- 按下
i
键进入插入模式,然后输入以下 C 语言代码:
#include <stdio.h>int main() {printf("Hello, world!\n");return 0;
}
代码解释如下:
- #include <stdio.h>
:这一行是引入标准输入输出头文件。在 C 语言中,要使用像 printf
这样的标准输入输出函数,就需要包含这个头文件,它为我们提供了相应函数的声明等信息。
- int main()
:这是 C 语言程序的主函数,是整个程序的入口点,程序从这里开始执行。
- printf("Hello, world!\n");
:printf
是一个用于输出信息到标准输出(通常就是终端屏幕)的函数,这里它会输出字符串 "Hello, world!"
,\n
表示换行符,使得输出完信息后进行换行操作。
- return 0;
:在 main
函数的末尾,return
语句用于返回一个整数值给操作系统,表示程序的结束状态。通常返回 0
表示程序正常结束。
- 编写完代码后,按下
Esc
键回到命令模式,然后输入:wq
保存文件并退出vi
编辑器。
二、使用 GCC 编译程序
在包含 hello.c
文件的目录下(可以通过 pwd
命令查看当前所在目录),使用以下 GCC 命令进行编译:
gcc hello.c -o hello
解释:
- gcc
是编译器命令,用于调用 GCC 编译器来处理我们的源文件。
- hello.c
是要编译的源文件名称,也就是我们刚刚编写的包含 “Hello, world!” 代码的那个文件。
- -o
选项用于指定输出文件的名称,这里我们将生成的可执行文件命名为 hello
。如果省略 -o
选项,默认会生成一个名为 a.out
的可执行文件。
三、运行程序
- 检查执行权限
编译后生成的可执行文件hello
,默认情况下可能没有执行权限。可以通过ls -l
命令查看其权限信息,像这样:
ls -l hello
输出结果可能类似如下形式(权限部分示例):
-rw-r--r--. 1 user user 8528 Dec 11 12:00 hello
这里开头的 -rw-r--r--
表示文件的权限,第一个字符 -
表明这是一个普通文件,后面三组 rwx
(这里是 rw-
、r--
、r--
)分别对应文件所有者、所属组以及其他用户的读(r
)、写(w
)、执行(x
)权限。可以看到当前示例中并没有执行权限(x
)标志,所以需要添加执行权限才能顺利运行这个文件。
- 添加执行权限
使用chmod
命令来为文件添加执行权限,有以下两种常用方式:- 使用数字形式修改权限:
命令格式为chmod [数字权限值] [文件名]
,数字权限值是通过将所有者、所属组、其他用户的权限对应的数字相加得到的。r
(读权限)对应数字4
,w
(写权限)对应数字2
,x
(执行权限)对应数字1
。比如要给所有者、所属组、其他用户都添加执行权限,对应的权限值就是755
(所有者rwx
即4 + 2 + 1 = 7
,所属组r-x
即4 + 0 + 1 = 5
,其他用户r-x
即4 + 0 + 1 = 5
),命令如下:
- 使用数字形式修改权限:
chmod 755 hello
- **使用符号形式修改权限**:
命令格式为 chmod [用户类型][操作符号][权限字符] [文件名]
,例如给所有者添加执行权限,可以这样操作:
chmod u+x hello
这里 u
表示所有者(user
),+
是添加权限的操作符号,x
表示执行权限。
- 运行可执行文件
在确保文件有了执行权限后,就可以在终端中通过以下方式运行它(假设当前所在目录就是包含hello
文件的目录,如果不在该目录,需要先切换到相应目录):
./hello
解释:./
表示当前目录,这是因为 Linux 系统在查找可执行文件时,默认不会在当前目录查找(出于安全等考虑),所以需要明确指定当前目录下的可执行文件来运行。运行上述命令后,你就能在终端看到输出的 "Hello, world!"
字符串了。
三、使用 vi 编写 99 乘法表程序
- 打开终端,输入
vi multitable.c
命令创建并打开一个名为multitable.c
的文件。此时进入 vi 编辑器的命令模式。 - 按下
i
键进入插入模式,开始编写代码:
#include <stdio.h>int main() {int i, j;for (i = 1; i <= 9; i++) {for (j = 1; j <= i; j++) {// 输出乘法表达式和结果,%d 表示整数占位符printf("%d x %d = %d\t", j, i, i * j);}// 换行,用于输出下一行乘法表printf("\n");}return 0;
}
解释:
- #include <stdio.h>
:引入标准输入输出头文件,这样我们就可以使用printf
函数进行输出。
- int main()
:程序的主函数,是程序的入口点。
- int i, j;
:定义两个整型变量i
和j
,用于循环计数。
- 外层for
循环for (i = 1; i <= 9; i++)
:控制乘法表的行数,从 1 到 9。
- 内层for
循环for (j = 1; j <= i; j++)
:控制每行乘法表的列数,列数与当前行数相等。例如,当i = 3
时,内层循环会执行 3 次,输出 1 x 3 = 3、2 x 3 = 6、3 x 3 = 9。
- printf("%d x %d = %d\t", j, i, i * j);
:按照指定格式输出乘法表达式和结果,\t
表示制表符,用于对齐输出。
- printf("\n");
:在内层循环结束后换行,准备输出下一行乘法表。
3. 编写完代码后,按下Esc
键回到命令模式,输入:wq
保存文件并退出 vi 编辑器。
四、使用 GCC 编译 99 乘法表程序
在包含multitable.c
文件的目录下,使用以下命令进行编译:
gcc multitable.c -o multitable
解释:gcc
是编译器命令,multitable.c
是要编译的源文件,-o
选项用于指定输出文件的名称,这里将生成的可执行文件命名为multitable
。
五、运行程序
- 权限相关说明:在 Linux 系统(包括 CentOS 7)中,默认情况下新生成的可执行文件可能没有执行权限。可以通过
ls -l
命令查看文件的详细信息,例如对编译后的multitable
文件查看权限信息:
ls -l multitable
输出结果可能类似如下形式(权限部分示例):
-rw-r--r--. 1 user user 8528 Dec 11 12:00 multitable
其中开头的-rw-r--r--
表示文件的权限,第一个字符-
说明这是一个普通文件,后面的三组rwx
(这里是rw-
、r--
、r--
)分别对应文件所有者、所属组以及其他用户的读(r
)、写(w
)、执行(x
)权限。可以看到当前示例中并没有执行权限(x
)标志,所以需要添加执行权限才能运行这个文件。
2. 添加执行权限:使用chmod
命令来为文件添加执行权限,常用的方式有以下两种:
- 使用数字形式修改权限:
命令格式为chmod [数字权限值] [文件名]
,数字权限值是通过将所有者、所属组、其他用户的权限对应的数字相加得到的。r
(读权限)对应数字4
,w
(写权限)对应数字2
,x
(执行权限)对应数字1
。比如要给所有者、所属组、其他用户都添加执行权限,对应的权限值就是755
(所有者rwx
即4 + 2 + 1 = 7
,所属组r-x
即4 + 0 + 1 = 5
,其他用户r-x
即4 + 0 + 1 = 5
),命令如下:
chmod 755 multitable
- **使用符号形式修改权限**:
命令格式为chmod [用户类型][操作符号][权限字符] [文件名]
,例如给所有者添加执行权限,可以这样操作:
chmod u+x multitable
这里u
表示所有者(user
),+
是添加权限的操作符号,x
表示执行权限。
3. 运行可执行文件:在确保文件有了执行权限后,就可以在终端中通过以下方式运行它(假设当前所在目录就是包含multitable
文件的目录,如果不在该目录,需要先切换到相应目录):
./multitable
解释:./
表示当前目录,这是因为 Linux 系统在查找可执行文件时,默认不会在当前目录查找(出于安全等考虑),所以需要明确指定当前目录下的可执行文件来运行。这样操作后,就可以看到终端中输出了我们期望的99
乘法表内容了,如下所示:
1 x 1 = 1
1 x 2 = 2 2 x 2 = 4
1 x 3 = 3 2 x 3 = 6 3 x 3 = 9
1 x 4 = 4 2 x 4 = 8 3 x 4 = 12 4 x 4 = 16
1 x 5 = 5 2 x 5 = 10 3 x 5 = 15 4 x 5 = 20 5 x 5 = 25
1 x 6 = 6 2 x 6 = 12 3 x 6 = 18 4 x 6 = 24 5 x 6 = 30 6 x 6 = 36
1 x 7 = 7 2 x 7 = 14 3 x 7 = 21 4 x 7 = 28 5 x 7 = 35 6 x 7 = 42 7 x 7 = 49
1 x 8 = 8 2 x 8 = 16 3 x 8 = 24 4 x 8 = 32 5 x 8 = 40 6 x 8 = 48 7 x 8 = 56 8 x 8 = 64
1 x 9 = 9 2 x 9 = 18 3 x 9 = 27 4 x 9 = 36 5 x 9 = 45 6 x 9 = 54 7 x 9 = 63 8 x 9 = 72 9 x 9 = 81