导航:首页 > 编程语言 > php编译sqlite3

php编译sqlite3

发布时间:2022-10-20 15:32:29

‘壹’ 编译的时候提示的是 sqlite3.c:5:21: 致命错误: sqlite3.h:没有那个文件或目录 编译中断。请问该怎么做

用交叉编译器编译时,也会出现找不到sqlite3.h头文件的情况,需要把sqlite3.h这个头文件放到交叉编译工具目录下的 include。
sudo apt-get install libsqlite3-dev

‘贰’ php怎样处理sqlite3

<?php
// set access parameters
$db = "users.db";

// open database file
// make sure script has read/write permissions!
$conn = sqlite_open($db) or die ("ERROR: Cannot open database");

// create and execute INSERT query
$sql = "INSERT INTO users (id, username, country) VALUES ('5', 'pierre', 'FR')";
sqlite_query($conn, $sql) or die("Error in query execution: " .sqlite_error_string(sqlite_last_error($conn)));

// create and execute SELECT query
$sql = "SELECT username, country FROM users";
$result = sqlite_query($conn, $sql) or die("Error in query execution: " . sqlite_error_string(sqlite_last_error($conn)));

// check for returned rows
// print if available
if (sqlite_num_rows($result) > 0) {
while($row = sqlite_fetch_array($result)) {
echo $row[0] . " (" . $row[1] . ") ";
}
}

// close database file
sqlite_close($conn);
?>

‘叁’ 如何编译SQLite-How To Compile SQLite

SQLite是ANSI-C的源代码。在使用之前必须要编译成机器码。这篇文章是用于各种编译SQLite方法的指南。

这篇文章不包含编译SQLite的每个步骤的反馈,那样可能会困难因为每种开发场景都不同。所以这篇文章描述和阐述了编译Sqlite的原则。典型的编译命令已经作为例子提供了,以期望应用开发者能够使用这些例子作为完成他们自己定制的编译过程的的一个指南。换句话说,这篇文章提供了想法和见解,而不是交钥匙的解决方法。

融合VS单独源文件

Sqlite是由超过一百个c源码文件以及众多的目录下的脚本构建的。Sqlite的实现是纯粹的ANSI-C,但是许多C语言源代码文件是由辅助的C程序生成或者转换来的,并且AWK,SED和TCL脚本会融合到完成的sqlite库中。对Sqlite构建需要的C程序和转换和创建C语言源码是一个复杂的过程。

为了简化这些,sqlite也通过一个预打包的合并后的源码文件:sqlite3.c。这个合并文件是一个ANSI-C源码实现整个SQLite库的唯一文件。合并后的文件更容易处理。所有的东西都包含在这一个文件里,所以很容易进入一个更大的C或者C++程序的源码树。所有的代码生成和转换步骤都已经实现了,因此没有辅助的C程序需要去配置和变异,也没有脚本需要去运行。并且,因此所有哭都包含在一个翻译单元,编译器可以做更多高级的优化从而提升5%到10%的性能。因为这些原因,融合后的源码文件sqlite3.c对所有程序来讲都是值得推荐的。

推荐所有的应用程序使用融合文件。

直接从单独的源码文件中构建sqlite当然可以,但是并不推荐。对一些特殊的应用程序,可能需要修改构建程序去处理使用那些从网站上下载的预构建的源码文件不能完成的情况。对于这些情况,推荐构建和使用一个定制过的合并文件。换句话说,即使一个工程需要以单独的源码文件构建sqlite,仍然推荐使用一个融合后的源码文件作为一个中间步骤。

编译命令行接口(CLI)

构建命令行接口需要三个源码文件:

sqlite3.c:Sqlite融合的源码文件

sqlite3.h:匹配sqlite3.c以及定义sqlite的c语言接口的头文件

shell.c:命令行接口程序本身。这个c源码文件包含一个main()的例程和每轮循环的用户输入的提示符并将输入传给sqlite数据库引擎用于处理。

所有的上述源码的三个文件都被包含在下载页面的amalgamation tarball中。

为了构建CLI,简单的将这三个文件放置在相同的目录下然后一起编译他们。用MSVC:
cl shell.c sqlite3.c -Fesqlite3.exe

在unix系统上(或者在windows上用cygwin或者mingw+msys)典型的命令会有些像这样:
gcc shell.c sqlite3.c -lpthread -ldl

为了SQLite线程安全,需要pthreads库。但是因为CLI是一个单线程的,我们可以指示SQLite构建一个非线程安全的库并因此护绿pthreads库:
gcc -DSQLITE_THREADSAFE=0 shell.c sqlite3.c -ldl

