Vim学习

普通模式Esc 进入normal模式ctrl+c 代替Esc 但是可能中断某些插件 或者使用ctrl+[gi 回到上一次编辑的地方:+ctrl+p 上翻执行的命令:+ctrl+n 下翻执行的命令:sourec ~/.vimrc 使配置生效保存退出:w 保存:q 退出:wq 保存退出:e 重新加载:e! 重新加载不保存移动技巧h 左移j 下移k 上移l ...

Linux系统函数

Linux系统函数C库IO函数工作流程FILE*文件描述符通过文件描述符找到磁盘文件的位置文件读写位置指针文件打开之后会有一个文件指针指向文件起始位置IO缓冲区为什么会有缓冲区因为访问机械硬盘速度会很慢寻道是毫秒级的而内存读写速度是纳秒级别的所以在内存中提供缓冲区,减少磁盘访问次数什么时候把缓冲区(内存中)的数据刷到硬盘上fflush刷新缓冲区缓冲区已满正常关闭文件(fclose/return(mian函数)/exit(main函数))PCB进程控制块PCB在虚拟空间的内核区PCB进程控制块中有一个文件描述符表其实是个数组,数组大小0-1023用户可以打开的是1024-3,因为前三个默认...

Makefile的编写

Makefile的编写Makefile的命名MakefilemakefileMakefile的规则规则中的三要素:目标,依赖,命令目标:依赖条件缩进 命令Makefile学习vim makefile app:main.c add.c sub.c mul.c gcc main.c add.c sub.c mul.c -o app:wq make 2. ```makefile 第二个版本 没有改变的代码文件则不需要编译,对命令拆分,分开编译 首先去找依赖,如果在当前目录(或指定目录)找不到依赖文件,则向下查找对应依赖规则,执行命令,最后找到所有依赖,在执行生成最终目标(可执行文...

GDB调试

GDB调试编译携带调试信息的可执行程序gcc编译时加上-g参数 gcc *.c -o myapp -g 因为携带调试信息,带-g参数生成的可执行文件体积会比不带-g参数的大,发布应用的时候一般取消—g参数生成可执行程序。 进入调试 gdb 带-g参数生成的可执行文件使用gdb调试gdb调试start 只执行一步next(n) 继续执行 单步走 跳过函数step(s) 继续执行 单步走 可以进入到函数内部continue(n) 继续执行 直接停在断点位置查看代码list(l)l 行号|函数名l 文件名:行号|函数名字设置断点设置文件断点break(b)b 行号|函数...

静态库与动态库的制作与使用

静态库的制作与使用静态库的制作命名规则lib + 库的名字 + .alibmytest.a制作步骤生成对应的.o文件 --.c -->.o -c参数将生成的.o文件打包 ar工具 ar rcs 生成静态库的名字(libMytest.a) 生成的所有的.ogcc *.c -c -I ../include/ 头文件在include ar rcs libMyCalc.a *.o发布和使用静态库发布的静态库发布头文件使用静态库gcc main.c lib/libMyCalc.a -I include/ -o sum gcc main.c -I include -L lib -l...

GCC编译流程

指定头文件目录gcc xx.c -I 头文件路径 -o 生成可执行程序名指定宏gcc xx.c -o 生成可执行程序名 -D 宏名优化程序gcc xx.c -o 生成可执行程序名 -O[0-3] 分为三个等级 0代表不优化输出警告信息gcc xx.c -o 可执行程序名 -Wall添加调试信息gdbgcc xx.c -o 可执行程序名 -g

在Linux和Windows下安装Boost

Linux安装Boost# 首先删除本地原有的 boost 库 rm -f /usr/lib/libboost* rm -fr 'find / -name libboost*' # 移除boost头文件 mv /usr/include/boost /usr/include/boost-bak # 下载 wget apt-get install wget # 下载Boost库 wget https://dl.bintray.com/boostorg/release/1.71.0/source/boost_1_71_0.tar.gz tar -zxvf boost_1_71_0.tar.gz...