OpenWrt 增加 package軟體包 1

2021-07-25 04:51:32 字數 3255 閱讀 5382

eg:

mkdir hello

eg:vim hello.c

#include

int main(void)

all:

$(cc) $(cflags) hello.c -o hello

clean:

rm *.o hello #

# makefile for the linux wireless network device drivers.

#include $(topdir)/rules.mk

include $(include_dir)/kernel.mk

pkg_name:=hello

pkg_version:=1

pkg_release:=1.0

pkg_source:=

pkg_source_url:=

pkg_md5sum:=

pkg_build_dir:=$(build_dir)/$(pkg_name)

include $(include_dir)/package.mk

define package/$(pkg_name)

section:=utils

category:=hello

title:=$(pkg_name)

maintainer:=aaa

endef

define build/prepare

mkdir -p $(pkg_build_dir)

$(cp)  ./src/* $(pkg_build_dir)

endef

define build/compile

$(make) -c $(pkg_build_dir) \

$(target_configure_opts) \

cflags="$(target_cflags)" \

cppflags="$(target_cppflags)" \

ldflags="$(target_ldflags)"

endef

define package/$(pkg_name)/install

$(install_dir) $(1)/lib/ko

$(cp) $(pkg_build_dir)/$(pkg_name)  $(1)/lib/ko/

endef

$(eval $(call buildpackage,$(pkg_name)))

include $(topdir)/rules.mk

include $(include_dir)/kernel.mk

include $(include_dir)/package.mk

rules.mk一般在檔案的開頭,定義各種openwrt全域性變數,讓所有的makefile包含和使用,eg:install_bin、install_dir。

kernel.mk軟體包為核心模組時不可缺少

package.mk一般在軟體包的基本資訊pkg_name pkg_source等完成再引入,用於編譯一般的軟體包

所謂的模版主要是體現在編譯包的定義,使用者程式的編譯包以package/開頭,然後接著軟體名,在package定義中的軟體名可以與軟體包不一樣,還可以多個定義。

這些都可以在include/package.mk中找到定義

使用者軟體包用package,核心模組軟體包使用kernelpackage。

define package/$(pkg_name)

section:=utils

category:=hello

title:=$(pkg_name)

maintainer:=aaa

endef

section

--表示包的型別,預留

category

--表示分類,在menuconfig的選單中可以找到

title

--用於軟體包的簡短描述

description

--用於軟體包的詳細描述

urlmaintainer

--表示維護者,選項

depends

--表示與其他軟體的依賴.如果存在多個依賴,則每個依賴需用空格分開,依賴前使用+號表示預設顯示(即依賴物件沒有選中時也會顯示這個軟體包),依賴前使用@,則預設為不顯示(即當依賴物件選中後才顯示當前這個軟體包)

define build/prepare

mkdir -p $(pkg_build_dir)

$(cp)  ./src/* $(pkg_build_dir)

endef

按openwrt的習慣,

patches放置補丁檔案

files放置一些配置檔案等

src放置源程式檔案

沒有特別的說明可以不定義,然後使用預設的編譯方法:build/compile/default

define build/compile

$(make) -c $(pkg_build_dir) \

$(target_configure_opts) \

cflags="$(target_cflags)" \

cppflags="$(target_cppflags)" \

ldflags="$(target_ldflags)"

endef

軟體包的安裝方法,包括一系列拷貝編譯好的檔案到指定位置,呼叫時會帶一些引數,$(1)表示嵌入式系統的映象目錄,一般可以採用下面的方法:

define package/$(pkg_name)/install

$(install_dir) $(1)/lib/ko

$(install_bin) $(pkg_build_dir)/$(pkg_name)  $(1)/lib/ko/

endef

install_dir:=install -d -m0755   --意思是建立所屬使用者可讀寫可執行,其他使用者可執行的目錄

install_bin:=install -m0755

--意思是將編譯好的檔案拷貝到映象檔案目錄,並具有可執行屬性

本包安裝配置檔案,一行乙個,如果檔案結尾使用/,則表示為目錄。用於備份配置檔案說明,在sysupgrade命令執行時將會用到。

軟體包的詳細描述,會取代

package/$(pkg_name) 下的description。

軟體包安裝前處理方法,使用指令碼語言,因此定義第一行需要下面的格式:

#!/bin/sh

軟體包安裝後處理方法,使用指令碼語言

軟體包刪除前處理方法,使用指令碼語言

軟體包刪除後處理方法,使用指令碼語言

openwrt增加自己應用步驟

1.cd package mkdir p yeetec sync 2.sync的目錄結構是src file兩個目錄和makefile檔案,將自己的檔案放到src上 3.sudo make menuconfig 在yeetec中選中sync,儲存 4.sudo make 時間比較長,生成的ipk放在b...

openwrt增加核心模組的方法

下面就是增加核心模組的方法了 進入package目錄,建立模組目錄 cd backfire package mkdir example 進入example目錄,建立makefile檔案和 路徑 cd example touch makefile mkdir src makefile具體內容如下 th...

OpenWrt增加軟體包方法

更多參考 openwrt是乙個比較完善的嵌入式linux開發平台,在無線路由器應用上已有100多個軟體包。人們可以在其基礎上增加軟體包,以擴大其應用範圍。openwrt在增加軟體方面使用極其方便,按照openwrt的約定就可以很簡單完成。1 引入檔案 openwrt使用三個makefile的子檔案,...