vim命令以及gcc编译器的常用cmd

摘要:
在“批处理模式”下运行时,将执行命令文件中的所有命令。当成功执行所有命令时,gdb返回状态0。如果在执行过程中发生错误,gdb将返回非零值。Linux主函数的标准格式:intmainargc表示命令行参数的数量,argv指向每个命令行参数主函数的参数
Gcc常用命令:    
    -c    仅对源文件进行编译,不链接生成可执行文件。常用于查错和只生成目标文件。
    -o    经过gcc处理过后的结果保存在-o后面的文件中,可以是多种文件。如无参数,默认名称不同
    -v    查看版本信息
    -g    在可执行文件中加入调试信息,相当于Windows下的Debug版本。方便使用gdb进行调试
    -O    对代码进行优化,默认即可,与-g不一起使用
    -I, -U, -l, -static, -shared
    gcc扩展名: .c        c源程序
            .C,.cc, .cpp, .cp, .c++, .cxx      C++源程序
            .i        预处理后的C语言源程序
            .ii        预处理后的c++语言源程序
            .s        预处理后的汇编程序
            .S        未预处理的汇编程序
            .h        头文件
            .o        编译后的目标文件,传送给ld
            .a        目标文件库,传送给ld
vim三种模式:命令行模式, 底行模式, 插入模式
命令行模式:
    移动光标:h, l, j, k 分别是左,下,上,右
         $移动到行未, 0移动到行首
         G最后一行的开头,nG第n行的开头
         w向后移一个字, nw向后移n个字
         b向前移一个字, nb向前移n个字
         e移动到单词最后一个字符
         {,} 移动到前面和后面的大括号处
         Ctrl+b 上翻一页  Ctrl+f  下翻一页
         Ctrl+e 下翻一行  Ctrl+y  上翻一行
    复制粘贴:yy 复制当前行    nyy  n行
         yw 复制当前单词 nyw  n个单词
         p  粘贴
    删   除:x  删除当前字符   X删除前一个字符
        nx  删除后面n-1个字符  nX删除前面n-1个字符
        dw  删除当前单词   dd删除当前行
        ndw 删除之后n-1个单词  ndd 删除之后n-1行
        d0  删除之前所有  d$  删除之后所有
        nd+上  删除之前n行  nd+下 删除之后n行
    其他命令:r 替换当前字符  R替换光标所到之处的字符
         u 撤销上一操作  U 取消对当前行做的改变
         . 重复执行上个命令  ZZ 保存文档,退出vim
         % 符号匹配功能,用法:%( 匹配到)
插入模式:
    i:从当前位置插入新字符        I:当前行首插入新的输入字符
    a:从当前位置下一个字符插入新字符   A:从当前行尾插入新字符
    o:新建一行开始插入字符        O:在上面新建一行,并开始插入字符
底行模式:
    q:退出vim,保存文件    q!:退出vim不保存文件
    x:保存文件,退出vim    x!:强制保存文件,并退出vim
    w:保存文件,不退出vim    w!:对只读文件,强制保存修改的内容,不退出vim
    wq:同x            E  :创建新文件,可命名
    N:在当前窗口打开新文件    w filename:另存文件,不退出vim
    w! filename:强制另存文件,不退出vim
    set nu:显示行号
    s/pattern1/pattern2/g:将光标当前行的字符传pattern1替换为pattern2
    %s/pattern1/pattern2/g:将所有行的pattern1替换为pattern2
    g/pattern1/s//parttern2:同上
    num1,num2 s/pattern1/pattern2/g:将num1到num2行的字符串pattern1替换为pattern2串
    / 字符串:查找匹配的字符串,n向后查找,N向前查找
    ?字符串:向前查找匹配的字符串
linux下的调试器gdb
    file:装入想要调试的可执行文件
    kill:终止正在调试的程序
    list:列出产生执行文件的源代码的一部分
    next:执行一段源代码,但不进入函数内部
    step:执行一段源代码,并进入函数内部
    run:执行当前被调试的程序
    quit:退出gdb
    watch:动态监视一个变量的值
    make:不退出gdb而重新监视一个变量的值
    call name(args):调用并执行名为name,参数为args的函数
    return value:停止执行当前函数,并将value返回给调用者
    break:在代码里设置断点,使程序执行到这里被挂起
gdb调用:
    gdb <可执行程序名>
    gdb <可执行文件名> core
    gdb <可执行文件名> <进程号>
gdb常用的参数选项:
    -s filename:从指定的文件中读取要调试的程序的符号集
    -e filename:在合适的时候执行指定文件,并通过和core文件比较检查正确数据
    -se filename:从filename中读取符号表,并作为可执行文件进行调试
    -c filename:把filename指定文件作为一个core文件
    -c num:把数字num作为进程号和调试的程序进行关联,与attach相似
    -command filename:按照filename文件中的命令执行gdb命令,filename文件行当与一个批处理文件
    -d path:指定源文件的路径。把path加入到搜索源文件的路径中
    -r:从符号文件中一次读取整个符号表。而不是默认方式首先调入一部分。可以加快之后的调试速度。
