openwrt sdk 添加软件包 Makefile 写法
参考 https://openwrt.org/start?id=docs/guide-developer/packages ,英文稍好点的自己看吧,我写出来也就是方便,英文不好的人看。
软件包的来源,有几种来源。git , sourceforge.net , 或是某软件自己的网站下载。 也支持 svn 什么的,不常用的就不介绍了
1, git 下载
PKG_NAME:=dkjson
PKG_VERSION:=2.5
PKG_RELEASE:= PKG_SOURCE_URL:=https://github.com/LuaDist/dkjson.git
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=e72ba0c9f5d8b8746fc306f6189a819dbb5cd0be
首选是 git 地址 https://github.com/LuaDist/dkjson.git 然后是版本号 e72ba0c9f5d8b8746fc306f6189a819dbb5cd0be
大家都知道git 提交以后,会生成这个吧。 git log 可以查看到。
2, http https 下载
PKG_NAME:=mpg123
PKG_VERSION:=1.25.
PKG_RELEASE:= PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=@SF/mpg123
PKG_HASH:=6c1337aee2e4bf993299851c70b7db11faec785303cfca3a5c3eb5f329ba7023
表示从 SF 也就是 https://sourceforge.net/ 上面下载,把版本号拼上来下载地址就是
https://downloads.sourceforge.net/mpg123/mpg123-1.25.10.tar.bz2
PKG_NAME:=mpd
PKG_VERSION:=0.20.
PKG_RELEASE:= PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=http://www.musicpd.org/download/mpd/0.20/
PKG_HASH:=a9e458c6e07cdf62649de7722e1e5a7f13aa82eeb397bfbbebc07cf5cf273584
没有放到 sf.net 的 从自己的网站下载
PKG_HASH 是 sha256
3, 配置说明信息
define Package/libev
SECTION:=libs
CATEGORY:=Libraries
TITLE:=High-performance event loop
URL:=http://software.schmorp.de/pkg/libev.html
DEPENDS:=+zlib +libpthread
endef
在 make menuconfig 哪个选择项目里面出现,以及说明信息。
4, configure 编译附加指令
CONFIGURE_ARGS += \
--enable-shared \
--enable-static \
编译出来 动态库, 静态库。
功能介绍
表示在哪个选项包里面
define Package/cJSON
描述
define Package/cJSON/description
编译配置
define Build/Configure
编译前
define Build/Prepare
编译
define Build/Compile
安装
define Package/cJSON/install
安装到 dev 一般是头文件和 静态库 动态库
define Build/InstallDev
有几个不是必须的,如果 不写就是用默认的
例:添加一个 cJSON 包
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
# https://github.com/DaveGamble/cJSON.git
#
include $(TOPDIR)/rules.mk PKG_NAME:=cJSON #包名
PKG_VERSION:=1.7.7 #版本
PKG_RELEASE:=
PKG_MAINTAINER:=DaveGamble #作者 PKG_SOURCE_PROTO:=git #git
PKG_SOURCE_URL:=https://github.com/DaveGamble/cJSON.git #git 地址
PKG_MIRROR_HASH:=9fe484dd954f6c573fee367ecea5aadfb743bee0a9d6aa917c29528b73fa5fa3 #自动生成的不用管
PKG_SOURCE_VERSION:=787d651e8131c6394c6ff844f108e1a53012949f #git 提交记录
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz #在 dl 中保存的文件名
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION) PKG_LICENSE:=MIT #许可证
PKG_LICENSE_FILES:=LICENSE #许可证文件 include $(INCLUDE_DIR)/package.mk define Package/cJSON
SECTION:=net
CATEGORY:=Network
TITLE:=cJSON
URL:=https://github.com/DaveGamble endef define Package/cJSON/description
Ultralightweight JSON parser in ANSI C.
endef define Build/InstallDev #安装头文件 静态库 动态库什么的
$(INSTALL_DIR) $()/usr/include
$(CP) $(PKG_BUILD_DIR)/cJSON.h $()/usr/include/
$(INSTALL_DIR) $()/usr/lib
$(CP) $(PKG_BUILD_DIR)/libcjson.{a,so*} $()/usr/lib/
endef define Package/cJSON/install #安装到 固件中的 动态库 可执行程序
$(INSTALL_DIR) $()/usr/bin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/cJSON_test $()/usr/bin
$(INSTALL_DIR) $()/usr/lib
$(CP) $(PKG_BUILD_DIR)/libcjson.so.* $()/usr/lib/
$(CP) $(PKG_BUILD_DIR)/libcjson_utils.so.* $()/usr/lib/
endef $(eval $(call BuildPackage,cJSON))
另外一个 cmake 版
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
# https://github.com/DaveGamble/cJSON.git
#
include $(TOPDIR)/rules.mk PKG_NAME:=cJSON
PKG_VERSION:=1.7.
PKG_RELEASE:=
PKG_MAINTAINER:=DaveGamble PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/DaveGamble/cJSON.git
PKG_MIRROR_HASH:=9fe484dd954f6c573fee367ecea5aadfb743bee0a9d6aa917c29528b73fa5fa3
PKG_SOURCE_VERSION:=787d651e8131c6394c6ff844f108e1a53012949f
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION) PKG_LICENSE:=MIT
PKG_LICENSE_FILES:=LICENSE include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/cmake.mk #添加 cmake define Package/cJSON
SECTION:=net
CATEGORY:=Network
TITLE:=cJSON
URL:=https://github.com/DaveGamble
endef define Package/cJSON/description
Ultralightweight JSON parser in ANSI C.
endef
#cmake 参数
CMAKE_OPTIONS += -DENABLE_CJSON_UTILS=On \
-DENABLE_CJSON_TEST=On \
-DBUILD_SHARED_AND_STATIC_LIBS=On\
-DCMAKE_INSTALL_PREFIX=/usr define Build/InstallDev
$(INSTALL_DIR) $()/usr/include
$(CP) $(PKG_INSTALL_DIR)/usr/include/cjson $()/usr/include/
$(INSTALL_DIR) $()/usr/lib
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libcjson.{a,so*} $()/usr/lib/
endef define Package/cJSON/install
$(INSTALL_DIR) $()/usr/bin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/cJSON_test $()/usr/bin
$(INSTALL_DIR) $()/usr/lib
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libcjson.so.* $()/usr/lib/
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libcjson_utils.so.* $()/usr/lib/
endef $(eval $(call BuildPackage,cJSON))
cmake 的编译还是比较简单的。
写了一个 测试 cjson 的小程序
#include <stdio.h>
#include <cjson/cJSON.h> int main(int argc, char **argv)
{
cJSON *root; root = cJSON_CreateObject();
cJSON_AddStringToObject(root, "VER", "1.0");
cJSON_AddStringToObject(root, "IP", "127.0.0.1");
cJSON_AddStringToObject(root, "DATE", ""); printf("cjson: %s", cJSON_PrintUnformatted(root));
cJSON_Delete(root);
return ;
}
Makefile 工程
include $(TOPDIR)/rules.mk # Name, version and release number
# The name and version of your package are used to define the variable to point to the build directory of your package: $(PKG_BUILD_DIR)
PKG_NAME:=cjson_hello
PKG_VERSION:=1.0
PKG_RELEASE:= include $(INCLUDE_DIR)/package.mk # Package definition; instructs on how and where our package will appear in the overall configuration menu ('make menuconfig')
define Package/cjson_hello
SECTION:=examples
CATEGORY:=Examples
TITLE:=cjson_hello, World!
DEPENDS:=+cJSON
endef # Package description; a more verbose description on what our package does
define Package/cjson_hello/description
A simple "Hello, world!" -application.
endef define Build/Prepare
mkdir -p $(PKG_BUILD_DIR)
cp ./src/* $(PKG_BUILD_DIR)
$(Build/Patch)
endef define Package/cjson_hello/install
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/cjson_hello $(1)/usr/bin
endef $(eval $(call BuildPackage,cjson_hello))
只需要添加这行 引用 库 就可以了 DEPENDS:=+cJSON , openwrt 真的是太方便了,这点比 yocto 易用。
看测试截图

openwrt sdk 添加软件包 Makefile 写法的更多相关文章
- openwrt sdk 编译工具 及 hello world
需要先在 make menuconfig 中打开 sdk make -j4在 bin\targets\ramips\mt7620生成一个openwrt-sdk-ramips-mt7620_gcc-7. ...
- theos的makefile写法
theos的makefile写法与其他linux/unix环境下的makefile写法大同小异,但是对于makefile不熟悉的在导入一些dylib或者framework的时候就会变得很蛋疼. 对于f ...
- Makefile之写demo时的通用Makefile写法
Makefile之写demo时的通用Makefile写法[日期:2013-05-22] 来源:CSDN 作者:gqb666 [字体:大 中 小] 前面的一篇文章Makefile之大型工程项目子目录M ...
- 大型工程多个目录下的Makefile写法
1.前言 目前从事于linux下程序开发,涉及到多个文件,多个目录,这时候编译文件的任务量比较大,需要写Makefile.关于Makefile的详细内容可以参考网上流传非常广泛的<跟我一起写Ma ...
- Openwrt:添加"自定义软件包.ipk"
我们已经尝试做的一件事情,是让移植软件到OpenWrt的操作变得非常容易.如果打开OpenWrt里的一个软件包的目录(OpenWrt/Package/* 或 OpenWrt/feeds/package ...
- OpenWRT添加模块 Makefile和Config.in
添加模块编译 在网上找了一下,很多关于编译Openwrt系统的资料,不过这些事情芯片厂商提供的开发包都已经办得妥妥了,但是没有找到系统介绍的资料,添加一个包的介绍有不多,其中有两个很有参考价值: ht ...
- openwrt sdk compile
recently ,bought a router : tl-wr741n-v5 hd my aim : let the router dail in neetkeeper environment : ...
- gcc编译, gdb调试, makefile写法
//test.c: #include <stdio.h> int main(void) { printf("hello world!"); return 0; } == ...
- 转来的 cuda makefile 写法学习
原文作者:FreeAquar 原文出处:http://www.cnblogs.com/FreeAquar/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给 ...
随机推荐
- Cocos2dx-JS学习01
123456 <body><script src="res/loading.js"></script><canvas id="g ...
- BadRequestException
package me.zhengjie.common.exception; import lombok.Getter; import org.springframework.http.HttpStat ...
- 堆优DIJ模板
Dij:贪心思想的单源最短路,时间复杂度O(n^2). Dij算法流程: d数组记录源点s到每个点的距离,若无边则设为inf,标记源点: 选出d数组中未标记的最小值,该节点记为k,并标记k为已求出最短 ...
- HttpClient系统日志配置
详细介绍在:http://hc.apache.org/httpclient-3.x/logging.html 一般使用context logging基本够用,context logging解释原文如下 ...
- MOOC(7)- case依赖、读取json配置文件进行多个接口请求-测试类中调用封装的mock(10)
封装mock后,在单元测试中调用 # -*- coding: utf-8 -*- # @Time : 2020/2/11 8:35 # @File : test_class_10.py.py # @A ...
- windows 不能在本地计算机启动apache2。有关更多信息,查阅系统事件日志。如果这是非Microsoft服务,请与服务厂商联系,并参考特定服务错误代码1
今天使用apache的时候又无法启动了,之前也遇到过,这次重点说这一次的情况,其他情况可以查看博主apache相关的其他博文:网上关于apache服务端的设置的很多,但是都不适合我的情况: 一般使用a ...
- Jmeter之CSV文件读取
注意execl表生成的CSV文件的文件编码是GB2312和分隔符就好了
- Caused by: com.alibaba.fastjson.JSONException: syntax error, expect {, actual [, pos 0, fastjson-version 1.2
环境: vue.js 问题: 当添加评论时 重新查询数据刷新数据控制台异常Caused by: com.alibaba.fastjson.JSONException: syntax error, ex ...
- 吴裕雄--天生自然 R语言开发学习:方差分析(续二)
#-------------------------------------------------------------------# # R in Action (2nd ed): Chapte ...
- MyBatis连接MySQL8配置
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</a ...