菜鸟学习历程【2】vim的简单操作、GCC工具链、make和Makefile、GDB调试工具、Shell使用基础
来源:互联网 发布:交通安全事故数据 编辑:程序博客网 时间:2024/05/21 09:26
vim的简单操作
在终端界面,输入$ vim hello.c,在没有hello.c文件时,创建;若存在,则是打开hello.c文件一、基本模式命令行模式、插入模式、底行模式进入vim后,处于命令行模式;当需要编辑时,按下键盘上的“i”键,进入插入模式;编辑完成后,输入“:”进入底行模式,该模式下可对编辑内容进行存盘、退出、查找、替换等功能。常用命令如下::wq ——存盘并退出 (使用快捷键shift+z+z也可实现):w filename ——将文章以指定的文件名filename保存:q! ——不存盘直接退出:num(Enter) ——输入行号num,按下回车(Enter),跳转到num行:set nu ——显示行号:set nonu ——不显示行号查找、替换::/关键字 ——按“n”实现后向寻找:?关键字 ——按“n”实现前向寻找:%s/old/new/g ——替换全文的old为new删除与复制:在命令行状态下,实现删除与复制的操作。“x” ——每按一次,删除光标所在位置的“后面”一个字符“#x” ——删除光标所在位置的“后面”#个字符“X” ——每按一次,删除光标所在位置的“前面”一个字符“#X” ——删除光标所在位置的“前面”#个字符“dd” ——删除光标所在行“#dd” ——删除光标开始的#行“yw” ——将光标所在之处到字尾的字符复制到缓冲区“#yw” ——复制#个字到缓冲区“yy” ——复制光标所在行到缓冲区“#yy” ——复制光标所在行开始的#行到缓冲区“p” ——将缓冲区的字符粘贴到光标所在位置Tips:在命令行状态下,“shift+G”跳转到当前文档最后一行,“GG”跳转到当前文档第一行GCC工具链编译的四个过程(敲黑板,很重要):预处理(Pre-Processing)编译(Compiling)汇编(Assembling)链接(LinKing)下面对这四个过程一一讲解:(以test.c为例)1.预处理:通俗的来说,把头文件的内容加载到test.c中命令:gcc -E test.c -o test.i2.编译:语法检查,转换为汇编语言命令:gcc -S test.i -o test.s3.汇编:将汇编语言转换为二进制文件(机器语言)命令:gcc -c test.s -o test.o4.链接:将所有的目标文件和所需的库文件链接在一起命令:gcc test.o -o testmake和MakefileMakefile 告诉make命令怎样去编译和链接程序,Makefile针对大型项目来说,有很多便利,无须对所有c文件一一编译。这里先说明一下,依赖文件和目标文件的意义。例如:gcctest.o-otest“test.o”就被称为依赖文件,原因是生成的目标文件是由test.o这个文件产生的,那么目标文件就很好理解了,对于上面的例子“test”就是目标文件。一个Makefile文件包含以下五个内容:具体规则、隐含规则、定义变量、指令、注释。下面结合实例进行说明:首先,创建一个hello.c文件#include <stdio.h>void print(char *s);int main(){ printf("hello world\n"); return 0;}其次,再创建一个print.c文件#include <stdio.h>void print(char *s){ printf("%s",s);}最后,编写一个Makefile文件,声明hello.c文件与print.c文件的逻辑关系target = helloobject = hello.o print.occ = gcc$(target):$(object)(Tab)$(cc) $(object) -o $(target).PHONY cleanclean:(Tab)rm *.o $(target)说明:“.PHONY clean”表示clean是一个伪目标而不是真正的目标文件,这样就不会和真正的目标混淆。clean的作用是,删除执行过make后产生的.o文件和目标文件,以便执行下一次的make命令。Tips: 1.如果在其他目录,也想执行Makefile 文件,则 make -C [Makefile文件的绝对路径]2.倘若对Makefile这个名字不喜欢,想要修改,则 mv Makefile xxx,但修改过后在执行make和clean 操作时,需要对执行命令进行修改:make -f xxx == makemake -f xxx clean == make clean因此,不建议修改名字,最好使用Makefile。GDB调试工具首先对需要调试的c文件,编译时,添加“-g”的命令,例如:gcc -g test.c -o test$ gdb test 启动调试调试的命令及功能如下:命令简写功能listl显示源码breakb设置断点runr运行continuec继续运行printp 打印变量值 nextn执行下一条语句,将函数当做是一条语句 steps执行下一条语句,遇到函数会进入函数内部,执行函数体内的语句,与next不同quitq结束调试,退出gdb补充说明:设置断点:在gdb界面,b [行号] 对选取行设置断点b [main] 对main函数设置断点由于main函数是整个程序的入口,所以在main函数部分设置的断点会优先于其他非main函数部分的断点!!!Shell使用基础Shell是一个脚本,是命令解析器,将用户输入的指令转化为机器可以运行的程序。一般使用shell的步骤如下:1.创建一个sh文件,例如:test.sh2.编写内容(注意,注释用#,而不是c语言的//)3.修改权限,chmod 777 test.sh4.运行 ./test.sh格式:#!/bin/bash "#!"告诉系统其后路径所确定的程序即是解释此脚本文件的shell程序。#commentsYour comments go here补充echo的用法:echo "hello world" ——直接在终端显示hello worldecho "hello world">xxx ——将“hello world”覆盖到文件“xxx”内,若不存在xxx文件,则创建一个echo "hello world">>xxx ——将“hello world”写入到文件“xxx”内,若不存在xxx文件,则创建一个举例说明脚本的使用:test.sh#!/bin/basha="hello world!"echo ${a} ——终端显示hello world!echo $0 ——终端显示自身echo $1 ——终端显示第一个参数echo $2 ——终端显示第二个参数echo $3 ——终端显示第三个参数echo $* ——终端显示所有参数echo $# ——终端显示参数个运行 ./test.sh apple samsung xiaomi终端显示hello world!./test.shapplesamsungxiaomiapple samsung xiaomi3shell脚本的for循环例如:使用脚本创建3个文件夹,在每个文件夹内创建文本文件,并写入内容test.sh#!/bin/bashfor dir in $1 $2 $3do mkdir ${dir} cd ${dir} touch ${dir}.txt echo "hello ${dir}">${dir}.txt cd ..done
运行 ./test.sh aa bb ccshell的函数调用:test.sh#!/bin/bashhello="hello world!"func1(){ echo "hello"}func2(){ echo "world"}func1func2echo ${hello}运行 ./test.sh结果:hellowordhello world!shell脚本的if判断语句:test.sh#!/bin/bashDIR="/home/zhou"File="/home/zhou/xxx"if [ -d ${DIR} ] ;then echo "${DIR}"fiif [ -f ${File} ] ;then echo "${File}"fi
注意:if 后的“[”“]”,中括号的前后都必须有空格,if语句结束为fi;-d 判断的是目录是否存在-f 判断的是文件是否存在shell脚本的case语句:test.sh#!/bin/bashread keycase "${key}" in [A-Z] ) echo "UpperLetter";; [a-z] ) echo "LowerLetter";; [0-9] ) echo"Number";; * ) echo "Unkown";;esac说明:脚本中的read相当于c中的scanf运行: ./test.sha显示:LowerLetter注意:如若输出与结果不一致,原因是编码的不同,修改环境变量即可: $ export LANG = C
阅读全文
0 0
- 菜鸟学习历程【2】vim的简单操作、GCC工具链、make和Makefile、GDB调试工具、Shell使用基础
- Linux学习 [2] vi编辑器 gcc工具链 make和Makefile gdb调试工具
- GCC与GDB工具和makefile基础
- 0409学习总结1(gcc工具链,gdb调试工具,make工程管理)
- gcc,make,Makefile,gdb,shell的初步学习
- Linux开发工具(gcc gdb make shell)——c的预处理、编译、汇编和链接
- Linux开发工具(gcc gdb make shell)——c的预处理、编译、汇编和链接
- linux工具使用:vi,gcc,gdb,make
- Linux 开发工具学习(gcc 、gdb和makefile)
- Linux下的常用shell命令,文本编辑器vi和C语言编译、调试工具gcc、gdb的使用心得
- vim gcc gdb make的使用
- gdb调试工具的简单使用
- 工程管理器make和调试工具gdb
- Linux开发工具(gcc,gdb,make,shell)——linux中静态库和动态库的区别(三)
- Linux开发工具(gcc gdb make shell)——动态库和静态库比较
- Linux开发工具(gcc gdb make shell)——动态库和静态库比较
- Linux开发工具(gcc,gdb,make,shell)——linux中静态库和动态库的区别(三)(2)
- (MAKE)手动建立makefile简单实例解析 - vim+gcc+gdb+make -...
- 训练Tesseract
- 梯度下降小结
- 【基础】查看程序运行所需时间--C++源代码(g++ 4.9.3)
- Scrapy 框架
- 离开快两年了。
- 菜鸟学习历程【2】vim的简单操作、GCC工具链、make和Makefile、GDB调试工具、Shell使用基础
- is not in the sudoers file
- JDK和Cglib动态代理
- 一致性哈希算法及其在分布式系统中的应用
- java笔试题50道
- Scrapy的安装介绍
- 立冬出生的宝宝取名大全测试打分准不准
- 入门案例
- 第一届嵌入式电子协会竞赛之智能家居控制系统