gdb运行模式选择:
    批模式,安静模式。通过选项来指定的。
    选项:
    -n:不执行任何初始化文件中的命令(一级初始化文件名为.gdbinit)。一般情况下,这些文件中的命令都会在所有的命令行参数都被传给gdb后执行
    -q:设定gdb的运行模式为“安静模式”,可以不输出介绍和版权信息,这些信息在“批模式”中也不会显示
    -batch:批模式。在“批模式”下运行时,会执行命令文件中的所有命令,当所有的命令都被成功的执行后,gdb返回状态0,如果在执行过程中出错,gdb返回一个非0值。
    -cd dir:把dir作为gdb的工作目录,而非当前目录(gdb一般把当前目录作为工作目录)。
linux编程进阶
    linux如何执行一个程序?
    由内核加载放在磁盘上的可执行文件,然后调用exec函数执行程序,执行完成之后调用Exit函数返回。
Linux的存储空间:
    由低地址到高地址:  正文(机器指令)-->初始化数据-->未初始化数据-->堆(向上生长)-->栈(向下生长)    还有其他的一些段,但是这些段不会在进程调用的时候被装入存储去中去。
    正文段通常从0x0804800开始,栈底则位于0xC0000000之下。
Linux的main函数
    标准格式: int main(int argc, char *argv[])
        argc表示命令行参数的个数,argv则指向各个命令行参数
    main函数的参数可以省略在应用过程中的参数输入读取步骤。    如果不需要传递参数,可以直接写为int main(void)

Linux的出错处理
    errno在程序出错时被返回,其值含有附加信息。
    errno.h中定义了常用的错误常量。errno的定义:extern int errno;
    如果没有出错,errno不会被清除,故可以等出错再去检查errno确定出错原因;任何一个函数都不会给errno赋0值。
    Linux使用strerror和perror函数来输出相应的出错信息。
    #include <string.h>
    char *strerror(int errnum);//返回值是一个指向消息字符串的指针,该字符串就是出错信息
    #include <stdio.h>
    void perror(const char *msg);//没有返回值,输出如下:"由msg指针指向的字符串"+":"+" "+"回车换行"
    printf()和scanf()函数,标准输入输出,是C和用户进行通信的两个函数。
Linux C的内存分配
    malloc函数:给进程分配指定字节数的存储区,此存储区的初始值不为0
    calloc函数:为指定个数的具有指定长度的对象分配存储空间,该空间中每一位都被初始化为0
    realloc函数:更改先前分配区的长度。当增加长度时,可能需要将以前分配区的内容迁移到另外一个足够大的区域,然后在尾部增加存储区,而新增加的存储区的初始化值不确定。
    free函数:用于释放其参数指针指向的存储空间,这些存储空间会被送到存储器的可用存储区池内。
    #include <stdlib.h>
    void *malloc(size_t size);
    void *calloc(size_t nobj, size_t size);
    void *realloc(void *ptr, size_t newsize);
    void free(void *ptr);
    上面3个内存分配函数是通过sbrk函数调用来实现的,标准格式为:
    #include <unistd.h>
    int sbrk(void *addr);
    void *sbrk(intptr_t increment);
    使用完内存空间之后必须立即释放,否则可能导致内存泄漏。
   

免责声明:文章转载自《vim命令以及gcc编译器的常用cmd》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇tp3.2单函数总结利用百度地图Android sdk高仿微信发送位置功能下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

linux命令统计文件中某个字符串出现的次数

1、使用grep linux grep命令在我的随笔linux分类里有过简单的介绍,这里就只简单的介绍下使用grep命令统计某个文件这某个字符串出现的次数,首先介绍grep命令的几个参数,详细参数请自行找资料学习。 -a 或 --text: 不要忽略二进制的数据。 -A<显示行数> 或 --after-context=<显示行数>...

Linux Shell常用技巧(十二)

二十三. Bash Shell编程:    1.  读取用户变量:    read命令是用于从终端或者文件中读取输入的内建命令,read命令读取整行输入,每行末尾的换行符不被读入。在read命令后面,如果没有指定变量名,读取的数据将被自动赋值给特定的变量REPLY。下面的列表给出了read命令的常用方式: 命令格式 描述 read answer 从...

CentOS-7 yum安装出现/var/run/yum.pid 已被锁定,解决办法

才安装的CentOS7,本想安装gcc、gcc+,结果出现下面错误 [root@bogon ~]# yum install -y gcc gcc+已加载插件:fastestmirror, langpacks/var/run/yum.pid 已被锁定,PID 为 11154 的另一个程序正在运行。Another app is currently holdin...

GDB调试汇编堆栈过程分析

GDB调试汇编堆栈 准备工作 · 终端编译工具: ·         编译64位Linux版本32位的二进制文件,需要安装一个库,使用指令sudo apt-get install libc6-dev-i386 分析过程 ·         1.生成汇编代码:gcc -g test.c -o test -m32 ·         2.调试:gdb test...

01炼数成金TensorFlow基本概念

一、Tensorflow基本概念   1、使用图(graphs)来表示计算任务,用于搭建神经网络的计算过程,但其只搭建网络,不计算   2、在被称之为会话(Session)的上下文(context)中执行图   3、使用张量(tensor)表示数据,用“阶”表示张量的维度。关于这一点需要展开一下              0阶张量称为标量,表示单独的一个数...

C++星号的含义

[转载] [http://blog.sina.com.cn/s/blog_4a50d85b0100uk3c.html]   1、乘法运算符   2、定义指针 int *p = 0; 还是 int* p = 0;? 后一种比较容易这样理解:定义了一个变量p,它是指针型的(更详细一点,是指向int的指针型),相比而言,前面一种定义似乎是定义了*P这个奇...