当前位置: 首页 > Linux

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

时间:2023-04-07 01:07:26 Linux

前言SDK软件开发工具包(SoftwareDevelopmentKit)是为软件工程师在特定平台上开发应用程序而提供的一系列软件开发工具的集合。嵌入式Linux发行版LEDE提供的SDK环境与发行版环境兼容。SDK环境下的程序开发不需要像发行版那样编译整个linux系统,只需要指定具体开发的功能包进行交叉编译即可。本文介绍了在LEDE提供的SDK环境中编译应用程序的方法,以及如何在系统中应用生成的可执行文件和ipk包。SDK环境生成在LEDE源码目录下执行makemenuconfig命令进入LEDE配置界面,选择[*]BuildtheLEDESDK进行编译,然后在/source-17.01.4/bin/targets/下生成SDK软件压缩包ramips/mt7628包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配置界面选择PackagetheLEDEbasedToolchain选项进行编译,会在bin/targets/下生成工具链软件lede-toolchain-ramips-mt7628_gcc-5.4.0_musl-1.1.16.Linux-i686ramips/mt7628路径.tar.bz2,提供给eclipse等第三方平台。程序创建与编译1)在lede-sdk-ramips-mt7628_gcc-5.4.0_musl-1.1.16.Linux-i686/package目录下新建一个新开发的功能程序目录yxpr_ipk2)在yxpr_ipk目录下,Makefile文件内容如下。关键内容中PKG_NAME:=yxpr_ipk指定功能程序的名称,definePackage/yxpr_ipk中的SECTION指定内核配置界面上功能模块的父目录,TITLE指定功能模块在内核上的标题描述配置界面包括$(TOPDIR)/rules.mkPKG_NAME:=yxpr_ipkPKG_RELEASE:=1PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)include$(INCLUDE_DIR)/package.mkdefinePackage/yxpr_ipkSECTION:=utilsCATEGORY:=UtilitiesTITLE:=H-打印一条尖刻的消息endefdefineBuild/Preparemkdir-p$(PKG_BUILD_DIR)$(CP)./src/*$(PKG_BUILD_DIR)/endefdefinePackage/yxpr_ipk/install$(INSTALL_DIR)$(1)/bin$(INSTALL_BIN)$(PKG_BUILD_DIR)/yxpr_ipk$(1)/bin/endef$(eval$(callBuildPackage,yxpr_ipk))3)在src目录下新建程序文件yxpr_ipk.c和Makefile#includeintmain(void){printf("这是生成ipk和可执行文件测试\n");返回0;}yxpr_ipk:yxpr_ipk.o$(CC)$(LDFLAGS)yxpr_ipk.o-oyxpr_ipkyxpr_ipk.o:yxpr_ipk.c$(CC)$(CFLAGS)-cyxpr_ipk.cclean:rm*.oyxpr_ipk4)lede-sdk-ramips-mt7628_gcc-5.4.0_musl-1.1.16.Linux-i686目录执行makemenuconfig命令进入内核配置界面,如下图配置并执行编译注意:当报错“...hasboth:and::entries.Stop.”时。编译过程中出现,Makefile文件中行尾有一个空格。当“Makefile缺少分隔符。停止”。发生错误,TAB键被误用。在Makefile中,只有命令所在的行才能以TAB开头。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文件程序,执行opkginstallyxpr_ipk_1_mipsel_24kc.ipk安装ipk包,在/bin/路径下生成yxpr_ipk可执行程序,或者通过opkglist命令查看是否安装成功注意:需要增加bin文件的可执行权限,否则会提示Permissiondenied