-ldl库是在支持动态装载时需要,例如sqlite3_load_extension() 接口和load_extension()
SQL function。如果这些特性都不要求,那么我们也可以使用SQLITE_OMIT_LOAD_EXTENSION编译时间选项忽略他们。
gcc -DSQLITE_THREADSAFE=0 -DSQLITE_OMIT_LOAD_EXTENSION shell.c sqlite3.c

有人可能想要提供其他的编译时间选项(compile-time options),例如SQLITE_ENABLE_FTS3去全文本搜索或者SQLITE_ENABLE_RTREE用于R*树搜索引擎扩展。而有人将正常指定一些编译优化开关。(预编译的CLI可以从选择sqlite网站上使用“-Os”下载下来)有无数种可能的变数在这里。

关键点在这里:构建CLI需要编译一起两个C语言文件。shell.c文件包含入口的定义和用户输入的loop,而sqlite融合文件sqlite3.c包含完整的sqlite库的实现。

编译TCL接口

sqlite的tcl接口是一个小的模块被添加到一般的融合文件中。结果是一个新的融合后的源码文件,称之为“tclsqlite3.c”。这个源码文件是生成一个可以使用TCL

load命令去加载到一个标准的tclsh或者wish中,或者随着sqlite构建成功生成一个单独唯一的tclsh的共享库所需要的。一个tcl的融合的副本被包含在下载页的TEA
tarball中作为一个文件。

为了生成一个linux上的sqlite的TCL-loadable库,下面的命令需要满足:
gcc -o libtclsqlite3.so -shared tclsqlite3.c -lpthread -ldl -ltcl

不幸的是构建Mac OS X 和 Windows的共享库并不是如此简单。对于这些平台最好使用包含在TEA tarball中的configure脚本和makefile.

为了生成一个单独的tclsh,可以用于sqlite静态链接,使用如下的编译器调用:
gcc -DTCLSH=1 tclsqlite3.c -ltcl -lpthread -ldl -lz -lm

这里的技巧是-DTCLSH=1选项。sqlite的TCL接口模块包含一个main的过程,用于初始化一个TCL解释器并在以-DTCLSH=1编译后进入到一个命令行loop。上述命令可以工作在Linux和Mac
OS X,虽然有时可能需要依赖于平台调整库选项以及编译的TCL的哪一个版本。

构建融合文件

下载页提供的sqlite融合文件的版本对大多数用户来说是足够的。然而,一些工程可能想要或者需要构建他们自己的融合文件。一个常见的构建一个定制的融合文件的理由是为了使用特定的compile-time options来定制sqlite库。回想sqlite融合文件中包含了许多C代码由辅助程序和脚本生成。许多的编译时间选项影响这一成圣代码而且必须在融合文件组装前提供给代码生成器。这一系列必须传给代码生成器的编译时间相关的选项会使得sqlite的发布版本各不相同,但是在写这边文章的时候,代码生成器需要知道的这组选项包括:

SQLITE_ENABLE_UPDATE_DELETE_LIMIT
SQLITE_OMIT_ALTERTABLE
SQLITE_OMIT_ANALYZE
SQLITE_OMIT_ATTACH
SQLITE_OMIT_AUTOINCREMENT
SQLITE_OMIT_CAST
SQLITE_OMIT_COMPOUND_SELECT
SQLITE_OMIT_EXPLAIN
SQLITE_OMIT_FOREIGN_KEY
SQLITE_OMIT_PRAGMA
SQLITE_OMIT_REINDEX
SQLITE_OMIT_SUBQUERY
SQLITE_OMIT_TEMPDB
SQLITE_OMIT_TRIGGER
SQLITE_OMIT_VACUUM
SQLITE_OMIT_VIEW
SQLITE_OMIT_VIRTUALTABLE

为了构建一个定制的融合文件,先下载原始的独立源码文件到一个unix或者类unix开发平台。确定获取的原始源码文件不是“预编译过的源文件”。任何人都可以通过到下载页或者直接从configuration management system.获取完整的一套原始源码文件。

假设sqlite源码树被存在一个名为“sqlite”的目录下。计划构建一个平行目录下的名为“bld”的融合文件。首先通过运行sqlite源码树种的configure脚本运行或者通过制作一份源码树顶层的的makfile模板的一份,来构建一个合适的makefile.然后手动编辑这个Makfile去包含需要的编译时间相关的选项。最终运行:
make sqlite3.c

在windows上使用MSVC:
nmake /f Makefile.msc sqlite3.c

sqlite3.c的make
target会自动构造一般的“sqlite3.c”合并的源码文件,以及它的头文件“sqlite3.h”,和包含TCL接口的融合源码文件“tclsqlite3.c”。之后,需要的文件可以被拷贝到文件目录下然后根据上述勾勒的过程编译。

构建一个windows的动态链接库DLL

