为了账号安全,请及时绑定邮箱和手机立即绑定

嵌入式linux系统的开发——SDK环境的应用

标签:
Linux
前言

SDK软件开发工具包(Software Development Kit )是为软件工程师在特定的平台上进行应用程序开发而提供的一系列软件开发工具的集合。嵌入式Linux发行版LEDE提供的SDK环境与发行版环境相兼容,在SDK环境下进行程序开发,不像发行版那样需要编译整个linux系统,只需要指定特定开发的功能包进行交叉编译即可。本文介绍在LEDE提供的SDK环境下编译应用程序的方法,以及如何将生成的可执行文件和ipk包应用在系统中。

SDK环境生成

在LEDE源码目录下执行make menuconfig命令进入LEDE配置界面,选择 [*] Build the LEDE SDK进行编译,之后会在/source-17.01.4/bin/targets/ramips/mt7628下生成SDK软件压缩包 lede-sdk-ramips-mt7628_gcc-5.4.0_musl-1.1.16.Linux-i686.tar.xz。
图片描述

将软件包lede-sdk-ramips-mt7628_gcc-5.4.0_musl-1.1.16.Linux-i686.tar.xz解压后得到lede-sdk-ramips-mt7628_gcc-5.4.0_musl-1.1.16.Linux-i686目录,目录结构如下图所示,该目录结构与LEDE目录结构基本一致,其中/staging_dir/toolchain-mipsel_24kc_gcc-5.4.0_musl-1.1.16目录为编译工具链的存放位置。

图片描述

注:在LEDE配置界面选择Package the LEDE based Toolchain选项进行编译,会在bin/targets/ramips/mt7628 路径下生成工具链软件lede-toolchain-ramips-mt7628_gcc-5.4.0_musl-1.1.16.Linux-i686.tar.bz2,提供给eclipse这样的第三方平台调用。

程序创建和编译

1)在lede-sdk-ramips-mt7628_gcc-5.4.0_musl-1.1.16.Linux-i686/package目录下新建开发的功能程序目录yxpr_ipk

2)在yxpr_ipk目录下新建Makefile文件和src目录,Makefile文件内容如下所示,关键内容中PKG_NAME:=yxpr_ipk指定了功能程序名称,define Package/yxpr_ipk中SECTION指定了功能模块在kernel 配置界面的父目录,TITLE指定了功能模块在kernel 配置界面的标题说明

include $(TOPDIR)/rules.mk
PKG_NAME:=yxpr_ipk
PKG_RELEASE:=1

PKG_BUILD_DIR:= $(BUILD_DIR)/$(PKG_NAME)

include $(INCLUDE_DIR)/package.mk
define Package/yxpr_ipk
  SECTION:=utils
  CATEGORY:=Utilities
  TITLE:=Helloworld-- prints a snarky message
endef

define Build/Prepare 
    mkdir -p $(PKG_BUILD_DIR)
    $(CP) ./src/* $(PKG_BUILD_DIR)/
endef

define Package/yxpr_ipk/install
    $(INSTALL_DIR)  $(1)/bin
    $(INSTALL_BIN)  $(PKG_BUILD_DIR)/yxpr_ipk $(1)/bin/
endef

$(eval $(call BuildPackage,yxpr_ipk))

3)在src目录下新建程序文件yxpr_ipk.c和Makefile文件

#include<stdio.h>  
int main(void)  
{  
    printf("this is make ipk and executable file test \n");  
    return 0;  
}  

yxpr_ipk: yxpr_ipk.o
    $(CC) $(LDFLAGS) yxpr_ipk.o -o yxpr_ipk

yxpr_ipk.o: yxpr_ipk.c
    $(CC) $(CFLAGS) -c yxpr_ipk.c

clean:
    rm *.o yxpr_ipk

4)在lede-sdk-ramips-mt7628_gcc-5.4.0_musl-1.1.16.Linux-i686目录下执行make menuconfig 命令进入kernel配置界面,按如下图示进行配置后执行编译
图片描述
注: 当编译过程中出现“……has both : and :: entries. Stop.”错误时为Makefile文件中行末尾存在空格,出现“ Makefile missing separator. Stop.”错误时为TAB键误用,Makefile文件中只有命令所在行才能以TAB开头

5)编译完成后会在 /ramips/mt7628/lede-sdk-ramips-mt7628_gcc-5.4.0_musl-1.1.16.Linux-i686/bin/packages/mipsel_24kc/base/目录下生成yxpr_ipk_1_mipsel_24kc.ipk,同时会在/lede-sdk-ramips-mt7628_gcc-5.4.0_musl-1.1.16.Linux-i686/build_dir/target-mipsel_24kc_musl-1.1.16/yxpr_ipk/目录下生成yxpr_ipk可执行bin文件

安装和执行

通过WinSCP工具将ipk包和可执行bin文件传输至设备的文件系统根文件目录下,运行./yxpr_ipk直接执行bin文件程序,执行opkg install yxpr_ipk_1_mipsel_24kc.ipk安装ipk包后在/bin/路径下生成yxpr_ipk可执行程序,也可通过opkg list命令查看是否安装成功。

图片描述

点击查看更多内容
5人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
Python工程师
手记
粉丝
1.8万
获赞与收藏
1563

关注作者,订阅最新文章

阅读免费教程

感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消