Sqlite3.8.1移植到TQ2416(在ARM-Linux平台上移植SQLite)

在ARM-Linux平台上移植SQLite,Port SQLite to ARM-Linux Platform.
一,交叉编译器:
arm-linux-gcc-4.4.1

二、移植步骤
下载源码
http://www.sqlite.org/2013/sqlite-autoconf-3080100.tar.gz

1.解压压缩包并改名进入解压后的目录,如下:

cd sqlite3.8.1

2.创建一个目录_install并进入该目录,用于在这个目录中进行交叉编译,如下:
mkdir _install
cd _install

3.在_install目录中运行sqlite3.8.1中的configure脚本生成Makefile文件,如下:
../configure CC=arm-linux-gcc --host=arm-linux --prefix=/home/gl/e/sqlite3.8.1/_install
选项host指定的是用arm交叉编译器(非交叉环境不用指定)进行编译 选项prefix后面的路径是到时候编译安装后目标存放的目录,

  1. [root@austgl _install]# ../configure CC=arm-linux-gcc --host=arm-linux --prefix=/home/gl/e/sqlite3.8.1/_install/  
  2. checking for a BSD-compatible install... /usr/bin/install -c  
  3. checking whether build environment is sane... yes  
  4. checking for arm-linux-strip... arm-linux-strip  
  5. checking for a thread-safe mkdir -p... /usr/bin/mkdir -p  
  6. checking for gawk... gawk  
  7. checking whether make sets $(MAKE)... yes  
  8. checking for style of include used by make... GNU  
  9. checking for arm-linux-gcc... arm-linux-gcc  
  10. checking whether the C compiler works... yes  
  11. checking for C compiler default output file name... a.out  
  12. checking for suffix of executables...   
  13. checking whether we are cross compiling... yes  
  14. checking for suffix of object files... o  
  15. checking whether we are using the GNU C compiler... yes  
  16. checking whether arm-linux-gcc accepts -g... yes  
  17. checking for arm-linux-gcc option to accept ISO C89... none needed  
  18. checking dependency style of arm-linux-gcc... gcc3  
  19. checking for special C compiler options needed for large files... no  
  20. checking for _FILE_OFFSET_BITS value needed for large files... 64  
  21. checking for arm-linux-gcc... (cached) arm-linux-gcc  
  22. checking whether we are using the GNU C compiler... (cached) yes  
  23. checking whether arm-linux-gcc accepts -g... (cached) yes  
  24. checking for arm-linux-gcc option to accept ISO C89... (cached) none needed  
  25. checking dependency style of arm-linux-gcc... (cached) gcc3  
  26. checking for arm-linux-ranlib... arm-linux-ranlib  
  27. checking build system type... x86_64-unknown-linux-gnu  
  28. checking host system type... arm-unknown-linux-gnu  
  29. checking how to print strings... printf  
  30. checking for a sed that does not truncate output... /usr/bin/sed  
  31. checking for grep that handles long lines and -e... /usr/bin/grep  
  32. checking for egrep... /usr/bin/grep -E  
  33. checking for fgrep... /usr/bin/grep -F  
  34. checking for ld used by arm-linux-gcc... /home/gl/e/4.4.3/arm-none-linux-gnueabi/bin/ld  
  35. checking if the linker (/home/gl/e/4.4.3/arm-none-linux-gnueabi/bin/ld) is GNU ld... yes  
  36. checking for BSD- or MS-compatible name lister (nm)... /home/gl/e/4.4.3/bin/arm-linux-nm -B  
  37. checking the name lister (/home/gl/e/4.4.3/bin/arm-linux-nm -B) interface... BSD nm  
  38. checking whether ln -s works... yes  
  39. checking the maximum length of command line arguments... 1572864  
  40. checking whether the shell understands some XSI constructs... yes  
  41. checking whether the shell understands "+="... yes  
  42. checking how to convert x86_64-unknown-linux-gnu file names to arm-unknown-linux-gnu format... func_convert_file_noop  
  43. checking how to convert x86_64-unknown-linux-gnu file names to toolchain format... func_convert_file_noop  
  44. checking for /home/gl/e/4.4.3/arm-none-linux-gnueabi/bin/ld option to reload object files... -r  
  45. checking for arm-linux-objdump... arm-linux-objdump  
  46. checking how to recognize dependent libraries... pass_all  
  47. checking for arm-linux-dlltool... no  
  48. checking for dlltool... no  
  49. checking how to associate runtime and link libraries... printf %s\n  
  50. checking for arm-linux-ar... arm-linux-ar  
  51. checking for archiver @FILE support... @  
  52. checking for arm-linux-strip... (cached) arm-linux-strip  
  53. checking for arm-linux-ranlib... (cached) arm-linux-ranlib  
  54. checking command to parse /home/gl/e/4.4.3/bin/arm-linux-nm -B output from arm-linux-gcc object... ok  
  55. checking for sysroot... no  
  56. checking for arm-linux-mt... no  
  57. checking for mt... no  
  58. checking if : is a manifest tool... no  
  59. checking how to run the C preprocessor... arm-linux-gcc -E  
  60. checking for ANSI C header files... yes  
  61. checking for sys/types.h... yes  
  62. checking for sys/stat.h... yes  
  63. checking for stdlib.h... yes  
  64. checking for string.h... yes  
  65. checking for memory.h... yes  
  66. checking for strings.h... yes  
  67. checking for inttypes.h... yes  
  68. checking for stdint.h... yes  
  69. checking for unistd.h... yes  
  70. checking for dlfcn.h... yes  
  71. checking for objdir... .libs  
  72. checking if arm-linux-gcc supports -fno-rtti -fno-exceptions... no  
  73. checking for arm-linux-gcc option to produce PIC... -fPIC -DPIC  
  74. checking if arm-linux-gcc PIC flag -fPIC -DPIC works... yes  
  75. checking if arm-linux-gcc static flag -static works... yes  
  76. checking if arm-linux-gcc supports -c -o file.o... yes  
  77. checking if arm-linux-gcc supports -c -o file.o... (cached) yes  
  78. checking whether the arm-linux-gcc linker (/home/gl/e/4.4.3/arm-none-linux-gnueabi/bin/ld) supports shared libraries... yes  
  79. checking whether -lc should be explicitly linked in... no  
  80. checking dynamic linker characteristics... GNU/Linux ld.so  
  81. checking how to hardcode library paths into programs... immediate  
  82. checking whether stripping libraries is possible... yes  
  83. checking if libtool supports shared libraries... yes  
  84. checking whether to build shared libraries... yes  
  85. checking whether to build static libraries... yes  
  86. checking for fdatasync... yes  
  87. checking for usleep... yes  
  88. checking for fullfsync... no  
  89. checking for localtime_r... yes  
  90. checking for gmtime_r... yes  
  91. checking whether strerror_r is declared... yes  
  92. checking for strerror_r... yes  
  93. checking whether strerror_r returns char *... no  
  94. checking for library containing tgetent... no  
  95. checking for library containing readline... no  
  96. checking for readline... no  
  97. checking for library containing pthread_create... -lpthread  
  98. checking for library containing dlopen... -ldl  
  99. checking for whether to support dynamic extensions... yes  
  100. checking for posix_fallocate... yes  
  101. configure: creating ./config.status  
  102. config.status: creating Makefile  
  103. config.status: creating sqlite3.pc  
  104. config.status: executing depfiles commands  
  105. config.status: executing libtool commands  

