主题 : 开发板sqlite3安装 交叉编译问题 复制链接 | 浏览器收藏 | 打印
级别: 侠客
UID: 4270
精华: 0
发帖: 100
金钱: 995 两
威望: 856 点
综合积分: 200 分
注册时间: 2009-03-07
最后登录: 2011-09-06
楼主  发表于: 2009-08-08 21:36

 开发板sqlite3安装 交叉编译问题

管理提醒: 本帖被 qq2440 从 micro2440技术交流专区 移动到本区(2013-11-18)
开发板micro2440 sqlite3安装 交叉编译问题

环境
redhat9.0
arm-linux-gcc 3.4.1; arm-linux-gcc 4.3.2
sqlite 3.6.16; sqlite 3.6.1
(使用了两个版本实验)


问题一
在交叉编译sqlite3时出现了问题,具体方法就不罗列了,用了相同的方法使用3.4.1和4.3.2,使用3.4.1编译通过,而4.3.2却出现问题:
Sqlite-3.6.1
cd .&&/bin/sh /opt/file/sqlite/sqlite-amalgamation-3.6.1/missing --run autoconf
configure.ac: 10:error: Autoconf version 2.6.1 or higher is required
configure.ac:10: the top level
autom4te:/usr/bin/m4/ failed with exit status: 1
make: ***[configure]Error 1
Sqlite-3.6.16
arm-none-linux-gnueabi-gcc:3.6.16” :No such file or directory
<command-line>:warning: missing terminating “ character
make: ***[sqlite3.lo]Error 1

不知道如何解决,从方法上看是编译器匹配问题,不知道是否有朋友也遇到此问题???


