diff --git a/senior/1.基础知识与编程环境.md b/senior/1.基础知识与编程环境.md index 8cb3c5e..b413495 100644 --- a/senior/1.基础知识与编程环境.md +++ b/senior/1.基础知识与编程环境.md @@ -9,32 +9,53 @@ 7. **rm 删除文件 -r 递归删除 -f 强行删除** 8. chmod 更改文件权限 9. chown 更改文件所有者 -10. g++ gcc 编译命令 - 1. **g++ [source file 1 .....] -o [output file] [-O1,-O2,-O3,-Ofast] [-I/path/to/include/dir] [-L/path/to/libdir] [-l/path/to/lib] 基本编译** - 2. **gcc 与g++没有本质不同,只是gcc没有链接c++标准库** - 3. g++ -E [source file1...] -o [output file] 生成经过预处理器的文本文件 - 4. g++ -S [sourcefile1...] -o [output file] 生成经过汇编编码的汇编文件 - 5. g++ -c [source file1...] -o [output file] 生成没有链接的二进制文件 -11. 在linux终端运行程序只需要输入程序的相对路径或者绝对路径,如果出现权限错误,请给可执行文件chmod +x /path/to/exe,给他可执行权限 -12. 测试程序运行时间time /path/to/exe, +# Linux 系统下常见文本编辑工具的使用(vi/vim) +1. 键位图,了解即可 +![1729571347750](image/1.基础知识与编程环境/1729571347750.png) +2. 常用操作方式 + 1. 基本上 vi/vim 共分为三种模式,命令模式(Command Mode)、输入模式(Insert Mode)和命令行模式(Command-Line Mode) + 2. 用户刚刚启动 vi/vim,便进入了命令模式。此状态下敲击键盘动作会被 Vim 识别为命令,而非输入字符,比如我们此时按下 i,并不会输入一个字符,i 被当作了一个命令。 + 3. 在命令模式下按下 i 就进入了输入模式,使用 Esc 键可以返回到普通模式 +3. 命令行模式命令 + 1. 'i' 切换到输入模式,在光标当前位置开始输入文本。 + 2. ':wq' 保存并推出 + 3. ':q' 退出 + 4. ':w' 只保存 + 5. '结尾!' 在前几个命令后面添加'!'有强制执行的意味,可以修改只读文件 +4. 其它深度学习vi/vim可以找其他资料 - ``` - time ls - program public_html repo rocscm +# g++、gcc 等编译器与相关编译选项 - real 0m0.002s - user 0m0.002s - sys 0m0.000s - ``` - 1. real 外部能观测到的总时间 - 2. user 程序在用户态实际执行的时间(除了系统调用和内核线程切换) - 3. sys 系统态时间,程序在I/O交互或者硬件调用的时间 -13. GDB 工具的使用 - 1. gdb /path/to/exe 调试可执行文件,注意编译时要使用-g编译添加调试符号性息,优化最高开到-O2 - 2. 进入gdb页面后使用b <行号,函数名>,添加断点 - 3. r 开始运行 - 4. c 继续运行 - 5. s 逐步运行 - 6. n 到下一步,不会进入下一级函数 - 7. quit 退出 +1. **g++ [source file 1 .....] -o [output file] [-O1,-O2,-O3,-Ofast] [-I/path/to/include/dir] [-L/path/to/libdir] [-l libname] 基本编译** +2. **gcc 与g++没有本质不同,只是gcc没有链接c++标准库** +3. g++ -E [source file1...] -o [output file] 生成经过预处理器的文本文件 +4. g++ -S [sourcefile1...] -o [output file] 生成经过汇编编码的汇编文件 +5. g++ -c [source file1...] -o [output file] 生成没有链接的二进制文件 + +# 在Linux 系统终端中运行程序,使用time 命令查看程序用时 + +1. 在linux终端运行程序只需要输入程序的相对路径或者绝对路径,如果出现权限错误,请给可执行文件chmod +x /path/to/exe,给他可执行权限 +2. 测试程序运行时间time /path/to/exe, + ``` + time ls + program public_html repo rocscm + + real 0m0.002s + user 0m0.002s + sys 0m0.000s + ``` + + 1. real 外部能观测到的总时间 + 2. user 程序在用户态实际执行的时间(除了系统调用和内核线程切换) + 3. sys 系统态时间,程序在I/O交互或者硬件调用的时间 + +# 调试工具GDB 的使用 + +1. gdb /path/to/exe 调试可执行文件,注意编译时要使用-g编译添加调试符号性息,优化最高开到-O2 +2. 进入gdb页面后使用b <行号,函数名>,添加断点 +3. r 开始运行 +4. c 继续运行 +5. s 逐步运行 +6. n 到下一步,不会进入下一级函数 +7. quit 退出 diff --git a/senior/image/1.基础知识与编程环境/1729571347750.png b/senior/image/1.基础知识与编程环境/1729571347750.png new file mode 100644 index 0000000..7caed81 Binary files /dev/null and b/senior/image/1.基础知识与编程环境/1729571347750.png differ