色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Openwrt開發(fā)指南 第12章 添加OpenWrt軟件包

嵌入式大雜燴 ? 來源:嵌入式大雜燴 ? 作者:嵌入式大雜燴 ? 2023-06-29 09:09 ? 次閱讀

1 簡介

OpenWrt是一個(gè)比較完善的嵌入式Linux開發(fā)平臺,在無線路由器應(yīng)用上已有4000多個(gè)軟件包。我們可以在其基礎(chǔ)上增加軟件包,以擴(kuò)大其應(yīng)用范圍。在OpenWrt中增加軟件包極其方便,按照OpenWrt的約定就可以很簡單的完成。加入的軟件包可以是網(wǎng)上可下載的開源軟件或自行開發(fā)的軟件。為加入軟件包需要在package目錄下創(chuàng)建一個(gè)目錄,以包含該軟件包的各種信息和與OpenWrt建立聯(lián)系的文件。然后創(chuàng)建一個(gè)Makefile與OpenWrt建立聯(lián)系,Makefile需要遵循OpenWrt的約定。另外可以創(chuàng)建一個(gè)patchs目錄保存patch文件,對下載的源代碼進(jìn)行適量修改。

2 Makefile語法

下面來介紹Makefile的基本約定。

2.1 引入文件

OpenWrt使用三個(gè)makefile的子文件,分別為:

include$(TOPDIR)/rules.mk

include$(INCLUDE_DIR)/kernel.mk

include$(INCLUDE_DIR)/package.mk

由這些makefile子文件確立軟件包加入OpenWrt的方式和方法。(TOPDIR)/rules.mk一般在Makefile的開頭,(INCLUDE_DIR)/kernel.mk文件對于軟件包為內(nèi)核時(shí)是不可缺少,$(INCLUDE_DIR)/package.mk一般在軟件包的基本信息完成后再引入。

2.2 編寫軟件包的基本信息

軟件包的信息均以PKG_開頭,其意思和作用如下:PKG_NAME表示軟件包名稱,將在menuconfig和ipkg可以看到。PKG_VERSION表示軟件包版本號。

PKG_RELEASE表示Makefile的版本號。

PKG_SOURCE表示源代碼的文件名。

PKG_SOURCE_URL表示源代碼的下載網(wǎng)站位置。@SF表示在sourceforge網(wǎng)站,@GNU表示在GNU網(wǎng)站,還有@GNOME、@KERNEL。

PKG_MD5SUM表示源代碼文件的效驗(yàn)碼。用于核對軟件包是否正確下載。

PKG_CAT表示源代碼文件的解壓方法。包括zcat,bzcat,unzip等。

PKG_BUILD_DIR表示軟件包編譯目錄。它的父目錄為**(BUILD_DIR)。如果不指定,默認(rèn)為**(BUILD_DIR)/(PKG_NAME)/(PKG_VERSION)。

2.3 編譯包定義

應(yīng)用程序和內(nèi)核驅(qū)動模塊的定義不一樣。應(yīng)用程序軟件包使用Package,內(nèi)核驅(qū)動模塊使用KernelPackage。

1)應(yīng)用程序編譯包定義

應(yīng)用程序的編譯包以Package/開頭,然后接著軟件名,在Package定義中的軟件名可以與軟件包名不一樣,而且可以多個(gè)定義。下面使用**(PKG_NAME)只是做一個(gè)標(biāo)示,并非真正使用**(PKG_NAME),如Package/$(PKG_NAME)。

SECTION表示包的類型,預(yù)留。

CATEGORY表示分類,在make menuconfig的菜單下將可以找到。

TITLE用于軟件包的簡短描述。

DESCRIPTION用于軟件包的詳細(xì)描述,已放棄使用。如果使用DESCRIPTION將會提示“errorDESCRIPTION:=isobsolete,usePackage/PKG_NAME/description”。

URL表示軟件包的下載位置。

MAINTAINER表示維護(hù)者,選項(xiàng)。

DEPENDS表示與其他軟件的依賴。即如編譯或安裝需要其他軟件時(shí)需要說明。如果存在多個(gè)依賴,則每個(gè)依賴需要用空格分開。依賴前使用+號表示默認(rèn)為顯示,即對象沒有選中時(shí)也會顯示,使用@則默認(rèn)為不顯示,即當(dāng)依賴對象選中后才顯示。

在用戶空間的應(yīng)用程序軟件包中沒有內(nèi)核驅(qū)動模塊的AUTOLOAD參數(shù)。如果應(yīng)用軟件需要在boot時(shí)自動運(yùn)行,則需要在/etc/init.d中增加相應(yīng)的腳本文件。腳本文件需要START參數(shù),說明在boot時(shí)的優(yōu)先級,如果在boot過程啟動后再關(guān)閉,則需要進(jìn)一步設(shè)置STOP參數(shù)。

如果STOP參數(shù)存在,其值必須大于START。腳本文件需要start()和stop()兩個(gè)函數(shù),start()是執(zhí)行程序,stop()是關(guān)閉程序。關(guān)閉程序一般需要執(zhí)行killall命令。由/etc/rc.d/S10boot知道,裝載內(nèi)核驅(qū)動模塊的優(yōu)先級為10,需要使用自己設(shè)計(jì)的內(nèi)核驅(qū)動模塊的程序其START的值必須大于10。同樣由/etc/rc.d/S40network知道,使用網(wǎng)絡(luò)通信的程序其START的值必須大于40。

Package/$(PKG_NAME)/conffiles

本包安裝的配置文件,一行一個(gè)。如果文件結(jié)尾使用/,則表示為目錄。用于備份配置文件說明,在sysupgrade命令執(zhí)行時(shí)將會用到。

Package/$(PKG_NAME)/description

軟件包的詳細(xì)描述,取代前面提到的DESCRIPTION詳細(xì)描述。

Build/Prepare

編譯準(zhǔn)備方法,對于網(wǎng)上下載的軟件包不需要再描述。對于非網(wǎng)上下載或自行開發(fā)的軟件包必須說明編譯準(zhǔn)備方法。一般的準(zhǔn)備方法為:

defineBuild/Prepare

mkdir-p$(PKG_BUILD_DIR)

(CP)./src/*(PKG_BUILD_DIR)/

Endef

按OpenWrt的習(xí)慣,一般把自己設(shè)計(jì)的程序全部放在src目錄下。

Build/Configure

在Automake中需要進(jìn)行./configure,所以本配置方法主要針對需要配置的軟件包而設(shè)計(jì),一般自行開發(fā)的軟件包可以不在這里說明。需要使用本定義的情況,可參考dropbear。

Build/Compile

編譯方法,沒有特別說明的可以不予以定義。如果不定義將使用默認(rèn)的編譯方法

Build/Compile/Default。

自行開發(fā)的軟件包可以考慮使用下面的定義。

define Build/Compile

(MAKE)-C(PKG_BUILD_DIR)\\

(TARGET_CONFIGURE_OPTS)CFLAGS="(TARGET_CFLAGS)

-I$(LINUX_DIR)/include"

endef

Package/$(PKG_NAME)/install

軟件包的安裝方法,包括一系列拷貝編譯好的文件到指定位置。調(diào)用時(shí)會帶一個(gè)參數(shù),就是嵌入系統(tǒng)的鏡像文件系統(tǒng)目錄,因此$(1)表示嵌入系統(tǒng)的鏡像目錄。一般可以采用下面的方法:

definePackage/$(PKG_NAME)/install

(INSTALL_DIR)(1)/usr/bin

(INSTALL_BIN)(PKG_BUILD_DIR)/(PKG_NAME)(1)/usr/bin/

endef

INSTALL_DIR、INSTALL_BIN在$(TOPDIR)/rules.mk文件定義,所以本Makefile必須引

入$(TOPDIR)/rules.mk文件。

INSTALL_DIR:=install-d-m0755意思是創(chuàng)建所屬用戶可讀寫和執(zhí)行,其他用戶可讀可執(zhí)行的目錄。

INSTALL_BIN:=install-m0755意思編譯好的文件存放到鏡像文件目錄。

如果用戶空間的應(yīng)用軟件在boot時(shí)要自動運(yùn)行,則需要在安裝方法說明中增加自動運(yùn)行的腳本文件安裝和配置文件安裝方法。

例如:

definePackage/mountd/install

(INSTALL_DIR)(1)/sbin/(1)/etc/config/(1)/etc/init.d/

(INSTALL_BIN)(PKG_BUILD_DIR)/mountd$(1)/sbin/

(INSTALL_DATA)./files/mountd.config(1)/etc/config/mountd

(INSTALL_BIN)./files/mountd.init(1)/etc/init.d/mountd

endef

安裝文件放在files子目錄下,不要與源代碼文件目錄src混在一起,以提高可讀性。使用清晰的文件擴(kuò)展名,更方便安裝識別文件。

Package/$(PKG_NAME)/preinst

軟件包安裝前處理方法,使用腳本語言,因此定義的第一行需要下面的格式

#!/bin/sh //調(diào)用時(shí)帶入的參數(shù)為嵌入式系統(tǒng)的鏡像目錄。

Package/$(PKG_NAME)/postinst//軟件包安裝后處理方法,使用腳本語言。

Package/$(PKG_NAME)/prerm//軟件包刪除前處理方法,使用腳本語言。

Package/$(PKG_NAME)/postrm//軟件包刪除后處理方法,使用腳本語言。

2)內(nèi)核驅(qū)動模塊包定義

Linux分為內(nèi)核空間和用戶空間。開發(fā)者開發(fā)的內(nèi)核部分可以直接加入Linux的Kernel程序,也可以生成內(nèi)核模塊以便需要時(shí)裝入內(nèi)核。OpenWrt一般希望開發(fā)者生成內(nèi)核模塊,在Linux啟動后自動裝載或手工使用insmod命令裝載。內(nèi)核模塊使用KernelPackage開頭,其他與一般應(yīng)用軟件包基本相同。

在內(nèi)核驅(qū)動模塊定義中增加了:

SUBMENU表示子菜單位置,在**(INCLUDE)/kernel.mk對內(nèi)核模塊定義了CATEGORY為kernelmodules,所以內(nèi)核模塊在menuconfig中的主菜單為kernelmodules,然后有下一級子菜單**(SUBMENU)。在子菜單下可以看到以kmod-$(PKG_NAME)項(xiàng)目。

DEFAULT表示直接編入內(nèi)核或產(chǎn)生內(nèi)核模塊,y表示直接編入內(nèi)核,m表示產(chǎn)生內(nèi)核模塊。

AUTOLOAD表示自動裝入內(nèi)核,一般表示方法為:

AUTOLOAD:=(callAutoLoad,(PRIORITY),$(AUTOLOAD_MODS))

AutoLoad的第一個(gè)參數(shù)**(PRIORITY)為優(yōu)先級,01為最優(yōu)先,99為最后裝載。有關(guān)自動裝載可以在/etc/modules.d目錄下看到,第二個(gè)參數(shù)**(AUTOLOAD_MODS)模塊名,每個(gè)模塊名以空格符分隔。即可同時(shí)裝載多個(gè)內(nèi)核模塊。

在開發(fā)過程最好不要使用自動裝載,經(jīng)過嚴(yán)格調(diào)試后再使用,可以減輕調(diào)試的工作量。

2.4 使用定義

完成前面定義后,必須使用eval函數(shù)實(shí)現(xiàn)各種定義。其格式為:對于一般應(yīng)用軟件包

(eval(callPackage,$(PKG_NAME)))

或?qū)τ趦?nèi)核驅(qū)動模塊

(eval(callKernelPackage,$(PKG_NAME)))

如果一個(gè)軟件包有多個(gè)程序,例如:一個(gè)應(yīng)用程序有自己的內(nèi)核驅(qū)動模塊,上面使用的PKG_NAME需要靈活變通。eval函數(shù)可以設(shè)計(jì)多個(gè)。也可以當(dāng)成多個(gè)軟件包處理。

如果看到這里,覺得一頭霧水,還是不知道怎么使用。沒有關(guān)系,請繼續(xù)看后面的章節(jié),我們會舉大量的例子,來告訴大家如何使用這些語法。
審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5082

    文章

    19104

    瀏覽量

    304793
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11292

    瀏覽量

    209322
  • 源代碼
    +關(guān)注

    關(guān)注

    96

    文章

    2945

    瀏覽量

    66730
  • 軟件包
    +關(guān)注

    關(guān)注

    0

    文章

    104

    瀏覽量

    11590
  • OpenWrt
    +關(guān)注

    關(guān)注

    10

    文章

    130

    瀏覽量

    39296
收藏 人收藏

    評論

    相關(guān)推薦

    Openwrt開發(fā)指南 25 配置OpenWrt支持網(wǎng)絡(luò)攝像頭

    Openwrt開發(fā)指南 25 配置OpenWrt支持網(wǎng)絡(luò)攝像頭
    的頭像 發(fā)表于 07-13 08:56 ?2405次閱讀
    <b class='flag-5'>Openwrt</b><b class='flag-5'>開發(fā)指南</b> <b class='flag-5'>第</b>25<b class='flag-5'>章</b> 配置<b class='flag-5'>OpenWrt</b>支持網(wǎng)絡(luò)攝像頭

    Openwrt開發(fā)指南 1 OpenWrt入門

    如果要學(xué)習(xí)openwrt的話,買些列表中二手的路由器來實(shí)踐下更容易學(xué)習(xí),大部分要升級一下rom芯片和內(nèi)存芯片,典型配置都是4M、64M。
    的頭像 發(fā)表于 06-27 09:09 ?4393次閱讀

    Openwrt開發(fā)指南 2 OpenWrt開發(fā)環(huán)境搭建

    開發(fā)PC機(jī)上的軟件時(shí),可以直接在PC機(jī)上編輯、編譯、調(diào)試軟件,最終發(fā)布的軟件也是在PC機(jī)上運(yùn)行。對于物聯(lián)網(wǎng)OpenWrt
    的頭像 發(fā)表于 06-27 09:09 ?7119次閱讀
    <b class='flag-5'>Openwrt</b><b class='flag-5'>開發(fā)指南</b> <b class='flag-5'>第</b>2<b class='flag-5'>章</b> <b class='flag-5'>OpenWrt</b><b class='flag-5'>開發(fā)</b>環(huán)境搭建

    Openwrt開發(fā)指南 3 OpenWrt下載及配置

    編譯OpenWrt首先需要下載源碼,OpenWrt的源碼是通過git下載,OpenWrt目前已經(jīng)很好的支持了MT7620、MT7821等芯片,因此OpenWrt系統(tǒng)完全可以用于MT76
    的頭像 發(fā)表于 06-27 09:10 ?5762次閱讀
    <b class='flag-5'>Openwrt</b><b class='flag-5'>開發(fā)指南</b> <b class='flag-5'>第</b>3<b class='flag-5'>章</b> <b class='flag-5'>OpenWrt</b>下載及配置

    Openwrt開發(fā)指南 4 燒寫OpenWrt固件

    對于一個(gè)完整的嵌入式系統(tǒng),它由U-boot、內(nèi)核(Linux)、文件系統(tǒng)、應(yīng)用程序四部分組成。那么這四部分之間的關(guān)系是怎么樣的呢?OpenWrt是屬于哪部分呢?
    的頭像 發(fā)表于 06-27 09:11 ?4805次閱讀
    <b class='flag-5'>Openwrt</b><b class='flag-5'>開發(fā)指南</b> <b class='flag-5'>第</b>4<b class='flag-5'>章</b> 燒寫<b class='flag-5'>OpenWrt</b>固件

    Openwrt開發(fā)指南 7 添加Web界面

    LuCI作為“FFLuCI”誕生于2008年3月份,目的是為OpenWrt固件從Whiterussian到Kamikaze實(shí)現(xiàn)快速配置接口。Lua是一個(gè)小巧的腳本語言,很容易嵌入其它語言。輕量級
    的頭像 發(fā)表于 06-29 09:04 ?3766次閱讀
    <b class='flag-5'>Openwrt</b><b class='flag-5'>開發(fā)指南</b> <b class='flag-5'>第</b>7<b class='flag-5'>章</b> <b class='flag-5'>添加</b>Web界面

    Openwrt開發(fā)指南 13 OpenWrt啟動流程

    任何系統(tǒng)的啟動都是開發(fā)人員首要關(guān)注的問題,因?yàn)橹挥辛私饬讼到y(tǒng)的啟動流程和啟動機(jī)制,才能真正掌握一個(gè)系統(tǒng),如果對啟動的啟動不熟悉的話,是不可能真正用好一個(gè)系統(tǒng),openwrt系統(tǒng)也不例外,他的啟動和一般的嵌入式系統(tǒng)啟動還有所區(qū)別,現(xiàn)在咱們就分析一下
    的頭像 發(fā)表于 06-29 09:09 ?3529次閱讀
    <b class='flag-5'>Openwrt</b><b class='flag-5'>開發(fā)指南</b> <b class='flag-5'>第</b>13<b class='flag-5'>章</b> <b class='flag-5'>OpenWrt</b>啟動流程

    Openwrt開發(fā)指南 17 驅(qū)動開發(fā)之字符設(shè)備驅(qū)動程序

    首先將 RT5350_drv 文件夾傳到 OpenWrt 源碼的chaos_calmer/package/kernel 目錄下。然后進(jìn)入 OpenWrt 源碼的頂層目錄,執(zhí)行 make menuconfig。
    的頭像 發(fā)表于 07-02 09:20 ?3226次閱讀
    <b class='flag-5'>Openwrt</b><b class='flag-5'>開發(fā)指南</b> <b class='flag-5'>第</b>17<b class='flag-5'>章</b> 驅(qū)動<b class='flag-5'>開發(fā)</b>之字符設(shè)備驅(qū)動程序

    Openwrt開發(fā)指南 22 Openwrt串口的使用2

    在上一中,我們成功的讓驅(qū)動程序支持了串口 2,并且做了簡單的測試。接下來,我們就為串口 2 添加一個(gè)應(yīng)用程序,從而實(shí)現(xiàn) Wi-Fi 串口。實(shí)現(xiàn)過程非常簡單,首先進(jìn)入 OpenWrt 系統(tǒng)源碼,然后運(yùn)行 make menucon
    的頭像 發(fā)表于 07-05 09:09 ?4091次閱讀
    <b class='flag-5'>Openwrt</b><b class='flag-5'>開發(fā)指南</b> <b class='flag-5'>第</b>22<b class='flag-5'>章</b> <b class='flag-5'>Openwrt</b>串口的使用2

    Openwrt開發(fā)指南 24 配置開發(fā)板支持U盤

    Openwrt開發(fā)指南 24 配置開發(fā)板支持U盤
    的頭像 發(fā)表于 07-13 08:55 ?3317次閱讀
    <b class='flag-5'>Openwrt</b><b class='flag-5'>開發(fā)指南</b> <b class='flag-5'>第</b>24<b class='flag-5'>章</b> 配置<b class='flag-5'>開發(fā)</b>板支持U盤

    Openwrt開發(fā)指南 29 OpenWrt 防火墻介紹

    Openwrt 是一個(gè) GNU/Linux 的發(fā)行版, 和其他大多數(shù)的發(fā)行版一樣,Openwrt 的防火墻同樣也是基于 iptables。 在 OpenWRT 下防火墻的默認(rèn)行為已經(jīng)可以滿足路由器的需要,一般情況下也無需修改。
    的頭像 發(fā)表于 07-15 16:24 ?3601次閱讀
    <b class='flag-5'>Openwrt</b><b class='flag-5'>開發(fā)指南</b> <b class='flag-5'>第</b>29<b class='flag-5'>章</b> <b class='flag-5'>OpenWrt</b> 防火墻介紹

    RT5350 Wi-Fi 模塊開發(fā)指導(dǎo)_物聯(lián)網(wǎng) openwrt 開發(fā)概述

    物聯(lián)網(wǎng)的資料 物聯(lián)網(wǎng)openwrt開發(fā)概述 物聯(lián)網(wǎng)openwrt開發(fā)概述 物聯(lián)網(wǎng)openwrt開發(fā)
    發(fā)表于 11-16 14:52 ?0次下載

    openwrt頁面升級整理

    開發(fā)速度。 你會發(fā)現(xiàn)無論是 ARM PowerPC 或 MIPS 的處理器,都有很好的支持。 并且附帶3000左右的軟件包,用戶可以方便的自定義功能來制作固件。 也可以方便的移植功能到openwrt
    發(fā)表于 11-30 11:03 ?25次下載

    openwrt開發(fā)教程1~6

    openwrt開發(fā)教程1~6
    發(fā)表于 03-17 14:23 ?55次下載

    UM2285_STM32Cube擴(kuò)展軟件包開發(fā)指南

    UM2285_STM32Cube擴(kuò)展軟件包開發(fā)指南
    發(fā)表于 11-22 19:17 ?1次下載
    UM2285_STM32Cube擴(kuò)展<b class='flag-5'>軟件包</b><b class='flag-5'>開發(fā)指南</b>
    主站蜘蛛池模板: 国产午夜免费视频片夜色| 欧美牲交A欧美牲交VDO| 色爰情人网站| 在线免费中文字幕| 国产精品久免费的黄网站| 暖暖 免费 高清 日本在线| 亚洲欧洲日产国码中学| 高清视频在线观看SEYEYE| 女教师の诱惑| 一本到高清视频在线观看三区| 国产av在线看的| 欧美一区二区激情视频| 100国产精品人妻无码| 精彩国产萝视频在线| 忘忧草在线| 岛国大片在线观看免费版| 男人插曲女人身体视频| 怡春院院日本一区二区久久| 国产精品久久人妻互换毛片| 日本一本道高清码v| 99热这里只有精品8| 久久亚洲精品AV成人无| 野花日本手机观看大全免费3| 国产九色在线| 偷拍国产精品在线播放| 成人永久免费视频网站在线观看| 欧美成人亚洲高清在线观看| 在线看片福利无码网址| 精品午夜国产福利观看| 亚洲国产精品嫩草影院| 国产欧美一区二区精品性色tv| 日韩精品一区VR观看| 爱很烂qvod| 欧美乱妇狂野欧美在线视频| 99久久99久久久精品齐齐鬼色| 老人FREE VIODES老少配| 幼儿交1300部一区二区| 久久妇女高潮几次MBA| 亚洲最大成人| 久久合| 在线观看qvod|