查看CPU信息 cat /proc/cpuinfo
Linux命令解析器
查看命令解析器 ls /bin/*sh
Bash解析器常用快捷键
Tab | 补齐命令、路径 |
ctrl+l | 清屏 |
ctrl+c | 中断进程 |
ctrl+p | 遍历输入的历史命令(向前) |
ctrl+n | 遍历输入的历史命令(向后) |
ctrl+b | 光标左移 |
ctrl+f | 光标右移 |
ctrl+a | 光标移动到头 |
ctrl+e | 光标移动到尾 |
ctrl+h | 删除光标前面的字符 |
ctrl+d | 删除光标后面的字符 |
ctrl+u | 删除光标前面的所有字符 |
ctrl+k | 删除光标前面的所有字符 |
内建命令:解析器自带的命令,执行效率更高
外部命令:安装外部软件所带的命令
查看命令类型:type -a 命令
Linux命令格式
command [ -option] [parameter1]...
pwd | 打印当前工作目录 |
cd | 切换到当前用户的主目录 |
cd ~ | 切换到当前用户的主目录 |
cd .. | 切换到上一级目录 |
cd 路径 | 切换到指定路径 |
mkdir 名字 | 创建目录 |
rmdir 名字 | 删除目录 |
文件类型
ls | 查看当前目录里的有什么文件、目录 |
ls -l | 查看当前目录里的文件、目录的详细信息 |
ls *后缀 | 查看当前目录里,指定后缀的文件 |
touch 文件名 | 文件不存在创建新文件,文件存在更新文件时间 |
cp 文件名 路径 | 将文件拷贝到指定路径下 |
cp -r 目录 路径 | 将目录拷贝到指定路径下 |
rm 文件名 | 删除文件 |
rm -r 目录 | 删除目录 |
mv 文件名 新文件名 | 文件重命名 |
mv 文件 路径 | 将文件剪切到指定路径下 |
cat 路径 | 查看文件内容 |
find 路径 -name 文件 | 指定路径下查找文件 |
vim
命令模式
shift z z | 保存退出 |
yy | 复制 |
p | 粘贴 |
x | 删除 |
D | 删除到行尾 |
. | 执行上次操作 |
u | 撤销 |
ctrl+r | 反撤销 |
/字符串 | 向下查找字符串 |
?字符串 | 向上查找字符串 |
末行模式
:wq | 保存退出 |
:q! | 退出不保存 |
:w 文件名 | 保存到指定文件 |
:s/a/b/ | 光标所在行第一个a换成b |
:s/a/b/g | 光标所在行所有a换成b |
:%s/a/b/g | 所有a换成b |
GCC
gcc -E test.c -o test.i
gcc -S test.i -o test.s
gcc -c test.s -o test.o
gcc test.c -o test 不加-o默认生成a.out
./test
静态连接
链接器在链接时将库的内容加入到可执行程序中。
优点:对运行环境的依赖小,具有好的兼容性。
缺点:生成的程比较大,需要更多的系统资源,在装入内存时会消耗更多的时间。
库函数有了更新,必须重新编译应用程序。
静态库的制作(libxxx.a)
将源文件生成对应.o文件 | gcc -c add.c -o add.o gcc -c sub.c -o sub.o |
使用打包工具ar将准备好的.o文件打包成.a文件libxxx.a | ar -rcs libxxx.a add.o sub.o |
静态库的使用
gcc test.c -L./ -I./ -ltest -o test
动态连接
链接器在链接时仅仅建立与所需库函数之间的连接关系,在程序运行时才将所需资源调入到可执行程序中。
优点:在需要的时候才会调入对应的资源函数。
简化程序的升级。有着较小的程序体积。
实现进程之间的资源共享(避免重复拷贝)
缺点:依赖动态库,不能独立运行。
动态库依赖版本问题严重。
动态库的制作(libxxx.so)
创建与地址无关的编译程序 | gcc -fPIC -c add.c gcc -fPIC -c sub.c |
生成共享库 | gcc -shared add.o sub.o libxxx.so |
nm查看对应的函数 | nm libxxx.so | grep add |
动态库使用
gcc test.c -L. -I. -ltest
临时设置LD_LIBRARY_PATH(不写详细的了)
GDB
启动gdb a.out
gcc -g test.c
设置args 和argv
set args show args
启动程序 run start
quit 退出
显示源代码
list
list 函数名
set listsize 20
断点操作
b 10 设置断点
b 函数名
info b 查询断点
d 删除所有断点
disable 7 禁用断点
enable 7 启用断点