linux系统中命令基础
目录
一、命令概述
1. 命令的本质
2. 如何打开一个终端
3. 普通用户与超级用户
4. 终端中快捷键操作
5. 查找/学习命令的方法
6. 命令的格式
7. Linux 系统中的路径
8. Shell 特殊符号
二、基础命令
1、clear
2、su / sudo su
3、useradd
4、userdel
5、passwd
6、alias
7、unalias
8、date
9、cal
10、reboot
11、ps
三、文件相关命令
通用文件相关命令
1、cd
2、pwd
3、echo
4、chmod
和普通文件相关
1、touch 命令
2、rm
3、cat
4、mv
5、cp
6、tar
和目录相关文件
1、mkdir
2、rmdir
3、ls
四、linux系统中编辑器使用
1. gedit
2. vim 编辑器
五、linux系统中编译器使用
gcc 编译器的使用
方法1:指定输出文件名
方法2:不指定输出文件名
方法3:多文件编译
方法4:分步编译
方法5:带库编译
方法6:调试编译
一、命令概述
1. 命令的本质
在 Linux 中,命令的本质就是一个可执行文件,这些文件通常由源代码编译而来,存放在系统的标准目录(如 /bin
、/usr/bin
、/sbin
等)中。当用户在终端输入命令时,Shell 会到这些目录里查找对应的可执行文件并运行。虽然我们也可以把自己编译的程序放到根目录下直接调用,但这种做法不推荐,更常见的做法是将程序放到 $PATH
所包含的目录中,这样就能像系统命令一样方便调用。
这张图显示的就是 /bin 目录下的所有命令,它们大多是 Linux 系统运行所必需的基础工具。用户在终端输入命令时,Shell 会在
/bin
等目录里找到对应的可执行文件并执行。
绿色 → 普通可执行文件(大部分命令)。
蓝色 → 符号链接(软链接)。
红色背景 → 需要特别注意的可执行文件(比如可能是 suid 权限、挂载命令等)。
浅蓝色 → 可能是和网络相关的命令或特殊二进制。
2. 如何打开一个终端
-
快捷键
-
常见发行版(如 Ubuntu、Debian)可以使用
Ctrl + Alt + T
快速打开终端窗口。
-
-
菜单方式
-
在桌面环境(GNOME、KDE 等)中,依次点击:
应用程序 → 系统工具 → 终端(或“Terminal”)。
-
-
右键菜单
-
在桌面或文件管理器中,鼠标右键点击空白处,选择 “在终端中打开” 或类似选项。
-
-
TTY 方式(更底层)
-
使用快捷键
Ctrl + Alt + F1 ~ F6
可以切换到不同的 TTY 控制台(纯字符界面)。 -
使用
Ctrl + Alt + F7
(或 F1/F2,视发行版不同)可以切回图形界面。
-
3. 普通用户与超级用户
特性 | 普通用户 | 超级用户(root) |
---|---|---|
权限范围 | 只能操作自己家目录下的文件,不能修改系统核心目录和配置 | 可以操作系统中的所有文件和目录,没有限制 |
家目录 | /home/用户名 | /root |
系统安全性 | 操作受限,风险较低 | 权限过大,误操作可能导致系统崩溃 |
提示符 | $ | # |
获取方式 | 普通登录用户 | 直接以 root 登录,或通过 su / sudo 切换 |
常见用途 | 日常使用:编辑个人文件、运行应用程序 | 系统管理:安装/卸载软件、修改配置、管理用户和权限 |
4. 终端中快捷键操作
快捷键 | 功能 |
---|---|
Ctrl + C | 终止正在运行的前台程序(发送 SIGINT 信号)。 |
Ctrl + D | 退出当前 Shell(等效于输入 exit ,也表示输入结束 EOF )。 |
Ctrl + L | 清屏(等效于 clear 命令,光标回到屏幕顶端)。 |
↑ / ↓ | 在历史命令之间切换。 |
| 自动补全命令或路径,按两次可列出所有可选项。 |
Ctrl + A | 光标移动到命令行开头。 |
Ctrl + E | 光标移动到命令行结尾。 |
Ctrl + U | 删除光标前的内容。 |
Ctrl + K | 删除光标后的内容。 |
Ctrl + W | 删除光标前的一个单词。 |
Ctrl + R | 搜索历史命令(输入关键词,实时匹配)。 |
Ctrl + Z | 挂起当前任务(发送 SIGTSTP 信号,可用 fg 恢复)。 |
Ctrl + Shift + + | 放大终端字体(不同终端可能略有区别)。 |
Ctrl + - | 缩小终端字体。 |
Ctrl + 0 | 恢复默认字体大小。 |
5. 查找/学习命令的方法
在 Linux 中,学习和查询命令的常见方式有以下几种:
利用网络
通过搜索引擎或 Linux 官方文档,可以快速找到命令的用法和示例。这种方式适合初学者或需要查找综合资料时使用。
在 Linux 系统中查找
Linux 本身提供了多种命令文档工具:
1.man 手册
- 语法:
man 命令名
- 示例:
man ls
- 功能:查看命令的详细说明、参数和选项。
- 退出:按
q
退出。
2.--help 帮助
- 语法:
命令名 --help
- 示例:
ls --help
- 功能:快速查看命令的简要说明和常用参数。
3.info 信息页
- 语法:
info 命令名
- 示例:
info ls
- 功能:提供比 man 更详细的说明(但在现代 Linux 中,多数命令仍主要使用
man
和--help
)。 - 退出:按
q
退出。
6. 命令的格式
-
通过 man 命令查看格式
使用man 命令名
可以查到该命令的标准格式。
命令后面一般会带有 选项参数,其作用是限定或扩展命令的功能。 -
命令的通用组成
命令 [选项] [参数]
-
命令:要执行的操作,如
ls
、cd
、cp
。 -
选项:用来控制命令的功能或行为,例如
-l
、-a
。 -
参数:命令操作的对象,可以是文件、目录或路径。
-
-
每个命令都有自己的专属格式
同一个命令在不同情况下可搭配不同参数与路径,从而实现多种功能。
7. Linux 系统中的路径
-
绝对路径:从根目录
/
开始,例如/home/user/test
-
相对路径:相对于当前目录,例如
./file
、../test
8. Shell 特殊符号
-
.
:当前目录-
示例:
./a.out
表示执行当前目录下的 a.out 程序。
-
-
..
:上一级目录-
示例:
cd ..
回到上一级目录。
-
-
~
:当前用户的主目录(Home 目录)-
示例:
cd ~
回到用户主目录。
-
-
*
:通配符,匹配任意数量的字符-
示例:
ls *.txt
显示所有以.txt
结尾的文件。
-
-
>
:输出重定向(覆盖写入)-
示例:
echo hello > file.txt
把hello
写入 file.txt,覆盖原内容。
-
-
>>
:追加重定向-
示例:
echo world >> file.txt
把world
追加到 file.txt 的末尾。
-
-
|
:管道,把前一个命令的输出作为后一个命令的输入-
示例:
ls | grep txt
把ls
的输出交给grep
,筛选出含有txt
的内容。
-
二、基础命令
1、clear
-
用法:
clear
-
功能:清空终端屏幕,相当于快捷键 Ctrl + L
2、su / sudo su
-
用法:
-
su
→ 切换到超级用户(需要输入 root 密码) -
sudo su
→ 普通用户通过sudo
提权后切换到超级用户(输入当前用户密码)
-
-
功能:在终端中切换到超级用户(root)下
-
对比点 su(switch user)
sudo (superuser do) su
权限验证方式 需要输入 root 密码 需要输入 当前用户密码(前提是该用户在 sudoers
中)安全性 任何知道 root 密码的人都能切换到 root,密码可能被多人共享 只有在 sudoers
文件中被授权的用户才能切换 root,更细粒度、更安全环境变量 su
默认不会加载完整的 root 环境(除非su -
)sudo su
一般会继承当前用户环境,且拥有 root 权限日志记录 仅记录 su
行为,不记录具体是哪个用户执行sudo
会在日志中记录执行者和时间,便于审计和追踪常见场景 适合已经启用 root 账户、并且知道 root 密码的情况 常用于 Ubuntu 等禁用 root 登录的系统,更常见、更安全
3、useradd
-
用法:
useradd 用户名 useradd -m 用户名 # 创建用户并自动生成家目录
-
功能:增加一个用户(需要在超级用户下执行,可以先输入
su
或用sudo
提权) -
注意:
-
一般要加上
-m
参数,否则可能不会为用户自动创建家目录。 -
新增的用户默认没有密码,需要再用
passwd 用户名
来设置密码。
-
在终端成功创建了一个新用户 newuser。
Ubuntu 登录界面已经显示了 newuser 用户
4、userdel
-
用法:
userdel 用户名 userdel -r 用户名 # 删除用户并同时删除其家目录
-
功能:删除一个用户(需要超级用户权限)。
-
注意事项:
-
单独执行
userdel 用户名
时,只删除用户账号,但不会删除该用户的家目录/home/用户名
和邮件文件。 -
如果要彻底删除用户及其家目录,需要加上
-r
选项。 -
建议先确认该用户没有正在运行的进程,可以用
ps -u 用户名
检查。
-
在终端删除用户 newuser。
Ubuntu 登录界面没有了newuser 用户
5、passwd
-
用法:
passwd # 修改当前用户的密码 passwd 用户名 # 修改指定用户的密码(需要超级用户权限)
-
功能:修改或重新设置用户的登录密码。
-
常用场景:
-
普通用户修改自己的密码:
passwd
系统会要求输入两次新密码。
-
超级用户(root)修改其他用户的密码:
sudo passwd 用户名
-
给 root 用户设置密码(很多 Linux 发行版默认 root 没有密码,不能直接登录):
sudo passwd root
设置完成后就可以用
su
切换到 root 账号。
-
6、alias
-
用法:
alias alias 新命令='原命令'
-
功能:给当前存在的命令设置别名,相当于 C 语言里的
#define
宏替换。 -
示例:
alias DEOM='ls' # 输入 DEMO 就等于执行 ls
-
注意事项:
-
alias
设置的别名 只在当前终端会话有效,关闭终端就会失效。 -
如果想永久生效,可以把
alias
命令写进~/.bashrc
或~/.zshrc
,然后执行source ~/.bashrc
让它立即生效。
-
在 Linux 终端里定义了一个别名
DEMO
,然后执行了DEMO
,效果就是执行ls
命令,列出了当前目录下的文件和文件夹
7、unalias
- 用法
-
删除单个别名
unalias DEMO
这样就把你之前定义的
alias DEMO='ls'
删除掉了。
删除后再输入DEMO
就不会再执行ls
,而是提示command not found
。 -
删除所有别名
unalias -a
这样会清空当前 shell 会话里的所有别名。
-
注意事项:
-
unalias
只能删除当前会话里定义的别名。 -
如果别名写在
~/.bashrc
或~/.zshrc
里,下次重新打开终端时还是会生效。
如果想永久删除,就需要同时把配置文件里的那一行删掉
-
8、date
功能:显示或设置系统日期与时间。
用法
-
显示当前日期和时间
date
👉 输出类似:
-
自定义格式输出
用+
加格式控制符:date "+%Y-%m-%d %H:%M:%S"
👉 输出:
常用格式符:
-
%Y
年 (四位数) -
%m
月 (01-12) -
%d
日 (01-31) -
%H
小时 (00-23) -
%M
分钟 (00-59) -
%S
秒 (00-59)
-
-
设置系统时间(需要 root 权限)
sudo date -s "2025-10-12 17:15:00"
9、cal
功能:显示日历
基本用法
-
显示当月日历
cal
👉 会显示当前月份的日历
-
显示某一年整年的日历
cal 2025
👉 输出 2025 全年日历
-
显示某年某月的日历
cal 10 2025
👉 显示 2025 年 10 月的日历
常用拓展
-
显示前后几个月
cal -3
👉 显示上个月、本月、下个月
10、reboot
-
用法:
reboot
-
功能:重启系统(需要超级用户权限)。
-
说明:
-
普通用户执行时通常会提示权限不足。
-
一般用法是:
sudo reboot
-
立即让系统关机并重新启动。
-
-
注意:
如果系统正在运行重要任务或有未保存的文件,直接reboot
可能导致数据丢失。
11、ps
-
用法:
ps
-
功能:查询当前进程的状态信息。
-
常见选项:
-
ps -ef
-
以 全格式 显示所有进程的信息。
-
常用来查看系统上所有进程。
-
输出字段包括 UID、PID、PPID、启动时间、命令等。
-
例子:
ps -ef | grep ssh
(查询与 ssh 相关的进程)
-
-
ps -aux
-
以 BSD 格式 显示所有进程。
-
显示内容更丰富,例如内存占用率(%MEM)、CPU 占用率(%CPU)等。
-
常用于快速查看进程的资源占用情况。
-
例子:
ps -aux | head -5
(只看前 5 行输出)
-
-
-
注意:
-
ps -ef
和ps aux
是两种不同的风格(System V 风格和 BSD 风格),输出格式不同,但都能查看所有进程。 -
一般
ps -ef
搭配grep
使用较多,而ps aux
更方便观察系统资源占用。
-
三、文件相关命令
通用文件相关命令
1、cd
-
功能:在终端中进入(切换)到指定的文件夹(目录)。
-
基本用法:
cd 目录路径
-
常见写法:
-
cd /home/user
→ 进入绝对路径/home/user
-
cd Documents
→ 进入当前目录下的Documents
文件夹 -
cd ..
→ 返回上一级目录 -
cd .
→ 停留在当前目录(几乎没用) -
cd ~
→ 进入当前用户的主目录 -
cd -
→ 返回上一次所在的目录
-
2、pwd
功能:显示当前终端所在目录的 绝对路径。
基本用法:
pwd
3、echo 命令
功能:将内容输出到终端或写入文件。
用法 1:输出到终端
echo 字符串
-
将字符串直接显示在终端上
-
默认会换行
-
如果不想换行,可以加
-n
参数:
echo -n 字符串
用法 2:覆盖写入文件
echo 字符串 > 文件名
-
将字符串写入文件,如果文件已存在,会 覆盖原内容
用法 3:追加写入文件
echo 字符串 >> 文件名
-
将字符串 追加 到文件末尾,不会覆盖原有内容
3、echo
功能:在终端输出字符串,或将字符串写入文件。
用法 1:输出到终端
echo 字符串
-
将字符串直接显示在终端上
-
默认会换行
-
如果不想换行,可以使用
-n
参数:
echo -n 字符串
用法 2:写入文件(覆盖)
echo 字符串 > 文件名
-
将字符串写入文件
-
如果文件已存在,会覆盖原内容
用法
echo 字符串 >> 文件名
-
将字符串追加到文件末尾
-
不会覆盖原有内容
4、chmod
功能:修改文件或目录的权限。
①、符号模式
chmod [u/g/o/a] [+/−/=] [r/w/x] 文件名
-
u → user(文件所有者)
-
g → group(文件所属组)
-
o → other(其他用户)
-
a → all(所有用户 = u+g+o)
-
r → read(读)
-
w → write(写)
-
x → execute(执行)
-
+ → 添加权限
-
- → 移除权限
-
= → 直接设定权限
示例:
chmod u+rwx,g+rwx,o+rwx 文件名 # 给所有人添加读/写/执行权限
chmod o-r 文件名 # 去掉其他用户的读权限
chmod g=rw 文件名 # 设置组用户只有读和写权限
②、数字模式
chmod 数字 文件名
权限由 三位八进制数表示:
-
r = 4
-
w = 2
-
x = 1
三者相加 = 该角色的权限值。
-
第一位 → 文件所有者 (u)
-
第二位 → 所属组 (g)
-
第三位 → 其他用户 (o)
示例:
chmod 777 1.txt # u/g/o 都有 rwx 权限
chmod 644 1.txt # u=rw,g=r,o=r
chmod 755 script.sh # u=rwx,g=rx,o=rx (常用于脚本)
📌 总结:
-
符号模式 → 适合精确地加减某个权限。
-
数字模式 → 常见于快速设定完整权限。
和普通文件相关
1、touch 命令
功能:创建空的普通文件,或者更新已存在文件的时间戳(访问时间和修改时间)。
基本用法:
touch 文件名
-
如果文件不存在 → 创建一个空文件
-
如果文件已存在 → 不会修改内容,只会更新时间戳
扩展功能:一次创建多个文件
touch file1 file2 file3
注意:多个文件名之间用空格分隔
示例:
touch a.txt # 创建 a.txt 文件
touch a.txt b.txt c.txt # 同时创建 3 个文件
2、rm
功能:删除文件或目录。
用法 1:删除普通文件
rm 文件名
-
删除指定文件
-
示例:
rm a.txt # 删除 a.txt
用法 2:删除目录(递归删除)
rm -r 目录名
-
删除指定目录及其内部的所有子目录、文件
-
示例:
rm -r testdir # 删除 testdir 目录及里面所有内容
常用扩展选项:
-
-i
:删除前逐个询问确认
rm -i a.txt
-
-f
:强制删除,不提示确认(危险)
rm -rf testdir
⚠️ 注意:
rm -rf /
会把根目录删掉,相当于毁掉整个系统,所以使用时一定要小心。
3、cat
功能:查看普通文件内容,并显示到终端上。
基本用法:
cat 文件名
-
将指定文件的全部内容输出到终端
示例:
cat a.txt
显示 a.txt
文件的全部内容。
补充:查看文件开头或结尾的部分内容
-
查看文件开头的 N 行:
head -n N 文件名
示例:
head -n 10 a.c # 显示 a.c 文件的前10行
-
查看文件结尾的 N 行:
tail -n N 文件名
示例:
tail -n 10 a.c # 显示 a.c 文件的最后10行
4、mv
功能:移动文件或目录,并可在移动时重命名。
用法 1:移动并重命名
mv 源文件 目标文件
-
将源文件移动到当前目录,并改名为目标文件
-
示例:
mv a.txt b.txt # 把 a.txt 改名为 b.txt
用法 2:移动到指定路径
mv 源文件 目录路径
-
将文件移动到指定目录下,文件名保持不变
-
示例:
mv a.txt /home/liao/Documents/ # 把 a.txt 移动到 Documents 目录
额外提示:
-
mv
命令同时适用于目录:
mv dir1 dir2/ # 把目录 dir1 移动到 dir2 里
-
如果目标文件已存在,默认会被覆盖。若要提示确认,可加
-i
参数:
mv -i a.txt b.txt
5、cp
功能:复制文件或目录。
用法 1:文件复制并改名
cp 源文件 目标文件
-
将源文件复制成目标文件(内容相同,但两个文件互不影响)
-
示例:
cp a.txt b.txt # 复制一份 a.txt 并命名为 b.txt
用法 2:复制到指定目录
cp 源文件 目录路径
-
将文件复制到指定目录下,文件名保持不变
-
示例:
cp a.txt /home/liao/Documents/ # 把 a.txt 复制到 Documents 目录
问题 1:复制目录时报错
-
默认情况下,
cp
只复制文件,复制目录会提示错误或被忽略。
解决办法:
cp -r 源目录 目标路径
-
-r
或--recursive
表示递归复制整个目录(包括子目录和文件) -
示例:
cp -r project/ backup/ # 把 project 目录整个复制到 backup 下
补充常用选项:
-
-i
:覆盖文件时询问确认 -
-v
:显示复制的过程 -
-p
:保留文件的时间戳和权限属性
6、tar
功能:打包、压缩文件,或者解压缩文件。
常用参数
-
-c
→ create,建立新的归档文件(打包) -
-x
→ extract,从归档文件中释放文件(解包/解压) -
-v
→ verbose,显示处理过程 -
-f
→ file,指定归档文件名(必须紧跟在后面) -
-z
→ 使用 gzip 压缩方式(.tar.gz
或.tgz
文件常见)
用法 1:打包(不压缩)
tar -cvf 打包文件名.tar 源文件/目录
示例:
tar -cvf helloworld.tar 123.txt # 打包 123.txt,生成 helloworld.tar
用法 2:解包(不解压)
tar -xvf 打包文件名.tar
示例:
tar -xvf helloworld.tar
用法 3:打包并压缩(常用)
tar -zcvf 压缩文件名.tar.gz 源文件/目录
示例:
tar -zcvf project.tar.gz project/ # 压缩整个 project 目录
用法 4:解压缩
tar -zxvf 压缩文件名.tar.gz
示例:
tar -zxvf project.tar.gz
补充:zip
/ unzip
压缩:
zip 压缩包名.zip 文件
zip -r 压缩包名.zip 目录
解压:
unzip 压缩包名.zip
📌 总结:
-
tar
常用来生成.tar
、.tar.gz
文件。 -
zip/unzip
常用来生成.zip
文件。
和目录相关文件
1、mkdir
功能:新建目录。
基本用法:
mkdir 目录名
-
创建一个新的目录
-
示例:
mkdir testdir # 创建名为 testdir 的目录
扩展功能 1:一次创建多个目录
mkdir dir1 dir2 dir3
-
会在当前路径下同时创建
dir1
、dir2
、dir3
扩展功能 2:递归创建多级目录
mkdir -p 父目录/子目录/孙目录
-
如果父目录不存在,会自动创建
-
示例:
mkdir -p projects/2025/notes
会一次性创建 projects → 2025 → notes
目录结构。
2、rmdir
功能:删除空目录。
基本用法:
rmdir 目录名
-
删除指定目录,但要求目录必须是空的
-
示例:
rmdir testdir # 删除空目录 testdir
扩展功能:一次删除多个目录
rmdir dir1 dir2 dir3
-
如果这些目录是空的,会一次性删除
注意事项:
-
rmdir
只能删除 空目录,如果目录中有文件或子目录,会报错 -
如果需要删除 非空目录,要用:
rm -r 目录名
3、ls
功能:显示目录内容,查看文件和目录信息。
基本用法:
ls
-
显示当前路径下的所有文件和目录名称
常用选项:
-
-l
:长格式显示,包含权限、所有者、文件大小、修改时间等详细信息 -
-a
:显示所有文件(包括隐藏文件,以.
开头的文件) -
-h
:配合-l
使用,以更易读的方式显示文件大小(如 KB、MB) -
-R
:递归显示子目录内容
示例:
ls -l # 详细列出当前目录内容
ls -la # 列出所有文件(含隐藏文件)及详细信息
ls -lh # 详细信息 + 文件大小以 KB/MB 显示
ls -R # 显示当前目录及所有子目录内容
四、linux系统中编辑器使用
1. gedit
-
特点:图形化编辑器,操作简单,类似于 Windows 的“记事本”。
-
适用场景:初学者,或者习惯图形界面操作的人。
-
用法:
gedit 文件名
如果文件存在 → 打开文件;如果文件不存在 → 创建新文件。
示例:
gedit a.txt
会打开一个图形化窗口编辑 a.txt
。
2. vim 编辑器
-
特点:命令行文本编辑器,功能强大,是 Linux 程序员和系统管理员常用工具。
-
模式:
-
命令模式:默认进入,用于操作(删除、复制、粘贴等)
-
编辑模式:按
i
进入,可输入文本 -
底行模式:按
:
进入,用于保存、退出等命令
-
-
常用操作:
-
i
→ 进入编辑模式 -
Esc
→ 返回命令模式 -
:w
→ 保存文件 -
:q
→ 退出 -
:wq
→ 保存并退出 -
:q!
→ 强制退出(不保存)
-
-
用法:
vim 文件名
示例:
vim b.txt
进入 b.txt
文件编辑界面。
五、linux系统中编译器使用
gcc 编译器的使用
方法1:指定输出文件名
特点
gcc
是 GNU C 编译器,也是交叉编译工具的常见名字(不同芯片可能对应不同工具链,比如arm-none-eabi-gcc
)。- 可以编译单个 C 文件并指定输出文件名。
用法
gcc 源码文件.c -o 可执行文件名
例子
gcc a.c -o test1 ./test1
方法2:不指定输出文件名
用法
gcc 源码文件.c
功能
不使用 -o
参数时,gcc 默认生成一个 a.out
的可执行文件。
例子
gcc a.c ./a.out
方法3:多文件编译
场景
程序由多个源文件组成,需要一起编译。
用法
gcc 文件1.c 文件2.c ... -o 可执行文件名
例子
gcc main.c add.c sub.c -o calc ./calc
方法4:分步编译
场景
- 先把源码编译成目标文件(
.o
),最后再链接生成可执行文件。 - 适合大型项目,提高编译效率。
步骤
生成目标文件:
gcc -c 文件.c
会生成对应的 .o
文件。
链接生成可执行文件:
gcc 文件1.o 文件2.o -o 可执行文件
例子
gcc -c main.c add.c sub.c gcc main.o add.o sub.o -o calc ./calc
方法5:带库编译
场景
- 使用第三方库(如
math
库libm.so
)。 - 需要加
-l
选项指定库。
用法
gcc 源码.c -o 可执行文件 -l库名
例子(使用 math.h
的函数 sqrt
)
gcc test.c -o test -lm ./test
方法6:调试编译
场景
- 需要调试程序时,用
gdb
调试器。 - 编译时必须加入
-g
选项。
例子
gcc test.c -o test -g gdb ./test
✅ 总结:
-
单文件快速编译:
gcc a.c -o a.out
-
多文件编译:
gcc main.c add.c -o app
-
分步编译:先
gcc -c
再gcc ... -o
-
链接库:
gcc prog.c -o prog -lm
-
调试用:
gcc prog.c -o prog -g