c语言之SQLite数据库开发

一、数据库的安装 // 准备软件包 libsqlite3-0_3.7.2-1ubuntu0.1_i386.deb libsqlite3-dev_3.7.2-1ubuntu0.1_i386.deb sqlite3_3.7.2-1ubuntu0.1_i386.deb // 安装 sudo dpkg -i *.deb 二、 数据库命令 (一)系统命令(以.开头) .exit .quit .table //查看表 .schema //查看表的结构 (二)sql语句(以‘;’结尾) // 1-- 创建一张表 create table stuinfo(id integer, name text, age integer, score float); // 2-- 插入一条记录 insert into stuinfo values(1001, 'zhangsan', 18, 80); insert into stuinfo (id, name, score) values(1002, 'lisi', 90); // 3-- 查看数据库记录 select * from stuinfo; select * from stuinfo where score = 80; select * from stuinfo where score = 80 and name= 'zhangsan'; select * from stuinfo where score = 80 or name='wangwu'; select name,score from stuinfo; //查询指定的字段 select * from stuinfo where score >= 85 and score < 90; // 4-- 删除一条记录 delete from stuinfo where id=1003 and name='zhangsan'; // 5-- 更新一条记录 ...

c语言之Makefile的使用

一、Make简介

  • 工程管理器,顾名思义,是指管理较多的文件
  • Make工程管理器也就是个“自动编译管理器”,这里的“自动”是指它能够根据文件时间戳自动发现更新过的文件而减少编译的工作量,同时,它通过读入Makefile文件的内容来执行大量的编译工作
  • Make将只编译改动的代码文件,而不用完全编译。

二、Makefile基本结构

Makefile是Make读入的唯一配置文件 :

  • 由make工具创建的目标体(target),通常是目标文件或可执行文件
  • 要创建的目标体所依赖的文件(dependency_file)
  • 创建每个目标体时需要运行的命令(command)

注意:命令行前面必须是一个”TAB键”,否则编译错误为:*** missing separator. Stop.

Makefile格式

target : dependency_files

command

例1

hello.o :  hello.c hello.h
	gcc  –c  hello.c  –o  hello.o

例2

sunq:kang.o yul.o
	gcc kang.o yul.o -o sunq
kang.o : kang.c kang.h
	gcc –Wall –O -g –c kang.c -o kang.o
yul.o : yul.c
	gcc - Wall –O -g –c yul.c -o yul.o

  • -Wall:表示允许发出gcc所有有用的报警信息.
  • -c:只是编译不链接,生成目标文件”.o”
  • -o file:表示把输出文件输出到file里

三、创建和使用变量

(一)为什么使用变量

创建变量可以用来代替一个文本字符串:

  • 系列文件的名字
  • 传递给编译器的参数
  • 需要运行的程序
  • 需要查找源代码的目录
  • 你需要输出信息的目录
  • 你想做的其它事情

(二)变量的定义与使用

变量定义的两种方式

  • 递归展开方式 VAR=var
  • 简单方式 VAR:=var

使用变量

使用$进行引用,如:$(VAR),对于$则使用$$来表示,类似于编程语言中的宏

1、递归展开方式

foo = $(bar)
bar = $(ugh)
ugh = Huh?
$(foo)的值为?
echo $(foo)来进行查看

优点:它可以向后引用变量

缺点:不能对该变量进行任何扩展,例如CFLAGS= $(CFLAGS) -O会造成死循环

2、简单方式

m := mm
x := $(m)
y := $(x) bar
x := later
echo $(x) $(y)
  • 用这种方式定义的变量,会在变量的定义点,按照被引用的变量的当前值进行展开
  • 这种定义变量的方式更适合在大的编程项目中使用,因为它更像我们一般的编程语言

3、例子

OBJS = kang.o yul.o
CC = gcc
CFLAGS = -Wall -O -g
sunq : $(OBJS)
	$(CC) $(OBJS) -o sunq
kang.o : kang.c kang.h
	$(CC) $(CFLAGS) -c kang.c -o kang.o
yul.o : yul.c yul.h
	$(CC) $(CFLAGS) -c yul.c -o yul.o

4、自动变量

$* 不包含扩展名的目标文件名称

$+ 所有的依赖文件,以空格分开,并以出现的先后为序,可能 包含重复的依赖文件

$< 第一个依赖文件的名称

$? 所有时间戳比目标文件晚的的依赖文件,并以空格分开

$@ 目标文件的完整名称

$^ 所有不重复的目标依赖文件,以空格分开

$% 如果目标是归档成员,则该变量表示目标的归档成员名称

如:

OBJS = kang.o yul.o
CC = gcc
CFLAGS = -Wall -O -g
sunq : $(OBJS)
	$(CC) $^ -o $@
kang.o : kang.c kang.h
	$(CC) $(CFLAGS) -c $< -o $@
yul.o : yul.c yul.h
	$(CC) $(CFLAGS) -c $< -o $@

5、make参数选项

正常情况下,在make目录下执行make命令即可,但是make提供了一些参数选项:

-C dir读入指定目录下的Makefile (make -C /home/paas)

-f file读入当前目录下的file文件作为Makefile (make -f Makefile_test)

-i 忽略所有的命令执行错误

-I dir指定被包含的Makefile所在目录

-n 只打印要执行的命令,但不执行这些命令

-p 显示make变量数据库和隐含规则

-s 在执行命令时不显示命令

-w 如果make在执行过程中改变目录,打印当前目录名

四、VPATH(虚路径)

在一些大的工程中,有大量的源文件,我们通常的做法是把这许多的源文件分类,并存放在不同的目录中。所以,当make需要去找寻文件的依赖关系时,你可以在文件前加上路径,但最好的方法是把一个路径告诉make,让make在自动去找。

Makefile文件中的特殊变量“VPATH”就是完成这个功能的,如果没有指明这个变量,make只会在当前的目录中去找寻依赖文件和目标文件。如果定义了这个变量,那么,make就会在当当前目录找不到的情况下,到所指定的目录中去找寻文件了。

VPATH= src:../headers

上面的的定义指定两个目录,“src”和“../headers”,make会按照这个顺序进行搜索。目录由“冒号”分隔。(当然,当前目录永远是最高优先搜索的地方)

此博客中的热门博文

玩转虚拟机系列之如何搭建虚拟机

玩转虚拟机系列之远程工具

玩转虚拟机系列之如何高效创建虚拟机