本文设计了LINUX一些基本命令的讲解包括基本命令ls,man;编译命令gcc以及相关参数说明,【练习:输出斐波那契数列】
ls
是 Linux 系统中用于列出目录内容的命令。以下是常用的 ls
命令及其选项:
ls
:列出当前目录的文件和子目录。ls -a
:显示所有文件,包括以点(.)开头的隐藏文件。隐藏文件通常是系统文件或配置文件。ls -l
:以长格式显示文件列表,包括文件的详细信息,如权限、所有者、文件大小、修改时间等。ls -al
:结合了 -a
和 -l
选项,以长格式显示所有文件,包括隐藏文件。man
命令是 Linux 系统中用于查看命令手册(manual)的工具。通过 man
命令,你可以获取关于特定命令的详细信息,包括命令的用法、选项、参数以及其他相关信息。下面是一些使用 man
命令的示例:
查看命令的手册页:
man <command>
例如,要查看 ls
命令的手册页,可以执行:
man ls
这将显示 ls
命令的详细手册。
浏览手册页:
一旦你进入手册页,你可以使用箭头键进行上下滚动。按下 q
键退出手册页返回终端。
搜索关键字:
如果你想在手册页中搜索特定关键字,你可以按下 /
键,然后输入关键字。按下 n
键可以跳转到下一个匹配项,按下 N
键可以跳转到上一个匹配项。
离开手册页:
在手册页中,按下 q
键可以退出手册页。
示例:
# 查看ls命令的手册页
man ls
通过 man
命令,可以深入了解每个命令的功能和用法,这对于学习和使用 Linux 命令非常有帮助。
创建一个.c文件,然后输入一个简单的c代码,比如
#include <stdio.h>
int main()
{
printf("hello world!!\n");
return 0;
}
gcc main.c //默认生成a.out
gcc main.c -o main //生成的文件会被命名为main
./main 执行
如果你想使用 gcc
编译时生成包含调试信息的可执行文件,你可以使用 -g
选项。这个选项告诉编译器在可执行文件中包含调试信息,这对于在调试过程中进行源代码级别的调试非常有用。
下面是一个示例:
gcc -g main.c -o main_debug
在这个例子中,-g
选项告诉 gcc
在编译时生成包含调试信息的可执行文件。生成的可执行文件的名称是 main_debug
,你可以根据需要调整名称。
然后,你可以使用调试器(比如 gdb
)来调试程序。例如:
gdb ./main_debug
然后在 gdb
中运行你的程序,你就可以使用各种调试命令进行源代码级别的调试。
如果你想使用 gcc
生成汇编代码(.s 文件),可以使用 -S
选项。这个选项告诉编译器生成汇编代码而不进行后续的汇编和链接。
下面是一个示例:
gcc -S main.c
这将生成一个名为 main.s
的汇编代码文件,其中 main.c
是你的 C 语言源代码文件。
你可以通过指定输出文件的名称来自定义生成的汇编文件的名称:
gcc -S main.c -o main_assembly.s
在这个例子中,生成的汇编代码文件的名称为 main_assembly.s
。
请注意,生成的汇编代码文件可以使用文本编辑器查看,以了解编译器是如何将你的 C 代码转换为汇编代码的。
仅进行链接,不进行编译
gcc -c input_source.c
如果你想要链接到指定的库,你可以使用 -l
选项来告诉 gcc
在链接阶段使用特定的库。通常,库的名称是在lib
前缀之后,不包括文件扩展名。例如,链接到数学库时,你可以使用 -lm
。
以下是一个示例:
gcc main.c -o main -lm
在这个例子中,-lm
指定链接到数学库。如果你有其他库的需求,可以相应地更改选项。
如果库文件不在标准路径中,你可能需要使用 -L
选项指定库文件的路径。例如:
gcc main.c -o main -L/path/to/library -lmylibrary
在这个例子中,-L/path/to/library
指定库文件的路径,而 -lmylibrary
指定链接到名为 libmylibrary.so
(或 libmylibrary.a
)的库文件。
请注意,链接到库时,编译器需要找到库文件。如果库文件不在标准路径中,可以使用 -L
选项指定库文件的路径。
#include <stdio.h>
int main()
{
int i, n, nextTerm;
int t1=0;
int t2=1;
printf("输出几项: ");
scanf("%d", &n);
printf("斐波那契数列: ");
for (i = 1; i <= n; ++i)
{
printf("%d, ", t1);
nextTerm = t1 + t2;
t1 = t2;
t2 = nextTerm;
}
return 0;
}
运行的效果: