静态库与动态库
1. 函数库1.本质:一组函数,具有相近的功能或操作同一数据结构
<string.h>:strcpy/strcmp/strcat/strlen/strstr/strchr/strtkk…..
自定义库:<mysort.h>:bubble_sort/select_sort/quick_sort/insert_sort…..
2.作用:
代码复用
出现积累
3.发布形式:
源码形式
优点:方便使用者学习和使用
缺点:保密性差、编译程序耗时、编译受平台、版本限制
二进制形式:
优点、缺点与上面相反
4.我们使用的函数:标准c库:/lib/x86_64-linux-gnu/libc.so.6`
2.静态库
在linux中静态库由程序ar生成,现在静态库已经不像之前那么普遍了,这主要是由于程序都在使用动态库。关于静态库的命名如下:
机制:在编译程序时,复制静态库的代码片,到可执行程序中
优点:将函数库中的函数本地化,寻 ...
shell脚本编程
1. Shell脚本入门1.1 脚本格式要求
脚本以#!/bin/bash开头
脚本需要有执行权限
1.2 shell脚本的执行方式
输入脚本的绝对路径或相对路径
需要对脚本+x权限,再执行脚本
sh + 脚本
不需要对脚本+x权限,直接执行即可
案例:创建一个shell脚本,输出hello,world:
1234567891011121314mkdir /root/shcode #创建一个写shell脚本的文件夹vim hello.sh #在shcode目录下以vim文本编辑器编辑脚本#输入内容如下:#!/bin/bashecho “hello,world” #保存退出 #第一种方式执行(终端输入)chmod u+x hello.sh #让该用户对文件有执行的权限./hello.sh #1相对路径执行/root/shcode/hello.sh #2绝对路径执行#第二种方式执行 ...
makefile与gdb调试
使用 GCC 的命令行进行程序编译在单个文件下是比较方便的,当工程中的文件逐渐增多,甚至变得十分庞大的时候,使用 GCC 命令编译就会变得力不从心。这种情况下我们需要借助项目构造工具 make 帮助我们完成这个艰巨的任务。 make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命令,比如:Visual C++的nmake,QtCreator的qmake等。
makefile带来的好处就是“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。
makefile文件有两种命名方式 makefile 和 Makefile,构建项目的时候在哪个目录下执行构建命令 make这个目录下的 makefile 文件就会被加载,因此在一个项目中可以有多个 makefile 文件,分别位于不同的项目目录中
1. gcc工作流程
GCC编译器对程序的编译下图所示,分为4个阶段:预处理(预编译)、编译、汇编、链接。GCC的编译器可以将这4个步骤合并成一个。
预处理:使用的是预处理器
在这个阶段主要做了三件事:展开头 ...
图床实现(通过百度智能云、七牛云、PicGo软件完成)
1.给域名添加新的解析进入百度智能云官网:https://cloud.baidu.com/,点击右上角的控制台
找到域名服务,点击域名管理,这里有你之前买的域名(没有买的最好买一个,很便宜),下面要为域名添加一共新的解析
在添加解析记录的界面中,主机记录可以随便填,例如填image,记录类型选择CNAME记录,记录值先随便乱填(后期会改),填写完上面内容后,点击确定,完成添加解析。
2.创建存储图片的空间进入七牛云官网:https://marketing.qiniu.com/,点击右上角的控制台
点击左上角的菜单,选择对象存储
进入后,选择空间管理,然后新建空间,存储空间的名称可以随便填,存储区域建议选择亚太-新加坡,访问控制选择公开,最好点击确定,完成空间建立
建立完成后,点击创建的空间名称,进入图床控制面板,选择域名管理,绑定域名
进入后,在添加域名的界面,其中加速域名是之前添加解析记录时填写的主机记录,而且后缀要加上你的域名(我因为之前填写过改域名,所以会提示创建过)。使用场景选择图片小文件,然后下面点击使用推荐配置,点击创建即可
绑定完成后,复制图上箭头所指的内 ...
Linux基础知识
1. Linux操作系统基础知识1.1 命令解析器shell就是命令解析器,它的作用是对用户输入到终端的命令进行解析,调用对应的执行程序。
用户在终端输入命令,由shell命令解析器对命令进行解析(按照$PATH 环境变量搜索命令),解析成内核能够识别的指令,最后由内核执行命令,最后由内核执行命令,终端显示命令执行的结果给用户。
注意:shell在寻找命令的时候是按照$PATH 环境变量去寻找的,如果找到了就执行对应的命令,若找不到就报错,执行echo $PATH 环境变量的值
最外层是用户层,如Qt中的一些按钮、屏幕等,而Qt是一个框架,可以理解为是应用层,里面封装的一系列函数供用户使用,可以使用Qt中的API直接跳过shell层,将其交给内核。如果通过命令来操作的话,应用层就相当于是终端
1.2 linux下主要目录
/bin:binary的缩写,用来存放二进制的可执行文件,如date、ls、rm、mv、cp等常shell用命令
/boot:存放的是linux系统启动需要的一些文件
/dev:用来存放硬件设备所对应的文件,如鼠标、键盘、硬盘、 ...
轻量级数据库sqlite3
1、安装sqlite环境进入sqlite官网:https://www.sqlite.org/index.html
2、创建数据库在linux系统又两种方式创建数据库,如下所示:
shell终端:sqlite3 my.db
c文件里:
12sqlite3 *db; //是指向数据库文件的句柄指针(地址)sqlite3_open(“my.db”,&db) //成功返回SQLITE_OK
3、系统命令系统命令是非常主要的,通过这些系统目录可以很好的操作数据库sqlite。
help:查看帮助信息
databases:查看数据库
tables:显示数据库中所有的表的表名
schema:查看表的结构
quit:退出数据库
exit:退出数据库
4、增删改查
创建一张表:create table 表名(字段名称1 字段类型, …);
删除一张表:drop table 表名;
向表中插入一条记录:insert into 表名 values(字段值1,字段值2,…);
查询记 ...