rss· 投稿· 设为首页· 加入收藏· 繁體版
当前位置: 火魔网 » 数据库 » SQLite

交叉编译sqlite3在mipsel中

参考了这篇文章:http://blog.csdn.net/archsh/archive/2005/06/16/395792.aspx1、不要使用./configure进行autoconf,因为这样配置不成功,会出错;
2、直接修改:Makefile.linux-gcc
 TCC = mipsel-linux-uclibc-gcc -O6
 AR = mipsel-linux-uclibc-ar cr
 RANLIB = mipsel-linux-uclibc-ranlib
 STRIP = mipsel-linux-uclibc-strip (我自己添加的,用于在make install的时候自动将sqlite文件strip)

取消readline:
 READLINE_FLAGS =
LIBREADLINE = -ldl

如果不改会报错:undefined reference to `dlopen'

取消TCL:

TCL_FLAGS =

LIBTCL =

TCLOBJ =

3、为了install到你希望的地方去,而非/usr目录,修改main.mk文件:
install:        sqlite3 libsqlite3.a sqlite3.h
        mkdir -p ${INSTALL}/bin
        mkdir -p ${INSTALL}/lib
        mkdir -p ${INSTALL}/include
 ${STRIP} sqlite3
        mv sqlite3 ${INSTALL}/bin
        mv libsqlite3.a ${INSTALL}/lib
        mv sqlite3.h ${INSTALL}/include

 (以上INSTALL是我自己增设的变量,该变量可以在Makefile.linux-gcc里面声明赋值。另外,如果是3以前的版本,以上的数字3去掉)
4、make -f Makefile.linux-gcc
5、make -f Makefile.linux-gcc install

:dso_dlfcn.c:(.text+0x45): undefined reference to `dlopen'
:dso_dlfcn.c:(.text+0xc4): undefined reference to `dlclose'
:dso_dlfcn.c:(.text+0x102): undefined reference to `dlerror'
解决方法:
在Makefile中的链接参数加上 -ldl就可以解决了

我的配置:

Makefile.linux-gcc:

#!/usr/make
#
# Makefile for SQLITE
#
# This is a template makefile for SQLite.  Most people prefer to
# use the autoconf generated "configure" script to generate the
# makefile automatically.  But that does not work for everybody
# and in every situation.  If you are having problems with the
# "configure" script, you might want to try this makefile as an
# alternative.  Create a copy of this file, edit the parameters
# below and type "make".
##### The toplevel directory of the source tree.  This is the directory
#    that contains this "Makefile.in" and the "configure.in" script.
#
TOP = .#### C Compiler and options for use in building executables that
#    will run on the platform that is doing the build.
#
BCC = gcc -g -O2
#BCC = /opt/ancic/bin/c89 -0#### If the target operating system supports the "usleep()" system
#    call, then define the HAVE_USLEEP macro for all C modules.
#
#USLEEP =
USLEEP = -DHAVE_USLEEP=1#### If you want the SQLite library to be safe for use within a
#    multi-threaded program, then define the following macro
#    appropriately:
#
#THREADSAFE = -DTHREADSAFE=1
THREADSAFE = -DTHREADSAFE=0#### Specify any extra linker options needed to make the library
#    thread safe
#
THREADLIB = -lpthread
#THREADLIB = #### Specify any extra libraries needed to access required functions.
#
#TLIBS = -lrt    # fdatasync on Solaris 8
TLIBS = #### Leave SQLITE_DEBUG undefined for maximum speed.  Use SQLITE_DEBUG=1
#    to check for memory leaks.  Use SQLITE_DEBUG=2 to print a log of all
#    malloc()s and free()s in order to track down memory leaks.
#   
#    SQLite uses some expensive assert() statements in the inner loop.
#    You can make the library go almost twice as fast if you compile
#    with -DNDEBUG=1
#
#OPTS = -DSQLITE_DEBUG=2
#OPTS = -DSQLITE_DEBUG=1
#OPTS =
OPTS = -DNDEBUG=1
OPTS += -DHAVE_FDATASYNC=1#### The suffix to add to executable files.  ".exe" for windows.
#    Nothing for unix.
#
#EXE = .exe
EXE =#### C Compile and options for use in building executables that
#    will run on the target platform.  This is usually the same
#    as BCC, unless you are cross-compiling.
#
TCC = mipsel-linux-uclibc-gcc
#TCC = gcc -O6
#TCC = gcc -g -O0 -Wall
#TCC = gcc -g -O0 -Wall -fprofile-arcs -ftest-coverage
#TCC = /opt/mingw/bin/i386-mingw32-gcc -O6
#TCC = /opt/ansic/bin/c89 -O +z -Wl,-a,archive#### Tools used to build a static library.
#
AR = mipsel-linux-uclibc-ar cr
#AR = ar cr
#AR = /opt/mingw/bin/i386-mingw32-ar cr
RANLIB = mipsel-linux-uclibc-ranlib
#RANLIB = ranlib
#RANLIB = /opt/mingw/bin/i386-mingw32-ranlibMKSHLIB = gcc -shared
SO = so
SHPREFIX = lib
# SO = dll
# SHPREFIX =#### Extra compiler options needed for programs that use the TCL library.
#
TCL_FLAGS =
#TCL_FLAGS = -DSTATIC_BUILD=1
#TCL_FLAGS = -I/home/drh/tcltk/8.4linux
#TCL_FLAGS = -I/home/drh/tcltk/8.4win -DSTATIC_BUILD=1
#TCL_FLAGS = -I/home/drh/tcltk/8.3hpux#### Linker options needed to link against the TCL library.
#
LIBTCL =
#LIBTCL = -ltcl -lm -ldl
#LIBTCL = /home/drh/tcltk/8.4linux/libtcl8.4g.a -lm -ldl
#LIBTCL = /home/drh/tcltk/8.4win/libtcl84s.a -lmsvcrt
#LIBTCL = /home/drh/tcltk/8.3hpux/libtcl8.3.a -ldld -lm -lc#### Additional objects for SQLite library when TCL support is enabled.
TCLOBJ =
#TCLOBJ = tclsqlite.o#### Compiler options needed for programs that use the readline() library.
#
READLINE_FLAGS =
#READLINE_FLAGS = -DHAVE_READLINE=1 -I/usr/include/readline#### Linker options needed by programs using readline() must link against.
#
LIBREADLINE = -ldl
#LIBREADLINE = -static -lreadline -ltermcap#### Which "awk" program provides nawk compatibilty
#
# NAWK = nawk
NAWK = awk# You should not have to change anything below this line
###############################################################################
include $(TOP)/main.mk

顶一下
(0)
踩一下
(0)