问题二
使用3.4.1编译之后,下载到开发板,测试
开发板使用 linux 2.6.13(friendly)+旧版的root-qtopia+sqlite3测试,没有问题。。。
开发板使用 linux 2.6.29(friendly)+最新的root_qtopia+sqlite3测试,出现问题:-/bin/sh: sqlite3: not found
经过多次测试,由于新的root_qtopia使用编译器4.3.2,而我的sqlite3 是通过3.4.1编译的,而sqlite3依赖arm-linux的库文件,因此,试着将3.4.1的动态库*.so.*以及*.so 放入新的root_qtopia文件系统里,增加环境变量 export LD_LIBRARY_PATH=3.4.1动态库路径:$LD_LIBRARY_PATH,之后出现:
[root@FriendlyARM /usr]# ls
ls: /usr/local/sqlite/lib/libcrypt.so.1: version `GLIBC_2.4' not found (required by ls)
ls: /usr/local/sqlite/lib/libm.so.6: version `GLIBC_2.4' not found (required by ls)
ls: /usr/local/sqlite/lib/libc.so.6: version `GLIBC_2.4' not found (required by ls)
这种方式看来不行,上面可能是屏蔽了4.3.2的动态库,而使用了我指定的3.4.1的库。。。
不知道使用3.4.1编译的sqlite3能否放到4.3.2的root中运行???
看到旧版中的文件系统,Qt使用3.3.2的编译器,不知道旧版的根文件系统busybox制作的文件系统 是用的3.4.1么???如果是,应该如何链接我的3.4.1的库来解决这个问题呢???)
[ 此帖被cug07104416在2009-08-08 21:49重新编辑 ]
本论坛不提供技术支持,这里是友善之臂用户交流的地方,希望大家共创和谐论坛~~~
级别: 侠客
UID: 4270
精华: 0
发帖: 100
金钱: 995 两
威望: 856 点
综合积分: 200 分
注册时间: 2009-03-07
最后登录: 2011-09-06
1楼  发表于: 2009-09-20 22:04
上网查了很久,一直没找到相关问题。。。本来怀疑是编译器和sqlite3匹配问题,但刚刚使用sd卡登录了android系统,发现里面已经安装了sqlite3软件,而本论坛提供的android使用编译器4.3.2,因此可以排除 我的猜想。。。
直接修改Makefile文件,屏蔽掉出错的那一项
#DEFS = ......
编译通过,生成了需要的文件。。。
(再找个时间试试,是否可用)
本论坛不提供技术支持,这里是友善之臂用户交流的地方,希望大家共创和谐论坛~~~
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
2楼  发表于: 2009-09-21 09:53
Sqlite-3.6.1
cd .&&/bin/sh /opt/file/sqlite/sqlite-amalgamation-3.6.1/missing --run autoconf
configure.ac: 10:error: Autoconf version 2.6.1 or higher is required
configure.ac:10: the top level
autom4te:/usr/bin/m4/ failed with exit status: 1
make: ***[configure]Error 1

这和交叉编译器没关系,是PC上的autoconf版本太旧了,sqlite-3.6.1要求至少是2.6.1的

Sqlite-3.6.16
arm-none-linux-gnueabi-gcc:3.6.16” :No such file or directory
<command-line>:warning: missing terminating “ character
make: ***[sqlite3.lo]Error 1

给出完整的编译log。(可以用make 2>&1 |tee build.log)

开发板使用 linux 2.6.29(friendly)+最新的root_qtopia+sqlite3测试,出现问题:-/bin/sh: sqlite3: not found

linux 2.6.29 + root_qtopia支持的ABI类型是EABI,你用3.4.1版本的交叉编译器编译出来的执行档是OABI的,当然无法运行,而且和它依赖的开发板上其他的库文件也会因为ABI类型不同而无法链接。要使用2.6.29 + root_qtopia,你必须用支持EABI的交叉编译器(比如4.3.2的)编译sqlite3
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 侠客
UID: 4270
精华: 0
发帖: 100
金钱: 995 两
威望: 856 点
综合积分: 200 分
注册时间: 2009-03-07
最后登录: 2011-09-06
3楼  发表于: 2009-09-21 10:26
多谢kasim大侠

build.log内容:
if /bin/sh ./libtool --tag=CC --mode=compile arm-linux-gcc -DPACKAGE_NAME=\"sqlite\" -DPACKAGE_TARNAME=\"sqlite\" -DPACKAGE_VERSION=\"3.6.16\" -DPACKAGE_STRING=\"sqlite\ 3.6.16\" -DPACKAGE_BUGREPORT=\"http://www.sqlite.org\" -DPACKAGE=\"sqlite\" -DVERSION=\"3.6.16\" -D_FILE_OFFSET_BITS=64 -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DHAVE_FDATASYNC=1 -DHAVE_USLEEP=1 -DHAVE_LOCALTIME_R=1 -DHAVE_GMTIME_R=1 -I. -I.    -DSQLITE_THREADSAFE=1  -g -O2 -MT sqlite3.lo -MD -MP -MF ".deps/sqlite3.Tpo" -c -o sqlite3.lo sqlite3.c; \
then mv -f ".deps/sqlite3.Tpo" ".deps/sqlite3.Plo"; else rm -f ".deps/sqlite3.Tpo"; exit 1; fi
mkdir .libs
arm-linux-gcc -DPACKAGE_NAME=\"sqlite\" -DPACKAGE_TARNAME=\"sqlite\" -DPACKAGE_VERSION=\"3.6.16\" "-DPACKAGE_STRING=\"sqlite 3.6.16\"" -DPACKAGE_BUGREPORT=\"http://www.sqlite.org\" -DPACKAGE=\"sqlite\" -DVERSION=\"3.6.16\" -D_FILE_OFFSET_BITS=64 -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DHAVE_FDATASYNC=1 -DHAVE_USLEEP=1 -DHAVE_LOCALTIME_R=1 -DHAVE_GMTIME_R=1 -I. -I. -DSQLITE_THREADSAFE=1 -g -O2 -MT sqlite3.lo -MD -MP -MF .deps/sqlite3.Tpo -c sqlite3.c  -fPIC -DPIC -o .libs/sqlite3.o
arm-none-linux-gnueabi-gcc: 3.6.16": No such file or directory
<command-line>: warning: missing terminating " character
make: *** [sqlite3.lo] Error 1
描述:build.log  config.log
附件: build-config.rar (9 K) 下载次数:9
本论坛不提供技术支持,这里是友善之臂用户交流的地方,希望大家共创和谐论坛~~~
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
4楼  发表于: 2009-09-21 10:35
我想问题出在红色部分,似乎多了一个":
arm-linux-gcc -DPACKAGE_NAME=\"sqlite\" -DPACKAGE_TARNAME=\"sqlite\" -DPACKAGE_VERSION=\"3.6.16\" "-DPACKAGE_STRING=\"sqlite 3.6.16\"" -DPACKAGE_BUGREPORT=\"http://www.sqlite.org\" -DPACKAGE=\"sqlite\" -DVERSION=\"3.6.16\" -D_FILE_OFFSET_BITS=64 -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DHAVE_FDATASYNC=1 -DHAVE_USLEEP=1 -DHAVE_LOCALTIME_R=1 -DHAVE_GMTIME_R=1 -I. -I. -DSQLITE_THREADSAFE=1 -g -O2 -MT sqlite3.lo -MD -MP -MF .deps/sqlite3.Tpo -c sqlite3.c  -fPIC -DPIC -o .libs/sqlite3.o
你可以试试把上面的命令复制下来,去掉多余“,然后在命令行上手动执行一下上面的命令。

configure的时候,PACKAGE_STRING的时候是这样定义的:
DEFS='-DPACKAGE_NAME=\"sqlite\" -DPACKAGE_TARNAME=\"sqlite\" -DPACKAGE_VERSION=\"3.6.16\" -DPACKAGE_STRING=\"sqlite\ 3.6.16\" -DPACKAGE_BUGREPORT=\"http://www.sqlite.org\" -DPACKAGE=\"sqlite\" -DVERSION=\"3.6.16\" -D_FILE_OFFSET_BITS=64 -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DHAVE_FDATASYNC=1 -DHAVE_USLEEP=1 -DHAVE_LOCALTIME_R=1 -DHAVE_GMTIME_R=1'
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 侠客
UID: 4270
精华: 0
发帖: 100
金钱: 995 两
威望: 856 点
综合积分: 200 分
注册时间: 2009-03-07
最后登录: 2011-09-06
5楼  发表于: 2009-09-21 11:44
谢谢kasim

"-DPACKAGE_STRING=\"sqlite 3.6.16\""  左右的“”应该是对称的
我尝试了去掉右边的”,终端输入命令,进入 > 状态
去掉左右的“”,还是出现相同的问题

下面是3.4.1编译 sqlite3 的build.log   编译没有出现问题
if /bin/sh ./libtool --tag=CC --mode=compile arm-linux-gcc -DPACKAGE_NAME=\"sqlite\" -DPACKAGE_TARNAME=\"sqlite\" -DPACKAGE_VERSION=\"3.6.16\" -DPACKAGE_STRING=\"sqlite\ 3.6.16\" -DPACKAGE_BUGREPORT=\"http://www.sqlite.org\" -DPACKAGE=\"sqlite\" -DVERSION=\"3.6.16\" -D_FILE_OFFSET_BITS=64 -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DHAVE_FDATASYNC=1 -DHAVE_USLEEP=1 -DHAVE_LOCALTIME_R=1 -DHAVE_GMTIME_R=1 -I. -I.    -DSQLITE_THREADSAFE=1  -g -O2 -MT sqlite3.lo -MD -MP -MF ".deps/sqlite3.Tpo" -c -o sqlite3.lo sqlite3.c; \
then mv -f ".deps/sqlite3.Tpo" ".deps/sqlite3.Plo"; else rm -f ".deps/sqlite3.Tpo"; exit 1; fi
arm-linux-gcc -DPACKAGE_NAME=\"sqlite\" -DPACKAGE_TARNAME=\"sqlite\" -DPACKAGE_VERSION=\"3.6.16\" "-DPACKAGE_STRING=\"sqlite 3.6.16\"" -DPACKAGE_BUGREPORT=\"http://www.sqlite.org\" -DPACKAGE=\"sqlite\" -DVERSION=\"3.6.16\" -D_FILE_OFFSET_BITS=64 -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DHAVE_FDATASYNC=1 -DHAVE_USLEEP=1 -DHAVE_LOCALTIME_R=1 -DHAVE_GMTIME_R=1 -I. -I. -DSQLITE_THREADSAFE=1 -g -O2 -MT sqlite3.lo -MD -MP -MF .deps/sqlite3.Tpo -c sqlite3.c  -fPIC -DPIC -o .libs/sqlite3.o
arm-linux-gcc -DPACKAGE_NAME=\"sqlite\" -DPACKAGE_TARNAME=\"sqlite\" -DPACKAGE_VERSION=\"3.6.16\" "-DPACKAGE_STRING=\"sqlite 3.6.16\"" -DPACKAGE_BUGREPORT=\"http://www.sqlite.org\" -DPACKAGE=\"sqlite\" -DVERSION=\"3.6.16\" -D_FILE_OFFSET_BITS=64 -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DHAVE_FDATASYNC=1 -DHAVE_USLEEP=1 -DHAVE_LOCALTIME_R=1 -DHAVE_GMTIME_R=1 -I. -I. -DSQLITE_THREADSAFE=1 -g -O2 -MT sqlite3.lo -MD -MP -MF .deps/sqlite3.Tpo -c sqlite3.c -o sqlite3.o >/dev/null 2>&1
/bin/sh ./libtool --tag=CC --mode=link arm-linux-gcc -DSQLITE_THREADSAFE=1  -g -O2   -o libsqlite3.la -rpath /opt/filesys/sqlite3/install/lib -no-undefined -version-info 8:6:8 sqlite3.lo  -ldl -lpthread
arm-linux-gcc -shared  .libs/sqlite3.o  -ldl -lpthread  -Wl,-soname -Wl,libsqlite3.so.0 -o .libs/libsqlite3.so.0.8.6
(cd .libs && rm -f libsqlite3.so.0 && ln -s libsqlite3.so.0.8.6 libsqlite3.so.0)
(cd .libs && rm -f libsqlite3.so && ln -s libsqlite3.so.0.8.6 libsqlite3.so)
arm-linux-ar cru .libs/libsqlite3.a  sqlite3.o
arm-linux-ranlib .libs/libsqlite3.a
creating libsqlite3.la
(cd .libs && rm -f libsqlite3.la && ln -s ../libsqlite3.la libsqlite3.la)
if arm-linux-gcc -DPACKAGE_NAME=\"sqlite\" -DPACKAGE_TARNAME=\"sqlite\" -DPACKAGE_VERSION=\"3.6.16\" -DPACKAGE_STRING=\"sqlite\ 3.6.16\" -DPACKAGE_BUGREPORT=\"http://www.sqlite.org\" -DPACKAGE=\"sqlite\" -DVERSION=\"3.6.16\" -D_FILE_OFFSET_BITS=64 -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DHAVE_FDATASYNC=1 -DHAVE_USLEEP=1 -DHAVE_LOCALTIME_R=1 -DHAVE_GMTIME_R=1 -I. -I.    -DSQLITE_THREADSAFE=1  -g -O2 -MT shell.o -MD -MP -MF ".deps/shell.Tpo" -c -o shell.o shell.c; \
then mv -f ".deps/shell.Tpo" ".deps/shell.Po"; else rm -f ".deps/shell.Tpo"; exit 1; fi
/bin/sh ./libtool --tag=CC --mode=link arm-linux-gcc -DSQLITE_THREADSAFE=1  -g -O2   -o sqlite3  shell.o ./libsqlite3.la  -ldl -lpthread
arm-linux-gcc -DSQLITE_THREADSAFE=1 -g -O2 -o .libs/sqlite3 shell.o  ./.libs/libsqlite3.so -ldl -lpthread  -Wl,--rpath -Wl,/opt/filesys/sqlite3/install/lib
creating sqlite3
描述:3.4.1编译的build.log  config.log
附件: build-cnfig(3.4.1).rar (9 K) 下载次数:7
本论坛不提供技术支持,这里是友善之臂用户交流的地方,希望大家共创和谐论坛~~~
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
6楼  发表于: 2009-09-21 12:15
那恐怕就是中间空格的问题了,试试把-DPACKAGE_STRING=\"sqlite 3.6.16\"改成-DPACKAGE_STRING=\"sqlite_3.6.16\"
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 侠客
UID: 4270
精华: 0
发帖: 100
金钱: 995 两
威望: 856 点
综合积分: 200 分
注册时间: 2009-03-07
最后登录: 2011-09-06
7楼  发表于: 2009-09-21 15:25
还是kasim大侠仔细啊,果然是空格的问题
在下眼拙,一直没看出来,唉,应该是对问题的钻研不够啊。。。遇到问题就去搜索了,缺乏了自我分析问题的能力,以后得注意了。。。   非常感谢kasim版主
本论坛不提供技术支持,这里是友善之臂用户交流的地方,希望大家共创和谐论坛~~~
Where is the door?
级别: 新手上路
UID: 10003
精华: 0
发帖: 25
金钱: 125 两
威望: 25 点
综合积分: 50 分
注册时间: 2009-10-21
最后登录: 2012-02-17
8楼  发表于: 2011-02-28 10:13
谢谢楼主的问题和斑竹的解答,同样遇到这样的问题,解决了!