学习A8前的预备知识

1.关于APT
1,software center --> software sources --> Download from,选择合适的服务站点
2,执行sudo apt-get update,下载远端服务器的软件列表
3,在联网的情况下,就可以下载安装软件,比如:
   sudo apt-get install vim
4,卸载软件:
   sudo apt-get remove ssh          ==> 保留配置文件
   sudo apt-get remove ssh --purge  ==> 不保留配置文件,纯粹地删除!
5,手工安装:
   sudo dpkg -i xxx.deb
 
注:
   所有的软件安装包统一放置在:/var/cache/apt/archives,它们会被定期清除。
 
2.1
硬链接文件 == 文件的引用 == 文件别名
古老的一种文件,已经被遗弃。
 缺陷:不能给目录取别名,不能跨分区。
 
2.2  
软连接文件 == windows快捷方式
 
2.3  关于根文件系统:
/
├── bin/    ==>  二进制文件(命令、可执行程序)
├── boot/   ==>  内核镜像文件所在地
├── cdrom
├── dev/    ==>  所有设备(除了网络接口之外)的节点文件
├── etc/    ==>  等等…… 几乎所有的软件/服务的配置文件
├── home/   ==>  所有普通用户的家目录的所在地
├── lib/    ==>  系统库文件所在路径
├── lost+found
├── media
├── mnt/    ==>  空目录,专门用来给用户挂载分区的
├── opt
├── proc/   ==>  将系统的关键信息以proc文件系统方式呈现给用户
├── root/   ==>  管理员的家目录
├── run
├── sbin/   ==>  需要管理员权限运行的命令
├── selinux
├── srv
├── sys
├── tmp
├── usr/    ==>  第三方软件 / 库的安装路径
├── var/    ==>  容易变化的文件的所在地
 
/usr/
├── bin/
├── games
├── include
├── lib/
├── local/
├── sbin/
├── sdl
├── share
└── src
 
2.4  关于SHELL的通配符
1,星号 *  : 代表任意长度的任意字符
2,问号 ?  : 代表一个任意字符
3,方括号[]: 代表一个范围指定的字符
4,方括号[^]:代表一个范围指定之外的字符
 
2.5.
UNIX/LINUX的审美观:以小为美
关于管道
1,将第一个命令的输出作为第二个命令的输入:ls /dev | wc -w
2,将第一个命令的输出作为第二个命令的参数:find . -name "*.txt" | xargs grep "apple" -Hrnw
 
 
 
3. 环境变量的设置
将所要添加的命令加进
家目录~下面   ls  -a 的  .bashrc 里 ( vi  .bashrc)
在最后面加下面的语句
export   PATH = $PATH: /home/gec  
($PATH为包括已存在目录, /home/gec为所要添加文件所在目录)
之后保存退出,关掉终端重新打开终端
 
4.关于gdb
1,编译的时候,要加上-g : gcc debugme.c -o debugme -g
2,使用gdb来启动待调试代码:
   gdb ./debugme
 
3,列出待调试代码:
   l
   list
   l 10
   l 1,30
 
4,设置断点:
   b 10  (在程序的第10行,设置一个断点)
   b 20 if i>= 5 (在程序的第20行,设置一个断点,并且只有当i>=5时才停下来)
   info b (查看所设置的断点的信息)
   delete N  (删除第N号断点)
   disable N (禁用第N号断点)
   enable N  (启用第N号断点)
 
5,启动待调试代码:
   run
   r
   r abcd 1234
 
6,查看相关的变量、栈的信息:
   print i
   p i
   display i
   backtrace full (查看当前进程的栈的信息)
   bt full
   whatis i (查看变量i的类型)
 
7,单步调试
   next (单步运行:将函数调用看作一步)
   n
   n 10
 
   step (单步运行:会进入函数调用)
   s
   s 10
 
8,继续运行代码:
   continue (让进程持续运行,直到遇到断点,或者进程退出为止)
   c
 
9,退出gdb:
   quit
 
最常见的错误:非法内存访问(段错误 / segmentation fault)
该种错误的调试步骤:
============================
1,编译: gcc debugme.c -o debugme -g
2,取消系统对core文件大小的限制:
   ulimit -c unlimited
3,让有段错误的代码去死,产生一个core文件
   ./debugme
4,让gdb帮我们看看在哪里出错:
   gdb ./debugme core
 
注:
   gdb不一定100%地能找到错误的地方,如果找不到,还是要自己一步一步地找。我们要根源上写代码的时候就要避免出现此类错误,预防大于治疗。
 
5.关于vi编辑器
1,进入命令模式 : 按Esc
  1.1 复制 / 剪切
      yy  /  dd   一行
      Nyy / Ndd   N行
      yw  /  dw   一个单词
      Nyw / Ndw   N个单词
      y$  /  d$   到行尾
      y^  /  d^   到行首
  1.2 粘贴
      p
  1.3 保存 / 另存为
      :w   / :w file
  1.4 退出 / 不保存退出
      :q  / :q! 
  1.5 撤销 : u
  1.6 恢复 : ctrl + r
  1.7 查找
      /string  ==> 查找string  按n跳到下一个
  1.8 替换
      :%s/oldstring/newstring      ==> 将整个文件中所有的oldstring全部替换成newstring
      :10,20s/oldstring/newstring  ==> 将从第10行到第20行中所有的oldstring全部替换成newstring
  1.9 交换
      先剪切一个字符,命令是x
      再粘贴到后面去,命令是p
      加起来就是xp连着用
  1.10 定位
      gg    ==> 直接跳到开头
      G     ==> 直接跳到结尾
      :100  ==> 跳到第100行
     1.11
      :x          退出  
      :x!         退出不保存
      :w          保存文件
      :w!         不询问方式写入文件  
      :r file     读文件file
      :%s/oldchars/newchars/g    将所有字符串oldchars换成newchars
2,进入编辑模式:按i o a I O A
 
6.关于编译器gcc
1,一步到位的编译:gcc example.c -o example
2,分步进行:
   2.1 预处理
   gcc example.c -o example.i -E  ==> 展开所有的预处理指令,比如#include #define等等
   注:分析复杂宏的时候可能会用到。
   2.2 编译
   gcc example.i -o example.s -S  ==> 将C语言翻译为相应的汇编语言
   注:分析你的程序的每一条机器指令。(objdump)
   2.3 汇编 
   gcc example.s -o example.o -c  ==> 将汇编翻译为机器指令流
   注:当你需要将你的代码制作成库。
   2.4 链接
   gcc example.o -o example (-lc) ==> 链接必要的库(默认的库是标准C库)
   注:生成可执行文件

posted on 2017-02-23 22:21  别人都叫我陈科  阅读(226)  评论(0)    收藏  举报

导航