4.执行make和make install命令,如下:
make

  1. [root@austgl _install]# ml]# make  
  2. /bin/sh ./libtool --tag=CC   --mode=compile arm-linux-gcc -DPACKAGE_NAME=\"sqlite\" -DPACKAGE_TARNAME=\"sqlite\" -DPACKAGE_VERSION=\"3.8.1\" -DPACKAGE_STRING=\"sqlite\ 3.8.1\" -DPACKAGE_BUGREPORT=\"http://www.sqlite.org\" -DPACKAGE_URL=\"\" -DPACKAGE=\"sqlite\" -DVERSION=\"3.8.1\" -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 -DLT_OBJDIR=\".libs/\" -DHAVE_FDATASYNC=1 -DHAVE_USLEEP=1 -DHAVE_LOCALTIME_R=1 -DHAVE_GMTIME_R=1 -DHAVE_DECL_STRERROR_R=1 -DHAVE_STRERROR_R=1 -DHAVE_POSIX_FALLOCATE=1 -I. -I..    -D_REENTRANT=1 -DSQLITE_THREADSAFE=1  -DSQLITE_ENABLE_FTS3 -DSQLITE_ENABLE_RTREE -g -O2 -MT sqlite3.lo -MD -MP -MF .deps/sqlite3.Tpo -c -o sqlite3.lo ../sqlite3.c  
  3. libtool: link: arm-linux-gcc -D_REENTRANT=1 -DSQLITE_THREADSAFE=1 -DSQLITE_ENABLE_FTS3 -DSQLITE_ENABLE_RTREE -g -O2 -o .libs/sqlite3 shell.o  ./.libs/libsqlite3.so -ldl -lpthread -Wl,-rpath -Wl,/home/gl/e/sqlite3.8.1/_install/lib  
  4. [root@austgl _install]# ls  
  5. config.log  config.status  libsqlite3.la  libtool  Makefile  shell.o  sqlite3  sqlite3.lo  sqlite3.o  sqlite3.pc  

