apache+sqlite+php for Arm Linux

发布者:alpha12最新更新时间:2020-01-31 来源: eefocus关键字:apache  sqlite  php  Arm  Linux 手机看文章 扫描二维码
随时随地手机看文章

经过几天的努力终于在arm-linux平台上搭建了apache+sqlite+php平台.

apche与sqlite网上有不少资料,而php for arm-linux很少.为了在arm平台上安装php发了不少时间.所以将搭建过程发表在此,希望对大家有所帮助.

Sqlite for Arm Linux安装

1、 下载sqlite3.3.8:请到http://www.sqlite.org/download.html,将下载的代码包解开,将生成sqlite3.3.8目录

2、 修改configure文件,将下面语句注释掉

#if test "$cross_compiling" = "yes"; then

# { { echo "$as_me:$LINENO:: error: unable to find a compiler for building build tools" >&5#echo "$as_me: error: unable to find a compiler for building build tools" >&2;}

# { (exit 1); exit 1; }; }

#fi

. . .

#else

# test "$cross_compiling" = yes &&

# { { echo "$as_me:$LINENO:: error: cannot check for file existence when cross compiling" >&5

#echo "$as_me: error: cannot check for file existence when cross compiling" >&2;}

# { (exit 1); exit 1; }; }

. . .

#else

# test "$cross_compiling" = yes &&

# { { echo "$as_me:$LINENO:: error: cannot check for file existence when cross compiling" >&5

#echo "$as_me: error: cannot check for file existence when cross compiling" >&2;}

# { (exit 1); exit 1; }; }

3、配置

./configure –prefix=/data0/sqlite --disable-tcl --host=arm-linux

4、 修改Makefile文件

将BCC = arm-linux-gcc -g -O2改成BCC = gcc -g -O2

5、 修改Makefile文件,将sqlite3程序以静态键接库方式编译

先需增加libsqlite3.a的编译

再将sqlite3$(TEXE): $(TOP)/src/shell.c .libs/libsqlite3.la sqlite3.h

改成lite3$(TEXE): $(TOP)/src/shell.c .libs/libsqlite3.a sqlite3.h

将 -o $@ $(TOP)/src/shell.c .libs/libsqlite3.la

改成 -o $@ $(TOP)/src/shell.c .libs/libsqlite3.a

6、 Make

7、 #arm-linux-strip sqlite3

8、 将sqlite3上传至终端

9、 Sqlite3程序测试

sqlite3 test

,if you see the following messages:

SQLite version 3.3.8

Enter ".help" for instructions

sqlite>

input some commands to do something,

sqlite> create table tbl(one varchar(10),two smallint);

sqlite> insert into tbl values('hello',10);

sqlite> insert into tbl values('goodbye',20);

sqlite> .quit

10、 测试C程序

