关于openwrt-SDK编译package时需要依赖库(sqlite3,curl,pthread等)的处理

SDk编译时需要-lsqlite3 -lcurl -lpthread,需要的头文件如下:

[html] view plain copy
  1. #include <sqlite3.h>  
  2. #include <stdio.h>  
  3. #include <pthread.h>  
  4. #include <string.h>  
  5. #include <unistd.h>  
  6. #include <sys/types.h>  
  7. #include <sys/stat.h>  
  8. #include <fcntl.h>  
  9. #include <stdlib.h>  
  10. #include <unistd.h>  
  11. #include <time.h>  
  12. #include <sys/time.h>  
  13. #include <curl/curl.h></span>  
Makefile 如下:

[html] view plain copy
  1. cc = /home/qx/xiaojunyu/openwrt-14.07/build_dir/target-mips_34kc_uClibc-0.9.33.2/OpenWrt-SDK-ar71xx-for-linux-x86_64-gcc-4.8-linaro_uClibc-0.9.33.2/staging_dir/toolchain-mips_34kc_gcc-4.8-linaro_uClibc-0.9.33.2/bin/mips-openwrt-linux-gcc  
  2. xiao : xiao.o  
  3.     $(cc) -o xiao xiao.o -lpthread -lcurl -lsqlite3  
  4. xiao.o : xiao.c  
  5.     $(cc) -c xiao.c  
  6. clean :  
  7.     rm -f xiao xiao.o</span>  
上级目录的Makefile如下
[html] view plain copy
  1. include $(TOPDIR)/rules.mk  
  2.   
  3. PKG_NAME:=xiao  
  4. PKG_RELEASE:=1  
  5.   
  6. PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)  
  7.   
  8. include $(INCLUDE_DIR)/package.mk  
  9.   
  10. define Package/xiao  
  11.     SECTION:=utils  
  12.     CATEGORY:=Utilities  
  13.     TITLE:=my_module -- mac_scan  
  14.     DEPENDS:=+libsqlite3 +libcurl +libpthread +libc  
  15. endef  
  16.   
  17. define Package/xiao/description  
  18. endef  
  19.   
  20. define Build/Prepare   
  21.     echo "Here is Package/Prepare"  
  22.     mkdir -p $(PKG_BUILD_DIR)  
  23.     $(CP) ./src/* $(PKG_BUILD_DIR)/  
  24. endef  
  25.   
  26.   
  27. define Package/xiao/install  
  28.     echo "Here is Package/install"  
  29.     $(INSTALL_DIR) $(1)/bin  
  30.     $(INSTALL_BIN) $(PKG_BUILD_DIR)/xiao $(1)/bin/  
  31. endef  
  32.   
  33. $(eval $(call BuildPackage,xiao)) </span>  


文件目录结构为:

xiao{Makefile src{xiao.c Makefilr}} 放在SDK目录的package下


首先进入主目录,比如openwrt,然后sdk的目录应该在

[html] view plain copy
  1. openwrt-14.07/build_dir/target-mips_34kc_uClibc-0.9.33.2/OpenWrt-SDK-ar71xx-for-linux-x86_64-gcc-4.8-linaro_uClibc-0.9.33.2  


在openwet目录,具体看你创建的目录下,make menuconfig 在library下找到你需要编译的库,比如我需要libsqlit3,libcurl,libpthread,选中以后保存编译,编译完成后,把package包复制到sdk目录下。


然后,package包的第一层Makefile中加入

[html] view plain copy
  1. +libsqlite3 +libcurl +libpthread +libc  

退到sdk主目录,运行make package/xiao/compile V=s即可完成编译,或者直接make全部编译。

若想直接提取bin文件可以直接find ,然后复制到板子上面即可运行。

你可能感兴趣的:(关于openwrt-SDK编译package时需要依赖库(sqlite3,curl,pthread等)的处理)