李先静的专栏

欢迎大家加入Linux Mobile Research,本圈子主要致力于基于linux的嵌入式系统的学习和研究,包括内核、驱动、GUI、MMI、软件设计方法和软件优化等方面,欢迎大家加入,无论是高手还是新手,一起学习共同进步。欢迎到Linux mobile development(www.limodev.cn>上交流

用户操作
[即时聊天] [发私信] [加为好友]
李先静ID:absurd
1115329次访问,排名25,好友334人,关注者377人。
Only those who attempt the absurd can achieve the impossible.
absurd的文章
原创 401 篇
翻译 1 篇
转载 59 篇
评论 1513 篇
李先静的公告
欢迎到Linux mobile development上交流
最近评论
securitydoor:加油哦
SuperKris:应该把rootfs里的/var/tmp改成是指向/tmp的连接,
别的程序也可能用/var/tmp保存临时文件,好像pppd这个拨号程序就是
creative55:牛人,佩服。
Nick518:即将实现MTK方案动态加载,到时候可以无限扩展手机功能. 哈哈
AntiSoul:不错,这些是什么方面的开发?
文章分类
收藏
相册
1.个人相册
2.设计备忘录用图
3.设计本质论用图
4.scim架构用图
6.临时文件
7.其它文件
8.研究笔记用图
marvell-linux
1.友情链接
aimself@CSDN(RSS)
directfb中文网站(RSS)
Eric's Little Hut
eye_of_back的专栏(RSS)
Linux Mobile Research
Phoenix@上海(RSS)
segments的专栏(RSS)
study's Blog(RSS)
tracestudio
伐木丁丁鸟鸣嘤嘤(RSS)
会飞的鱼的专栏(RSS)
创系的技术博客
小四的BLOG(RSS)
小马哥的博客(RSS)
开源电信(RSS)
御风剑客
新奇的BLOG
易军军的网络家
李吉群的专栏(RSS)
2.亲情链接
凤凰的幸福蓄水池(RSS)
我的相册
3.软界高手
Donald E. Knuth (RSS)
孟岩(RSS)
透明(RSS)
4.LinuxMobile
celinuxforum(RSS)
GPE(RSS)
maemo.org(RSS)
opensource.motorola
palowireless
5.XWindow
Jserv's blog(RSS)
Keith Packard(RSS)
6.技术资源
7.开源项目
freedesktop(RSS)
GNU(RSS)
GTK+(RSS)
matchbox(RSS)
pxa27x-linux/
8.我的BLOG镜像
absurd@chinaunix
absurd@msn
My English BLOG(RSS)
存档
订阅我的博客
XML聚合  FeedSky

原创 交叉编译场景分析(arm-linux)(七)--编译sqlite收藏

新一篇: 交叉编译场景分析(arm-linux)(八)--编译glib | 旧一篇: 交叉编译场景分析(arm-linux)(六)--编译TinyX

交叉编译场景分析(arm-linux)()--编译sqlite

 

转载时请注明出处:http://blog.csdn.net/absurd

 

1.         基本信息:

软件名称

sqlite

功能简述

sqlite是一个针对嵌入式系统设计的数据库管理系统(DBMS),实现了SQL92的基本功能,ARM版的可执行文件约300K.

下载地址

http://www.sqlite.org/

软件版本

sqlite-3.3.4.tar.gz

依赖关系

默认

readline

前置条件

源文件位置:$(WORK_DIR)/ sqlite-3.3.4

 

2.         过程分析

下载的稳定版本,configure已经存在,直接进行配置:

[root@linux sqlite-3.3.4]# ./configure --host=$ARCH-linux --prefix=$ROOTFS_DIR/usr

                

出现了如下错误:

configure: error: unable to find a compiler for building build tools

 

前面检查arm-linux-gcc都通过了,怎么还说没有找到编译器呢?花了点时间看configure的脚本,太复杂了,又结合configure.ac看了一下。原来是要设置config_TARGET_CCconfig_BUILD_CC两个环境变量。config_TARGET_CC是交叉编译器,config_BUILD_CC是主机编译器。重来:

[root@linux sqlite-3.3.4]# export config_BUILD_CC=gcc

[root@linux sqlite-3.3.4]# export config_TARGET_CC=arm-linux-gcc

[root@linux sqlite-3.3.4]# ./configure --host=$ARCH-linux --prefix=$ROOTFS_DIR/usr

 

出现了如下错误:

checking for /usr/include/readline.h... configure: error: cannot check for file existence when cross compiling

 

readline我们已经编译过了,readline.h是肯定存在,没有必要检查。还是施展我们欺骗大法吧,在cache文件里设置ac_cv_header_readline_h=yes,骗过configure脚本:

[root@linux sqlite-3.3.4]# echo ac_cv_header_readline_h=yes >$ARCH-linux.cache

[root@linux sqlite-3.3.4]#./configure --host=$ARCH-linux --prefix=$ROOTFS_DIR/usr --cache-file=$ARCH-linux.cache

 

这回配置成功了,编译:

[root@linux sqlite-3.3.4]# make && make install

 

有的机器上会出现下列错误:

libtool: compile: unable to infer tagged configuration

libtool: compile: specify a tag with `--tag'

 

这时检查一下libtool里的CC变量是否设置为arm-linux-gcc,如果不是,可以手工改过来,或者设置环境变量lt_compiler=arm-linux-gcc,重新配置一下。

 

OK,经过几番周折,终于编译过去了。

 

3.         构建处方

l         sqlite.mk

SQLITE_DIR="sqlite-3.3.4"

 

all: clean config build

 

config:

    @cd $(SQLITE_DIR) && \

    export config_BUILD_CC=gcc && \

    export config_TARGET_CC=arm-linux-gcc && \

    echo ac_cv_header_readline_h=yes >$$ARCH-linux.cache && \

    ./configure --host=$$ARCH-linux --prefix=$$ROOTFS_DIR/usr --cache-file=$$ARCH-linux.cache && \

    echo "config done"

   

build:

    @cd $(SQLITE_DIR) && \

    make && make install && \

    echo "build done"

   

clean:

    @cd $(SQLITE_DIR) && \

    if [ -e Makefile ]; then make distclean; fi && \

echo "clean done"

 

发表于 @ 2006年04月01日 14:43:00|评论(loading...)|编辑

新一篇: 交叉编译场景分析(arm-linux)(八)--编译glib | 旧一篇: 交叉编译场景分析(arm-linux)(六)--编译TinyX

评论

#phenix 发表于2006-05-11 20:05:00  IP: 221.6.205.*
我按照您的方法编译了sqlite-3.3.5,可是在make时出现了一下错误:
/opt/crosstool/arm-linux/lib/gcc/arm-linux/3.4.3/../../../../arm-linux/bin/ld: cannot find -ltclstub8.4
collect2: ld returned 1 exit status
make: *** [libtclsqlite3.la] 错误 1

请问这该如何解决?
谢谢解答!!
#absurd 发表于2006-05-11 22:30:00  IP: 211.161.63.*
对于嵌入式应用,一般不需要libtclsqlite3.la,在Makefile.am去掉相关内容即可。如果你真的需要它,你可能要编译tcl库才行。
#phenix 发表于2006-05-12 15:23:00  IP: 221.6.205.*
谢谢absurd大侠,我再试看看!有问题再请教!
#phenix 发表于2006-05-13 15:44:00  IP: 221.6.205.*
我在Makefile.in这个文件里把有关libtclsqlite3.la的语句都注释掉了!现在可以用了!谢谢absurd的指点!
#absurd 发表于2006-05-13 18:57:00  IP: 211.161.63.*
呵,不客气,欢迎交流。
不过Makefile.in只是一个中间文件(或称临时文件),它由automake根据Makefile.am产生,configure再根据Makefile.in产生最终的Makefile。修改Makefile.am才是更彻底的一种做法,否则一运行automake,Makefile.in又变回去了,而且修改Makefile.in比较修改Makefile.am麻烦得多。
#phenix 发表于2006-06-03 15:36:00  IP: 221.6.205.*
非常感谢absurd!
您的每篇文章都很棒!
希望您以后多写点嵌入式方面心得,好让我们这些初学者学习学习!呵呵~~
#absurd 发表于2006-06-05 19:30:00  IP: 220.112.36.*
呵,谢谢,互相学习。
#falls 发表于2006-09-29 00:18:00  IP: 220.114.128.*
没这么麻烦吧?

用 --target 就可以了

./configure --target=arm-linux-gnu --build=i386-linux-gnu --host=arm-linux-gnu

即可,不过某些东西还是要设置下cache-file的.
#absurd 发表于2006-09-29 20:49:00  IP: 211.161.63.*
to falls: 可能没有那么简单,你不防试试。
#falls 发表于2006-09-30 11:55:00  IP: 218.22.45.*
呵呵,我忘了说,我是在scratchbox下用这种方式试的。

scratchbox 下编译arm9(mmu)程序就是那么简单。

我还说复杂了点,在sbox 下只需要

./configure 即可

btw: 怎么现在不用tinyX 了呢? 用directfb了?
#absurd 发表于2006-10-06 19:34:00  IP: 220.112.36.*
to falls: 对,改用directfb了
#falls 发表于2006-10-07 16:38:00  IP: 220.114.128.*
1.不知道你用的哪个版本的gtk+directfb
如果是gtk 2.8/2.10 ,这2个版本的效率比2.6差了不少.
如果是gtk 2.6 , 其directfb的补丁也不是稳定到能做产品的地步.

性能评价:
http://mail.gnome.org/archives/performance-list/2006-July/msg00084.html

2. gtk-directfb要比gtk-x11节省大概4M左右的内存(我的经验),但我个人认为如果你的内存有64M sdram, 那么用gtk-x11的方案也并不是不可以. 像nokia 770就是用的gtk+x11的方案.

3. 有兴趣的话,可以加我的msn ,我们2个做的东西非常相似,不过我是做cdma,你是做GSM 的 :)




#absurd 发表于2006-10-07 19:25:00  IP: 220.112.36.*
to falls: 呵,遇到行家了。GTK+2.6没有用cairo,所以速度会快一点
#weimecky 发表于2008-07-06 13:02:57  IP: 222.210.160.*
gtk 2.6 +x11的模式在312Mhz的PXA270上跑很吃力,不知道absurd大侠有没有这方面经验。我有几个问题:
1 你们目前的平台是624Mhz的cpu,请问一下可执行启动一个譬如短信、电话本等应用要多少时间?
2 gtk+dfb在内存上节省一些,当时速度上呢?
3 gtk2.6有没有进一步优化的措施,比如像网上所说的浮点数支持改为fixed-point模式等

我的msn:wang_wei_zte@hotmail.com,能否加个好友,谢谢
2008-07-07 20:43:06作者回复
1 GUI速度其实很快,打开窗口马上可以出来,加载数据耽误了时间。<br />2 gtk+dfb根本没有什么优势,dfb是很快,但是GTK太慢了,特别是窗口上widget很多时。<br />3 GUI中float用得很少,EABI已经做了优化,fixed-point模式未必有什么效果。我想简化界面和优化数据加载更有效。
Csdn Blog version 3.1a
Copyright © 李先静