为了在windows构建一个sqlite的dll使用,首先获取对应的融合过的源码文件,sqlit3.c和sqlite.h。这些可以从SQLite website上下载或者和上述告知的一样去定制生成。

使用工作目录下的源码文件,一个dll可以在msvc中使用如下命令生成:
cl sqlite3.c -link -dll -out:sqlite3.dll

上述命令需要运行在msvc的MSVC Native Tools Command
Prompt.如何你已经在机器上安装了msvc,你可能有多个版本的这种命令提示符,针对于x86和x64的自带构建的,或者交叉编译到ARM的。依赖要求的DLL去使用对应合适的命令提示符工具。

如果使用MinGW编译器,命令是这样的:
gcc -shared sqlite3.c -o sqlite3.dll

注意MinGW只生成32位的dll。另有一个分开的MinGW64工程可以用来生成64位的dll。可以推断其命令行语法是类似的。需要注意的是最近的MSVC的版本生成的DLLs可能不能工作到WinXP或者更早版本的windows上。因此为了最大限度的兼容你的生成的dll,推荐MinGW。一个好的经验法则是使用MinGW去生成32位的dlls,使用msvc去生成64位的dlls。

‘肆’ 谁知道php使用sqlite3是用 new PDO 呢,,还是用 new SQLlite3 这个呢

两者都可以,都需要开启php的对应扩展。
用PDO可以使代码适用于多种数据库,使得代码抽象化,脱离数据库关联。
用指定SQLite3后,代码只能用于这种数据库。
尽量用PDO。

‘伍’ php怎样处理sqlite3

php怎样处理sqlite3
举摄欧选刊畅闲愤烛宁

‘陆’ php 用pdo操作sqlite3数据库的问题

php对数据库文件是否有写入权限?
使用其他sqlite3管理程序,能否执行相同的语句?

‘柒’ 如何让php支持sqlite

你好,php默认设置不支持,sqlite数据库,如果你的是windows系统,那么在php.ini找到extension=php_sqlite.dll这行,把前面的那个#号去掉,重启nignx或者apache就行了。。。如果是linux系统。。就有点麻烦。。可能得编译扩展模块。。具体才复杂。。还跟支持库有关,一般去网上找个教程。。对着做就没啥问题。谢谢。

‘捌’ php 操作sqlite3的问题

这里应该是查询id=2的记录,函数fetchArray返回的是一个数组,该数组包含索引也包含字段名作为数组的key,也就是说$row[0]就相当于$row->id,$row[1]相当于$row->name。

‘玖’ Linux 系统如何设置php对sqlite3的支持

for Linux(rpm)
1.下载源 wget http://www.sqlite.org/sqlite-3.5.4.tar.gz
tar zxvf sqlite-3.5.4.tar.gz
cd sqlite-3.5.4
2.配置
./configure-----配置环境
make----------- 编译sqlite源码
make install-----安装sqlite
若make的时候有发生找不到tcl相关的library时,可以利用下列指令:
./configure –disable-tcl –prefix=/usr/local/sqlite-3.3.5
debian: ./configure –disable-tcl
Ubuntu:./configure –prefix=/usr/local/sqlite-3.3.5
那就简单了.:
debian: apt-get install libsqlite3-tcl
Ubuntu:apt-get install sqlite3
就行了
然后:
for linux(套件管理程序安装)
可以利用 apt-get(Ubuntu/Debian)或 yum(Fedora)来直接下载,
Ubuntu:apt-get install sqlite
Debian:yum
若 SQLite 要与 PHP 搭配使用,则需要为 PHP 特别安装套件,可利用各个 distros 的套件管理软件来安装(以Ubuntu为例):
for PHP4:
apt-get install php4-sqlite
for PHP5:
apt-get install php5-sqlite
收工

阅读全文

与php编译sqlite3相关的资料

热点内容
加强数字货币国际信息编译能力 浏览:580
购买的app会员怎么退安卓手机 浏览:889
程序员的种类及名称 浏览:290
美国程序员薪资 浏览:12
黑石通汇证券服务器什么时候到期 浏览:391
东方财富app里我的关注怎么看 浏览:747
bm3d单反级降噪算法 浏览:457
华为安卓机激活时间怎么查询 浏览:850
如何用优盘重装服务器系统 浏览:317
日本结婚三代算法 浏览:920
皓强工具解压步骤 浏览:690
部队抗洪抢险命令范文 浏览:888
欧姆龙plc编程软件使用教程 浏览:594
ai文件pdf 浏览:912
腾讯云服务器挂载混合云 浏览:758
智能小车用什么单片机 浏览:463
java怎么给窗口关闭 浏览:940
列举51单片机的寻址方式 浏览:706
剪辑app怎么写长篇文字 浏览:400
app专属流量过月租怎么不更新 浏览:656