`
tcspecial
  • 浏览: 913886 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

openwrt 下编译ipk

阅读更多

 

    openwrt插件都是以.ipk方式发布的,ipk可以直接通过opkg安装到系统。上文我们编译了简单的hello,本文探究hello.ipk的编译过程。

一. 环境准备

cd ~/openwrt/bin/ar71xx
tar -xjvf OpenWrt-SDK-ar71xx-for-linux-x86_64-gcc-4.6-linaro_uClibc-0.9.33.2.tar.bz    #解压SDK包
cd OpenWrt-SDK-ar71xx-for-linux-x86_64-gcc-4.6-linaro_uClibc-0.9.33.2/package     #进入package目录

mkdir hello      #建立软件包目录

  

目录层次:
package/hello
               |--- /src/hello.c

               |--- /src/Makefile
               |--- Makefile

 

二. 编码
1. 编辑编译hello的Makefile
vi hello/src/Makefile

hello: hello.o
	$(CC) $(LDFLAGS) hello.o -o hello
hello.o: hello.c
	$(CC) $(CFLAGS) -c hello.c

clean:
	rm *.o hello

 
2. 编辑发布hello.ipk的Makefile
vi hello/Makefile

#Makefile
include $(TOPDIR)/rules.mk

# Nameand release number of this package
PKG_NAME:=hello
PKG_RELEASE:=1

# This specifies the directory where we're going to build the program.
# The root build directory, $(BUILD_DIR), is by default the build_mipsel
# directory in your OpenWrt SDK directory
PKG_BUILD_DIR:= $(BUILD_DIR)/$(PKG_NAME)

include $(INCLUDE_DIR)/package.mk
 
# Specify package information for this program.
# The variables defined here should be self explanatory.
# If youare running Kamikaze, delete the DESCRIPTION
# variable below and uncomment the Kamikaze define
# directivefor the description below
define Package/hello
	SECTION:=utils
	CATEGORY:=Utilities
	TITLE:=Helloworld-- prints a snarky message
endef


# Specifywhat needs to be done to prepare for building the package.
# In ourcase, we need to copy the source files to the build directory.
# This isNOT the default.  The default uses thePKG_SOURCE_URL and the
#PKG_SOURCE which is not defined here to download the source from the web.
# Inorder to just build a simple program that we have just written, it is
# mucheasier to do it this way.
define Build/Prepare
	mkdir -p $(PKG_BUILD_DIR)
	$(CP) ./src/* $(PKG_BUILD_DIR)/
endef

# We donot need to define Build/Configure or Build/Compile directives
# Thedefaults are appropriate for compiling a simple program such as this one
# Specifywhere and how to install the program. Since we only have one file,
# thehello executable, install it by copying it to the /bin directory on
# therouter. The $(1) variable represents the root directory on the router running
#OpenWrt. The $(INSTALL_DIR) variable contains a command to prepare the install
#directory if it does not already exist. Likewise $(INSTALL_BIN) contains the
# commandto copy the binary file from its current location (in our case the build
#directory) to the install directory.
define Package/hello/install
	$(INSTALL_DIR) $(1)/bin
	$(INSTALL_BIN) $(PKG_BUILD_DIR)/hello $(1)/bin/
endef

# This line executes the necessary commands to compile our program.
# The above define directives specify all the information needed, but this
# line calls BuildPackage which in turn actually uses this information to
# build apackage.
$(eval $(call BuildPackage,hello))

 

三. 编译

cd ~/openwrt/bin/ar71xx/OpenWrt-SDK-ar71xx-for-linux-x86_64-gcc-4.6-linaro_uClibc-0.9.33.2    #sdk根目录
make    #编译

    如果顺利,会出现以下信息:

    

make[1]  world
make[2]  package/compile
make[3]  -C package/hello compile
make[2]  package/index

    编译成功会在 bin/arr71xx/packages 下生成 hello_1_ar71xx.ipk 


四. 上传并测试

 


 

  • 大小: 7.9 KB
分享到:
评论

相关推荐

    完整的openwrt下的一个ipk程序源码,可以直接拷贝到开发环境下编译

    6. **生成IPK包**:编译完成后,新的IPK包将在`bin`目录下找到,可以使用`opkg`等包管理器安装到OpenWrt设备上。 这个压缩包中的“jwdlh”可能是软件包的名称或者是某个子目录,具体用途需要查看其内容才能确定。...

    openwrt nps.ipk安装

    在OpenWRT环境中安装NPS.ipk是一个将NPS服务添加到系统中的过程,以便利用其强大的网络处理能力。 首先,让我们详细解释如何安装`openwrt nps.ipk`。在OpenWRT中,软件通常以IPK格式的包进行分发,这使得用户可以...

    openwrt 通用 扩展插件ipk大全全中文解释下载

    这些IPK文件包含源码软件的编译版本,以及必要的依赖信息,使得在OpenWRT设备上安装和管理软件变得简单。 `luci-app-store_0.1.8-7_all.ipk` 是一个Luci应用商店的插件,Luci是OpenWRT的图形化Web界面。这个插件...

    openwrt插件扩展大全ipk3100个对应功能中文 解释

    openwrt插件扩展大全ipk3100个对应功能中文 解释

    openwrt_ipk软件包功能介绍

    每个IPK文件包含了编译好的软件、依赖关系信息以及元数据,使得OpenWRT系统能够正确处理软件的安装过程。 软件包的种类广泛,涵盖了网络管理、系统工具、安全应用、编程语言、服务器软件等多个领域。例如,有些...

    OpenWrt-SDK--利用SDK生成自己的ipk安装包

    OpenWrt-SDK是一个用于在OpenWrt操作系统上定制和编译固件的工具链。它允许开发者仅针对特定平台的用户空间进行交叉编译,而不需要重新编译整个系统。SDK的使用场景包括但不限于: 1. 编译更新版本的软件包:开发者...

    适合于本人上传的openwrt的IPK软件的上位机软件完整代码

    【描述】中的信息表明,这个项目是为一个特定的IPK软件开发的上位机支持软件,该软件是在Visual Studio 2013环境下编译的。这涉及到C++编程语言,因为Visual Studio 2013主要支持C++开发,并且可能使用了Microsoft的...

    openwrt 应用商店ipk程序 无需编译直接安装

    openwrt 应用商店ipk程序 无需编译直接安装

    openwrt SDK, 利用SDK生成自己的ipk安装包

    OpenWrt SDK是一个可再定位的、预编译好的OpenWrt工具链,适用于在不从头开始编译整个系统的前提下,针对一个特定平台交叉编译单个用户空间包。使用SDK的原因是为了保证二进制和特性兼容性,针对特定的发行版编译...

    OpenWrt环境专用编译源码fcgiwrap解决nginx取代uhttpd问题

    OpenWrt环境下编译fcgiwrap的源代码,内含其所依赖的fcgi包源代码,将文件 解压到OpenWrt-SDK的package目录下即可执行Make V=s完成整个编译过程,生成的ipk文件可直接安装到相应的路由器中,然后就可以用nginx取代原...

    OpenWrt 上运行的tcpdump

    在OpenWrt上运行tcpdump是一项基础而重要的网络诊断任务,tcpdump是一个强大的网络分析工具,它可以捕获网络上的数据包并提供详细的信息,帮助我们理解网络流量、检测问题或进行安全审计。以下是对OpenWrt环境安装和...

    openwrt pppoe并发多拨 ipk插件扩展

    IPK是OpenWRT软件包的格式,用于分发编译好的软件。在本例中,"luci-app-syncdial_git-17.267.71996-a7afd7c-1_all.ipk"是一个LuCI界面的插件,用于图形化管理PPPoE并发多拨。LuCI是OpenWRT的Web管理界面,使得用户...

    openwrt版本的mentohust.ipk和libpcap的ipk包,适用与brcm63XX系列,例如DB120等等

    这个系统允许用户自定义和扩展设备的功能,通过编译源代码或安装预编译的IPK(IPK Package)包来实现。本文将详细讨论标题和描述中涉及的知识点,包括OpenWRT、Mentohust、Libpcap以及如何在Brcm63XX系列设备上安装...

    openwrt开发ipk

    本文将详细介绍如何在OpenWRT环境下开发自己的程序固件IPK,并涵盖搭建开发环境、修改原有packages以及创建新的packages等内容。 #### 二、搭建开发环境 为了在OpenWRT环境中开发程序固件,首先需要搭建一个专门的...

    redis_1_mips_24kc.ipk openwrt 19.07

    在用 learn lede 在源码编译在过程中主要是报了一个错, 缺少原子操作也就是这个库造成在,有空整理一下吧。 几天以前用在 R9.3.7的安装openwrt里面软件包含了redis。install redis 直接安装成功。 然后现在不行了。...

    openwrt的各类应用开发文档

    在编译 OpenWRT 之前,需要 configure OpenWRT 的编译选项。可以使用 make menuconfig 命令来 configure OpenWRT 的编译选项。例如,可以选择目标路由器的型号、版本、编译器等。 编译 OpenWRT 需要下载许多软件包...

    openwrt各软件包对应功能.xlsx

    openwrt各软件包对应功能,方便查找

    Openwrt_QT5.12_porting.rar

    7. **打包与分发**:最后,将编译好的Qt包整合到OpenWrt固件中,以便用户可以通过OPKG或IPK包管理系统安装。 整个过程涉及到深入理解Linux内核、嵌入式开发、编译原理以及Qt框架的内部机制。在实际操作中,开发者...

    openwrt下的wifidog安装及web认证界面设置

    只能使用openwrt和PandoraBox固件,查询了多种方法,都是需要对固件进行编译的,由于小弟不懂编程,只有通过网友们的安装配置经验进行参考,在刷好的固件基础上安装wifidog和Luci界面的配置,如果哪位高手能将Luci-...

    openwrt可用helloworld程序

    4. 交叉编译与安装:回到OpenWrt的顶层目录,运行`make menuconfig`配置你的开发环境,然后执行`make`进行编译,最后使用`make install`将程序安装到模拟器或目标设备。 四、运行Hello, World程序 编译完成后,...

Global site tag (gtag.js) - Google Analytics