make install

  1. [root@austgl _install]# make install  
  2. make[1]: 进入目录“/home/gl/e/sqlite3.8.1/_install”  
  3.  /usr/bin/mkdir -p '/home/gl/e/sqlite3.8.1/_install/lib'  
  4.  /bin/sh ./libtool   --mode=install /usr/bin/install -c   libsqlite3.la '/home/gl/e/sqlite3.8.1/_install/lib'  
  5. libtool: install: /usr/bin/install -c .libs/libsqlite3.so.0.8.6 /home/gl/e/sqlite3.8.1/_install/lib/libsqlite3.so.0.8.6  
  6. libtool: install: (cd /home/gl/e/sqlite3.8.1/_install/lib && { ln -s -f libsqlite3.so.0.8.6 libsqlite3.so.0 || { rm -f libsqlite3.so.0 && ln -s libsqlite3.so.0.8.6 libsqlite3.so.0; }; })  
  7. libtool: install: (cd /home/gl/e/sqlite3.8.1/_install/lib && { ln -s -f libsqlite3.so.0.8.6 libsqlite3.so || { rm -f libsqlite3.so && ln -s libsqlite3.so.0.8.6 libsqlite3.so; }; })  
  8. libtool: install: /usr/bin/install -c .libs/libsqlite3.lai /home/gl/e/sqlite3.8.1/_install/lib/libsqlite3.la  
  9. libtool: install: /usr/bin/install -c .libs/libsqlite3.a /home/gl/e/sqlite3.8.1/_install/lib/libsqlite3.a  
  10. libtool: install: chmod 644 /home/gl/e/sqlite3.8.1/_install/lib/libsqlite3.a  
  11. libtool: install: arm-linux-ranlib /home/gl/e/sqlite3.8.1/_install/lib/libsqlite3.a  
  12. libtool: finish: PATH="/usr/lib64/qt-3.3/bin:/usr/lib64/ccache:/usr/local/bin:/usr/bin:/bin:/usr/games:/usr/local/sbin:/usr/sbin:/home/gl/.local/bin:/home/gl/bin:/home/gl/e/4.4.3/bin:/home/gl/e/arm-2013.05:/sbin" ldconfig -n /home/gl/e/sqlite3.8.1/_install/lib  
  13. ldconfig: /home/gl/e/sqlite3.8.1/_install/lib/libsqlite3.so.0.8.6 is for unknown machine 40.  
  14.   
  15. ldconfig: /home/gl/e/sqlite3.8.1/_install/lib/libsqlite3.so is for unknown machine 40.  
  16.   
  17. ldconfig: /home/gl/e/sqlite3.8.1/_install/lib/libsqlite3.so.0 is for unknown machine 40.  
  18.   
  19. ----------------------------------------------------------------------  
  20. Libraries have been installed in:  
  21.    /home/gl/e/sqlite3.8.1/_install/lib  
  22.   
  23. If you ever happen to want to link against installed libraries  
  24. in a given directory, LIBDIR, you must either use libtool, and  
  25. specify the full pathname of the libraryor use the `-LLIBDIR'  
  26. flag during linking and do at least one of the following:  
  27.    - add LIBDIR to the `LD_LIBRARY_PATH' environment variable  
  28.      during execution  
  29.    - add LIBDIR to the `LD_RUN_PATH' environment variable  
  30.      during linking  
  31.    - use the `-Wl,-rpath -Wl,LIBDIR' linker flag  
  32.    - have your system administrator add LIBDIR to `/etc/ld.so.conf'  
  33.   
  34. See any operating system documentation about shared libraries for  
  35. more information, such as the ld(1and ld.so(8) manual pages.  
  36. ----------------------------------------------------------------------  
  37.  /usr/bin/mkdir -p '/home/gl/e/sqlite3.8.1/_install/bin'  
  38.   /bin/sh ./libtool   --mode=install /usr/bin/install -c sqlite3 '/home/gl/e/sqlite3.8.1/_install/bin'  
  39. libtool: install: /usr/bin/install -c .libs/sqlite3 /home/gl/e/sqlite3.8.1/_install/bin/sqlite3  
  40.  /usr/bin/mkdir -p '/home/gl/e/sqlite3.8.1/_install/include'  
  41.  /usr/bin/install -c -m 644 ../sqlite3.h ../sqlite3ext.h '/home/gl/e/sqlite3.8.1/_install/include'  
  42.  /usr/bin/mkdir -p '/home/gl/e/sqlite3.8.1/_install/share/man/man1'  
  43.  /usr/bin/install -c -m 644 ../sqlite3.1 '/home/gl/e/sqlite3.8.1/_install/share/man/man1'  
  44.  /usr/bin/mkdir -p '/home/gl/e/sqlite3.8.1/_install/lib/pkgconfig'  
  45.  /usr/bin/install -c -m 644 sqlite3.pc '/home/gl/e/sqlite3.8.1/_install/lib/pkgconfig'  
  46. make[1]: 离开目录“/home/gl/e/sqlite3.8.1/_install”  

编译和安装完后,在/home/gl/e/sqlite3.8.1/_install目录中会生成四个文件夹,分别是:
bin、include、 lib 、share, 如图:

sqlite

sqlite

然后分别将bin下的文件下载到开发板的/bin目录中,

lib下的所有文件下载到开发板的/lib目录中即可。

include 头文件拷贝到 交叉编译器的 include目录下。

5.在开发板上测试移植的sqlite数据库。执行:
#sqlite3
显示版本信息

  1. [root@EmbedSky /]# sqlite3  
  2. SQLite version 3.8.1 2013-10-17 12:57:35  
  3. Enter ".help" for instructions  
  4. Enter SQL statements terminated with a ";"  
  5. sqlite>   

新建数据库 测试如下

  1. [root@EmbedSky /]# sqlite3 test.db "create table tab1(name vachar(10),number sma  
  2. llint)"  
  3. [root@EmbedSky /]# sqlite3 test.db "insert into tab1 values('test',1)"  
  4. [root@EmbedSky /]# sqlite3 test.db "insert into tab1 values('iganlei',2)"  
  5. [root@EmbedSky /]# sqlite3 test.db "select * from tab1"  
  6. test|1  
  7. iganlei|2  
  8. [root@EmbedSky /]  

over……

未经允许不得转载:ganlei的个人博客 » Sqlite3.8.1移植到TQ2416(在ARM-Linux平台上移植SQLite)

赞 (1)
分享到:更多 ()