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的更多相关文章

  1. wamp 服务器安装问题 及cmd常用命令 和 php mysql数据库常用cmd命令集

    1   官网下载wamp软件包,根据提示安装 2   目录结构:   wamp:   bin/为套件目录 包括mysql apache php log   日志记录 alias 配置 apps 数据库 ...

  2. Linux系统GCC常用命令和GCC编译过程描述

    前言: GCC 原名为 GNU C 语言编译器(GNU C Compiler),因为它原本只能处理 C语言.GCC 很快地扩展,变得可处理 C++.后来又 扩展能够支持更多编程语言,如Fortran. ...

  3. Gcc简介与常用命令

    一.对于GUN编译器来说,程序的编译要经历预处理.编译.汇编.连接四个阶段,如下图所示: 在预处理阶段,输入的是C语言的源文件,通常为*.c.它们通常带有.h之类头文件的包含文件.这个阶段主要处理源文 ...

  4. GCC编译器原理(一)------交叉编译器制作和GCC组件及命令

    1.1 交叉编译器制作 默认安装的 GCC 编译系统所产生的代码适用于本机,即运行 GCC 的机器,但也可将 GCC 安装成能够生成其他的机器代码.安装一些必须的模块,就可产生多种目标机器代码,而且可 ...

  5. gcc编译器命令使用详解

    1.gcc包含的c/c++编译器gcc,cc,c++,g++,gcc和cc是一样的,c++和g++是一样的,(没有看太明白前面这半句是什么意思:))一般c程序就用gcc编译,c++程序就用g++编译 ...

  6. gcc编译器常用选项的含义

    -w: 关闭编译时的警告, 也就是编译后不显示任何warning,因此有时编译中会出现一些诸如数据转换之类的可忽略警告, -Wall: 显示编译后所有警告 -W: 显示警告,但是只是显示编译器认为的会 ...

  7. 整理常用的 vim 命令

    vim 是一款功能强大的文本编辑器,它是Linux下常用的编辑器之一,对于熟练掌握了 vim 的人来说,用它编辑文件,方便又快捷,能极大的提高工作效率 vim 功能强大,对应的命令也非常的多,对于初学 ...

  8. 上网八个常用cmd命令你掌握了几个?

                   上网八个常用cmd命令你掌握了几个? 一.ping 它是用来检查网络是否通畅或者网络连接速度的命令.作为一个生活在网络上的管理员或者黑客来说,ping命令是第一个必须掌握 ...

  9. 10秒钟安装 Vim编辑器,5分钟浏览常用命令 2015.10.25

    首先我想说,vim与vi的命令几乎相同,,所以学习编辑命令时很轻松,排除扩展相关,以及自动补全等配置的使用在外30秒钟安装 Vim编辑器,5分钟浏览常用命令环境:虚拟机Ubuntu:安装vim并浏览命 ...

随机推荐

  1. Ubuntu12.10下Python(pyodbc)访问SQL Server解决方案

    一.基本原理 请查看这个网址,讲得灰常详细:http://www.jeffkit.info/2010/01/476/   二.实现步骤 1.安装linux下SQL Server的驱动程序 安装Free ...

  2. 关于HDU 5952的那些事

    内容过后再贴,先发表一下心情和感悟. 这个题,我TLE了十多发,后来看了别人的题解,思路是一样的,他做了剪枝的我也做了,为何他的能过的我的超时?后来发现一个不是主要问题的问题:大家的图存储用的都是前向 ...

  3. 条件随机场(CRF)-IIS学习算法

    改进的迭代尺度法(Improved Iterative Scaling),在很多模型求解中用到,比如最大熵.CRFs等,对模型是对数线性模型的似然都适用.这个算法的思想也很简单,通俗的理解就是通过两个 ...

  4. servlet中获取配置文件中的参数.

    web.xml (添加init-param) <?xml version="1.0" encoding="UTF-8"?> <web-app ...

  5. JSP Servlet之间交换数据

    摘自:<轻量级Java EE企业应用实战>第三版 对于每次客户端请求而言,web服务器大致需要完成以下步骤: 1.启动单独线程 2.使用I/O流读取用户的请求参数 3.从请求数据中解析参数 ...

  6. oracle link的创建过程

    下面做一个测试,在测试中,创建数据库链接的库为XJ(WINDOWS 2003 ORACLE 10g 10.2.0.1),被链接的库为DMDB(LINUX AS5 ORACLE 10g 10.2.0.1 ...

  7. Pthreads 《并行程序设计导论》的补充代码

    ▶ 关于单链表的访问,插入结点和删除结点操作,并且将其推广到多线程中去. ● 代码,通用的随机数生成 // my_rand.h #ifndef _MY_RAND_H_ #define _MY_RAND ...

  8. Rhythmk 学习 Hibernate 04 - Hibernate 辅助工具 之 JBoos Tool

    1.安装JBoos Tool Help -> Install new Software 然后添加: http://download.jboss.org/jbosstools/updates/de ...

  9. ASP.NET中的几种弹出框提示基本实现方法

    我们在.NET程序的开发过程中,常常需要和用户进行信息交互,比如执行某项操作是否成功,“确定”还是“取消”,以及选择“确定”或“取消”后是否需要跳转到某个页面等,下面是本人对常用对话框使用的小结,希望 ...

  10. Delphi7 [Fatal Error] ClassPas.pas(8): File not found: 'DesignIntf.dcu'

    Delphi7 [Fatal Error] ClassPas.pas(8): File not found: 'DesignIntf.dcu' Add path to Project>Optio ...