zoukankan      html  css  js  c++  java
  • linux下c编程 基础

    1. 熟悉Linux系统下的开发环境

    2. 熟悉vi的基本操作

    3. 熟悉gcc编译器的基本原理

    4. 熟练使用gcc编译器的常用选项

    5 .熟练使用gdb调试技术

    6. 熟悉makefile基本原理及语法规范

    7. 掌握静态库和动态库的生成

    一:Vim

    1.使用vim命令进入vim界面   

    $ vim practice_1.txt  或    $ vim

    2.游标移动

    按键说明
    h
    l 右(小写L)
    j
    k
    w 移动到下一个单词
    b 移动到上一个单词

    3.进入插入模式

    命令说明
    i 在当前光标处进行编辑
    I 在行首插入
    A 在行末插入
    a 在光标后插入编辑
    o 在当前行后插入一个新行
    O 在当前行前插入一个新行
    cw 替换从光标所在位置后到一个单词结尾的字符

    4.命令行模式下保存文档

    从普通模式输入:进入命令行模式,输入w回车,保存文档。输入:w 文件名可以将文档另存为其他文件名或存到其它路径下

    5.退出vim

    1.命令行模式下退出vim

    从普通模式输入:进入命令行模式,输入wq回车,保存并退出编辑

    以下为其它几种退出方式:

    命令说明
    :q! 强制退出,不保存
    :q 退出
    :wq! 强制保存并退出
    :w <文件路径> 另存为
    :saveas 文件路径 另存为
    :x 保存并退出
    :wq 保存并退出

    2.普通模式下退出vim

    普通模式下输入Shift+zz即可保存退出vim

    练习截图:

    一:

     二:使用vim 输入以下代码,联系使用“K”查找帮助文档:

     

    自己对于K的用法还是很不熟悉。

    三:练习gcc编译运行代码

    gcc分为4个步骤:
              预处理:

                      gcc -E hello.c -o hello.i

              编译:

                     gcc -S hello.i -o hello.s

              汇编:

                     gcc -c  hello.s -o hello.o

              链接:

                    一:静态链接

                                  ar rcsv lipow.a unsgn_pow.o

                                  gcc -o pow_test.c -L.-lpow

                                  ./pow_test 2 10

                    二:动态链接

                                   gcc -fPIC -Wall -c unsgn_pow.c

                                    gcc -shared -o libpow.so unsgn_pow.o

                                    gcc -o pow_test pow_test.c -L. -lpow

    经过反复的查找自己的错误,不断地改正,终于用gcc成功编译

     四:练习gdb调试代码 

    程序员有几个键提示一下:

    • 大写“K”可以用来查找函数的帮助信息:查看 man page,命令模式下,将光标放在函数名上,按"K"可以直接察看 man page。
    • 几个设置

    :set nu 显示行号

    :set ai 自动缩行

    :set ts=4 设置一个 TAB 键等于几个空格

    • 移动光标

    [[ 转到上一个位于第一列的"{"

    ]] 转到下一个位于第一列的"{"

    { 转到上一个空行

    } 转到下一个空行

    gd 转到当前光标所指的局部变量的定义

    深入学习参考:

    GCC编译代码的过程如下:

    gcc1

    我们可以把编译过程分成四步,以编译hello.c生成可执行文件hello为例,如下图:

    gcc2

    • 预处理:gcc –E hello.c –o hello.i;gcc –E调用cpp
    • 编  译:gcc –S hello.i –o hello.s;gcc –S调用ccl
    • 汇  编:gcc –c hello.s –o hello.o;gcc -c 调用as
    • 链  接:gcc hello.o –o hello     ;gcc -o 调用ld

    编译过程比较难记,我们简化一下,前三步,GCC的参数连起来是“ESc”,相应输入的文件的后缀是“iso”,这样记忆起来就容易多了。

    学习GCC的另外一个重点是:参考教材《深入理解计算机系统》 7.6,7.10节,学习静态库,动态库的制作。

    4. gdb

    建议使用CGDB,比GDB好用,熟悉VC的调试方式,可以使用DDD。 注意使用GCC编译时要加“-g”参数。 参考gdb参考卡GDB最基本的命令有:

    • gdb programm(启动GDB)
    • b 设断点(要会设4种断点:行断点、函数断点、条件断点、临时断点)
    • run 开始运行程序
    • bt 打印函数调用堆栈
    • p 查看变量值
    • c 从当前断点继续运行到下一个断点
    • n 单步运行
    • s 单步运行
    • quit 退出GDB

    问题:GDB的n(next)命令让GDB执行下一行,然后暂停。 s(step)命令的作用与此类似,只是在函数调用时step命令会进入函数,那么实际使用中应该优先选用哪个?为什么?

    其他几个我认为应该掌握的调试命令有:

    • display 跟踪变量值的改变
    • until 跳出循环
    • finish 跳出函数
    • help 帮助

    学习参考:

    5. make与makefile

    Linux下C语言编程基础

    1.练习vimtutuor至少一遍;

    2.使用vim 输入以下代码,联系使用“K”查找帮助文档: 练习

    3.练习gcc编译运行代码;

    4.练习gdb调试代码;

    5.把上述代码中除了main函数外的代码制作成一个静态库math.a和一个共享库math.so;

    6.编写makefile,让代码编译,上述静态库和共享库的使用自动化。

      

  • 相关阅读:
    数组
    做了个进制转换图
    类的练习
    3.10l练习
    c#学习第二课
    c#第四课习题
    c#学习第三课
    学习PHP&MYSQL之——字符编码篇(一)
    中缀表达式转换成后缀表达式
    模板方法模式(Template Pattern)
  • 原文地址:https://www.cnblogs.com/klb561/p/9021961.html
Copyright © 2011-2022 走看看