openwrt 移植sqlite3

openwrt sqlite3移植

一、配置支持数据库

1、在工程源码下执行make menuconfig 在界面里面选上数据库支持

  Utilities----->

       database------>

          sqlite2-cli............ SQLite (v2.x)database engine (cli)

 

二、修改数据库版本

1、Openwrt 支持的数据版本是sqlite2的,sqlite2的接口和sqlite3接口差别很大

2、修改支持sqlite3,vim feeds/packages/libs/sqlite2/Makefile

       将版本号修改为sqlite3和编译之后拷贝的库的名字

      PKG_NAME:=sqlite3

      PKG_VERSION:=3.6.17

      PKG_RELEASE:=3

 详细的脚本请参考(注:直接拷贝脚本进去编译有可能会出现语法错误)

include $(TOPDIR)/rules.mk

 

PKG_NAME:=sqlite3

PKG_VERSION:=3.6.17

PKG_RELEASE:=3

 

PKG_SOURCE:=sqlite-$(PKG_VERSION).tar.gz

PKG_SOURCE_URL:=http://www.sqlite.org/

PKG_MD5SUM:=838dbac20b56d2c4292e98848505a05b

 

PKG_BUILD_DIR:=$(BUILD_DIR)/sqlite-$(PKG_VERSION)

 

PKG_BUILD_DEPENDS:=libncurses libreadline

 

PKG_FIXUP:=autoreconf

 

PKG_INSTALL:=1

 

include $(INCLUDE_DIR)/package.mk

 

TARGET_CFLAGS += $(FPIC)

 

define Package/sqlite2/Default

 SUBMENU:=database

 TITLE:=SQLite (v2.x) database engine

 URL:=http://www.sqlite.org/

endef

 

define Package/libsqlite2

 $(call Package/sqlite2/Default)

 SECTION:=libs

 CATEGORY:=Libraries

 TITLE+= (library)

endef

 

define Package/libsqlite2/description

       SQLite is a small C library that implements a self-contained,embeddable,

       zero-configuration SQL database engine.

       This package contains the SQLite (v2.x) shared library, used by otherprograms.

endef

 

define Package/sqlite2-cli

 $(call Package/sqlite2/Default)

 SECTION:=utils

 CATEGORY:=Utilities

 DEPENDS:=+libncurses +libreadline +libpthread

 TITLE+= (cli)

 SUBMENU:=database

endef

 

define Package/sqlite2-cli/description

       SQLite is a small C library that implements a self-contained,embeddable,

       zero-configuration SQL database engine.

       This package contains a terminal-based front-end to the SQLite (v2.x)library

       that can evaluate queries interactively and display the results in

       multiple formats.

endef

 

define Build/Configure

       $(call Build/Configure/Default, \

                --enable-shared \

                --enable-static \

                , \

                config_BUILD_CC="$(HOSTCC)"\

               config_BUILD_CFLAGS="-O2" \

               config_TARGET_CC="$(TARGET_CC)" \

               config_TARGET_CFLAGS="$(TARGET_CFLAGS)" \

               config_TARGET_READLINE_INC="$(TARGET_CPPFLAGS)" \

               config_TARGET_READLINE_LIBS="$(TARGET_LDFLAGS)-lreadline -lncurses" \

               config_TARGET_TCL_INC="-DNO_TCL=1" \

       )

endef

 

define Build/InstallDev

       $(INSTALL_DIR) $(1)/usr/include

       $(CP) $(PKG_INSTALL_DIR)/usr/include/sqlite3.h $(1)/usr/include/

       $(INSTALL_DIR) $(1)/usr/lib

       $(CP) $(PKG_INSTALL_DIR)/usr/lib/libsqlite3.{a,so*} $(1)/usr/lib/

       $(INSTALL_DIR) $(1)/usr/lib/pkgconfig

       $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/sqlite3.pc $(1)/usr/lib/pkgconfig/

endef

 

define Package/libsqlite2/install

       $(INSTALL_DIR) $(1)/usr/lib

       $(CP) $(PKG_INSTALL_DIR)/usr/lib/libsqlite3.so.* $(1)/usr/lib/

endef

 

define Package/sqlite2-cli/install

       $(INSTALL_DIR) $(1)/usr/bin

endef

 

#$(CP) $(PKG_INSTALL_DIR)/usr/lib/libsqlite3.so.*$(1)/usr/lib/

#$(INSTALL_BIN)$(PKG_INSTALL_DIR)/usr/bin/sqlite $(1)/usr/bin/

$(eval $(call BuildPackage,libsqlite2))

$(eval $(call BuildPackage,sqlite2-cli))

 

三、库依赖关系

1、由于sqlite3需要用到线程库,直接编译会出现如下错误

missing dependencies libpthread.so.0

 

2、需要添加依赖线程库,在Makfile里面的DEPENDS添加libpthread 的支持

define Package/sqlite2-cli

 $(call Package/sqlite2/Default)

 SECTION:=utils

 CATEGORY:=Utilities

 DEPENDS:=+libncurses +libreadline +libpthread

 TITLE+= (cli)

 SUBMENU:=database

endef

 

3、再次编译,如果还出现错误,说面当前openwrt系统没有编译libpthread进去,需要到执行make menuconfig 配置支持

 Basesystem ------->

       <*>libthread……………………POSIX thread library

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值