make a 'test.c' file in 'build' directory, content as showed: 
#include  
#include "sqlite3.h" /* orignal is */ 
static int callback(void *NotUsed, int argc, char **argv, char **azColName){ 
int i; 
for(i=0; iprintf("%s = %sn", azColName[i], argv[i] ? argv[i] : "NULL"); 

printf("n"); 
return 0; 

int main(int argc, char **argv){ 
sqlite3 *db; 
char *zErrMsg = 0; 
int rc; 
if( argc!=3 ){ 
fprintf(stderr, "Usage: %s DATABASE SQL-STATEMENTn", argv[0]); 
exit(1); 

rc = sqlite3_open(argv[1], &db); 
if( rc ){ 
fprintf(stderr, "Can't open database: %sn", sqlite3_errmsg(db)); 
sqlite3_close(db); 
exit(1); 

rc = sqlite3_exec(db, argv[2], callback, 0, &zErrMsg); 
if( rc!=SQLITE_OK ){ 
fprintf(stderr, "SQL error: %sn", zErrMsg); 
sqlite3_free(zErrMsg); 

sqlite3_close(db); 
return 0; 
}

#arm-linux-gcc test.c -L.libs -lsqlite3 –static

#arm-linux-strip a.out

将a.out程序上传至终端,并执行

#a.out test "select * from tbl"

one = hello

two = 10

one = goodbye

two = 20

apache服务器for ARM Linux

1. 从http://www.apache.org/ 上下载apache_1.3.39.tar.gz,然后解压缩的一个目录,然后转到apache_1.3.39目录。

2. 使用本地的gcc编译这个版本,运行:

./ configure

make 完成后,不需要make install

3. 然后创建一个新的编译arm版本的目录,然后在那个目录下解压缩apache_1.3.39.tar.gz,转到该目录下的apache_1.3.39,运行:

export CC="arm-linux-gcc"

./configure --prefix=/data0/apache/ --without-execstrip --enable-module=so

然后运行make 命令,这时编译会在apache_1.3.39/src/main/gen_test_char处失败,因为arm版本该程序无法在本地机器运行,你需要把前面编译的本地版本的apache_1.3.39/src/main/gen_test_char覆盖这个arm版本,然后转到arm版本的apache_1.3.39下继续make,随后编译到另一个程序apache_1.3.39/src/main/gen_uri_delims也出现相同的问题,也使用本地版本覆盖掉它,继续make,直到最后编译成功。

4. --prefix=/data0/apache /指定了安装的目录为/data0/apache/,运行make install,所有编译好的arm版本的apache程序都安装到了/data0/apache/目录下,你把这个目录压缩后,上传至终端上,然后修改conf/httpd.conf配置文件。

5.注意要修改conf/httpd.conf,增加ServerName www.willfar-ertu.com:80,否则在启动服务时会报一个警告httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName

6 .执行如下命令判断apache是否安装成功 http://IP:80 如果显示了apache说明页面,则说明安装成功.如果出现403的错误提示,请确认apache的目录权限是否为755,包括apache的上级目录.

PHP for ARM Linux

1. 从http://www.php.net 上下载php-4.4.8.tar.gz,然后解压缩的一个目录,然后转到php-4.4.8目录

2. export CC=”arm-linux-gcc”

3. 修改configure文件,将其中交叉编译错误处理注释掉,例:

#if test "$cross_compiling" = yes; then

#   { echo "configure: error 7: can not run test program while cross compiling" 1>&2; exit 1; }

#else

4 ./configure --prefix=/data0/php --with-apxs=/data0/apache/bin/apxs --enable-pdo=shared --with-sqlite=shared  --with-pdo-sqlite=shared --with-zlib --host=arm-linux --enable-track-vars --with-xml

5. 执行./configure会报一些错误,根据错误提示,修改configure文件注释掉错误处理,直到成功

6.修改Makefile文件,将其中

EXTRA_LIBS = -lcrypt -l -lcrypt -lz -lm -lcrypt –lcrypt

替换为

http://ip/index.php,能看到php信息,则说明php安装成功

PHP Version 4.4.8

System 
Linux localhost 2.4.18-rmk7-pxa1 #2 四 12月 27 12:28:52 CST 2007 armv4l

Build Date 
Feb 3 2008 11:58:44

Configure Command 
'./configure' '--prefix=/data0/php' '--with-apxs=/data0/apache/bin/apxs' '--enable-pdo=shared' '--with-sqlite=shared' '--with-pdo-sqlite=shared' '--with-zlib' '--host=arm-linux' '--enable-track-vars' '--with-xml'

Server API 
Apache

Virtual Directory Support 
disabled

Configuration File (php.ini) Path 
/data0/php/lib

PHP API 
20020918

PHP Extension 
20020429

Zend Extension 
20050606

Debug Build 
no

Zend Memory Manager 
enabled

Thread Safety 
disabled

Registered PHP Streams 
php, http, ftp, compress.zlib

php与sqlite3结合

先从php网站上下载php-sqlite3压缩包

1.把压缩包,解压缩到一个目录. 
2.进入该目录,运行/data0/php/bin/phpize 
3../configure --with-php-config=/data0/php/bin/php-config --with-sqlite3=你的sqlite3安装目录 
4.make 
5.make install 
6.把生成的sqlite3.so放到php扩展目录下. 
7.在php.ini加载一下sqlite3.so模块


关键字:apache  sqlite  php  Arm  Linux 引用地址:apache+sqlite+php for Arm Linux

上一篇:ARM裸机篇--串口UART实验
下一篇:arm架构与体系结构

推荐阅读最新更新时间:2024-11-09 16:34

五大单片机全解析--51、AVR、PIC、MSP430、ARM
当今单片机厂商琳琅满目,产品性能各异。针对具体情况,我们应选何种型号呢?首先,我们来弄清两个概念:集中指令集(CISC)和精简指令集(RISC)。采用CISC结构的单片机数据线和指令线分时复用,即所谓冯。诺伊曼结构。它的指令丰富,功能较强,但取指令和取数据不能同时进行,速度受限,价格亦高。采用RISC结构的单片机数据线和指令线分离,即所谓哈佛结构。这使得取指令和取数据可同时进行,且由于一般指令线宽于数据线,使其指令较同类CISC单片机指令包含更多的处理信息,执行效率更高,速度亦更快。同时,这种单片机指令多为单字节,程序存储器的空间利用率大大提高,有利于实现超小型化。 8051 AVR和pic都是跟8051结构不同的8位单片机,
[单片机]
五大单片机全解析--51、AVR、PIC、MSP430、<font color='red'>ARM</font>
CRAMFS文件系统搭建与配置(Micro2440 + linux 2.6.39)
1. CRAMFS文件系统配置 Cramfs是Linux的创始人 Linus Torvalds参与开发的一种只读的压缩文件系统。它也基于MTD驱动程序。 在cramfs文件系统中,每一页(4KB)被单独压缩,可以随机页访问,其压缩比高达2:1,为嵌入式系统节省大量的Flash存储空间,使系统可通过更低容量的FLASH存储相同的文件,从而降低系统成本。另外,它的速度快,效率高,其只读的特点有利于保护文件系统免受破坏,提高了系统的可靠性。由于以上特性,Cramfs在嵌入式系统中应用广泛。 但是它的只读属性同时又是它的一大缺陷,使得用户无法对其内容对进扩充。可以使用Cramfs + yaffs2/ubif
[单片机]
Linux驱动:s3c2410/s3c2440 ts驱动分析 之二
一,前言 前面结合“平台总线-设备-驱动”模型分析了ts(触摸)驱动的加载过程,现在进入驱动程序分析下其具体的实现。涉及到输入子系统详解、input核心层程序分析、evdev事件处理层程序分析、ts设备驱动层程序分析以及s3c2440的ADC转换和触摸控制器的操作。 二,涉及的寄存器 三,调用probe函数 根据上一篇的分析,驱动层通过platform_driver_register注册后,会调用到该驱动层的probe函数。 四,s3c2410ts_probe函数分析 4.1 硬件寄存器设置 4.1.1 获取设备参数 struct s3c2410_ts_mach_info *info; info = ( str
[单片机]
ARM7、ARM9、ARM11、ARM-Cortex系列的关系
ARM公司自2004年推出ARMv7内核架构时,摒弃了以往 ARM+数字 这种处理器命名方法(ARM11之前的处理器统称经典处理器系列),重新启用Cortex来命名,并将Cortex系列细分为三大类: Cortex-A系列:面向性能密集型系统的应用处理器内核 Cortex-R系列:面向实时应用的高性能内核 Cortex-M系列:面向各类嵌入式应用的微控制器内核 Cortex-M系列主要是用来取代经典处理器ARM7系列(比如基于ARMv4架构的ARM7TDMI),Cortex-M比ARM7的架构高了3代,性能也有较大提升,所以新的设计推荐使用Cortex-M,关于从ARM7到Cortex-M的移植详见ARM官网指导 ARM7
[单片机]
<font color='red'>ARM</font>7、<font color='red'>ARM</font>9、<font color='red'>ARM</font>11、<font color='red'>ARM</font>-Cortex系列的关系
9.ARM寻址方式
1.立即数寻址 立即数寻址,是一种特殊的寻址方式,操作数本身就是在指令中给出。只有取出指令就取到了操作数。这个操作数就称为立即数,对应的寻址方式就是立即数寻址方式。例如: ADD R0,R1,#0X45;这汇编的意思:R1+0x45- R0 在以上两条指令中,第二个源操作数,是立即数,要求以 # 为前缀。 2.寄存器寻址 寄存器寻址就是利用寄存器中的数值作为操作数,这种寻址方式是一种执行效率较高的寻址方式。 该指令的执行效果是将寄存器R1和R2的内容相加,其结果存放在寄存器R0中 3.寄存器间接寻址 寄存器间接寻址就是寄存器中的存放的是操作数在内存中的地址。例如以下指令: 在第一条指令中,以寄存器R2的值作为操作数的地
[单片机]
9.<font color='red'>ARM</font>寻址方式
ARM汇编教程(2): 数据类型与寄存器
数据类型 这是 ARM 汇编基础知识系列教程的第二部分,涉及数据类型和寄存器。 与高级语言类似,ARM支持对不同数据类型的操作。我们可以加载(或存储)的数据类型可以是有符号和无符号字、半字或字节。这些数据类型的扩展是。-h或-sh用于半字,-b或-sb用于字节,而字则没有扩展。有符号和无符号数据类型之间的区别是。 有符号的数据类型可以容纳正值和负值,因此范围较小。 无符号数据类型可以保存大的正值(包括 零 ),但不能保存负值,因此范围更广。 下面是一些例子,说明这些数据类型如何与指令Load和Store一起使用。 大小端 在内存中,有两种查看字节的基本方法。小端(LE)或大端(BE)。区别在于一个对象的每个字节在内存中的存
[单片机]
<font color='red'>ARM</font>汇编教程(2): 数据类型与寄存器
OK6410A 开发板 (六) 3 OK6410A linux-5.11编译分析
订阅专栏 linux编译对host环境的要求 Documentation/process/changes.rst 编译过程 1. 杂项 SYSHDR arch/arm/include/generated/uapi/asm/unistd-common.h sh './arch/arm/tools/syscallhdr.sh' 'arch/arm/tools/syscall.tbl' 'arch/arm/include/generated/uapi/asm/unistd-common.h' 'common' '' '__NR_SYSC
[单片机]
苹果Mac电脑要抛弃英特尔投入ARM怀抱?只是时间的问题
众所周知,苹果的手机用的都是自家基于 ARM 架构的芯片,近日有消息称,使用英特尔处理器的苹果 mac 电脑也要向自研芯片过渡。 据国外媒体报道,苹果 Mac 系列现在使用的是英特尔处理器,但据称这一局面即将发生改变,苹果从明年开始将开始向自主设计的 ARM 架构芯片过渡。 目前,苹果所有 Mac 产品都使用英特尔的 x86 芯片,而它的 iPhone 和 iPad 则使用自主设计的 ARM 架构 A 系列芯片。 英特尔芯片采用 CISC(复杂指令集架构),而 ARM 芯片采用 RISC(精简指令集计算系统)。RISC 指令比 CISC 指令更小、更简单,这意味着 ARM 处理器所需的功率更小,执行计算任务的效
[嵌入式]
苹果Mac电脑要抛弃英特尔投入<font color='red'>ARM</font>怀抱?只是时间的问题
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved