Makefile 使用

一、make gcc 编译器 make 是 Linux 自带的构建器 二、文件命名 makefile Makefile 三、makefile 中的规则 例如:gcc a.c b.c c.c -o app 规则由三部分组成:目标、依赖、命令 app:a.c b.c c.c gcc a.c b.c c.c -o app makefile 中可以有多条规则 四、makefile 优化 版本一: app:main.c add.c sub.c gcc main.c add.c sub.c -I ./ -o app 存在的问题: 效率低,其中一个文件修改了,剩余的其它文件都要重新编译 版本二: app:main.o add.o sub.o gcc main.o add.o sub.o -I ./ -o app main....

February 19, 2022 · 1 min · Rick Cui

Linux 静态库与动态库

一、库是什么 库是二进制格式的源代码(二进制加密) 二、库的使用 头文件 制作的库文件 三、静态库的制作和使用 命名规则 libxxx.a 制作步骤 准备源代码文件 将源代码文件生成 .o 文件 gcc -c *.c 将 .o 文件打包(archive) ar rcs libxxx.a *.o 查看 lib 文件 nm libxxx.a 库的使用 gcc main.c -I./include -L ./lib -lmyCalc -o app -L: 库的路径 -l: 库的名称(去掉 lib 前缀和 .a 后缀) 四、动态库的制作和使用 命名规则 libxxx.so 制作步骤 准备源代码文件 将源代码文件生成 .o 文件 gcc -c -fpic *.c 或者 gcc -c -fPIC *....

February 17, 2022 · 1 min · Rick Cui

gcc 相关

一、gcc 工作流程 预处理 —— -E 宏替换 头文件展开 去掉注释 生成 .i 文件 编译 —— -S 生成 .s 文件 汇编文件 汇编 —— -c 生成 .o 文件 二进制文件 链接 二、gcc 常用参数 -v / --version -I : 编译时指定头文件路径 -c : 生成二进制文件 .o -o : 指定生成的文件名 -g : gdb 调试,生成带有调试信息的二进制文件(Debug模式) -D : 编译时指定一个宏 -Wall : 显示警告信息 -On : 优化代码,n 是优化级别(1,2,3)

February 16, 2022 · 1 min · Rick Cui

2022-02-14 杂记

NULL,0,'\0',‘0’ int main() { char arr[] = {0, '\0', '0', 48}; printf("%c\n", arr[0]); printf("%c\n", arr[1]); printf("%c\n", arr[2]); printf("%c\n", arr[3]); printf("---------------\n"); printf("%d\n", arr[0]); printf("%d\n", arr[1]); printf("%d\n", arr[2]); printf("%d\n", arr[3]); return 0; } 输出: 0 0 --------------- 0 0 48 48 UTF-8 向下兼容 ASCII 编码,UTF-8 编码中,一个英文字为一个字节,一个中文一般为三个字节(ASCII、Unicode、UTF-8) 0xxxxxxx:单字节编码形式,这和 ASCII 编码完全一样,因此 UTF-8 是兼容 ASCII 的; 110xxxxx 10xxxxxx:双字节编码形式; 1110xxxx 10xxxxxx 10xxxxxx:三字节编码形式; 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx:四字节编码形式; UTF-8:每字 1 ~ 6 字节 Unicode(UCS-2):每字都是 2 bytes UTF-16:每字 2 ~ 4 字节 UTF-32(UCS-4):每字都是 4 bytes float 单精度,浮点数在内存中是按科学计数法来存储的,小数点后6位能确定表示,float 是由 1 bit 符号位,8 bit 指数位和 23 bit 尾数位组成,精度是由尾数位决定的(2^23 = 8388608)...

February 15, 2022 · 1 min · Rick Cui

vim 使用

一、使用教程 vimtutor 显示行号: vim ~/.vimrc 在文件的最后一行输入 set number 并保存退出 二、vim 三种工作模式 命令模式 编辑模式 末行模式 三、命令模式下的相关操作 保存退出 ZZ 代码格式化 gg=G 光标移动: 左下上右:H J K L 移动到行首:0 移动到行尾:$ 移动到文件首部:gg 移动到文件尾部:G 跳转到第20行:20 + G 从当前位置向下移动 n 行:n + enter 删除命令: 删除光标后的一个字符:x(小写) 删除光标前的一个字符:X(大写) 删除一个单词:dw 删除光标前的所有字符:d0 删除光标后的所有字符:d$ 或者 D 删除光标所在行:dd 删除多行:ndd 删除光标所在行以及下面 n 行 删除光标所在行到文件首部的字符:dgg 删除光标所在行到文件尾部的字符:dG 撤销与反撤销: 撤销:u 反撤销:ctrl + r 复制粘贴: 复制一行:yy 复制多行:nyy 粘贴到光标下一行:p 粘贴到光标上一行:P(大写) 字符可视模式:v 移动光标 复制:y 删除:d 粘贴:p(小写 光标之后) P(大写 光标之前) 行可视模式:V 增加缩进:> 减少缩进:< 块可视模式:ctrl + V o:将光标在块的左上角和右下角切换 O:将光标移动到所在行的对角 nl:将光标向右移动 n 个字符 nj:将光标向下移动 n 行 I:插入,按两次 ESC 退出(例如:多行注释操作) 替换操作: r:替换光标后的字符 R:替换光标后的多个字符 查找操作: /xxx ?...

February 13, 2022 · 1 min · Rick Cui