OpenWrt パッケージ - BuildPackage

I.はじめに

        この記事に含まれる知識は、OpenWrt Wiki 公式 Web サイトから得られます。OpenWrt のソフトウェア コンパイル テンプレート システムを使用すると、ソフトウェアを OpenWrt に移植することが非常に簡単になります。通常のパッケージ ディレクトリにいる場合、package/Makefile、package/patches、および package/files の 3 つが見つかります。

package/patches: 通常、バグ修正やターゲット ファイルのサイズ削減のために、ディレクトリは必要ありません。

package/Makefile: は必須であり、パッケージをダウンロードしてコンパイルするために必要な実際の手順を提供します。

package/files: パッケージに必要なファイル (.c および .h ファイルではありません)。

例は次のとおりです。

include $(TOPDIR)/rules.mk

PKG_NAME:=bridge
PKG_VERSION:=1.0.6
PKG_RELEASE:=1
PKG_BUILD_DIR:=$(BUILD_DIR)/bridge-utils-$(PKG_VERSION)
PKG_SOURCE:=bridge-utils-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=@SF/bridge
PKG_HASH:=9b7dc52656f5cbec846a7ba3299f73bd

include $(INCLUDE_DIR)/package.mk

define Package/bridge
  SECTION:=base
  CATEGORY:=Network
  TITLE:=Ethernet bridging configuration utility
  #DESCRIPTION:=This variable is obsolete. use the Package/name/description define instead!
  URL:=http://bridge.sourceforge.net/
endef

define Package/bridge/description
  Ethernet bridging configuration utility Manage ethernet bridging; a way to connect networks together to form a larger network.
endef

define Build/Configure
  $(call Build/Configure/Default,--with-linux-headers=$(LINUX_DIR))
endef

define Package/bridge/install
	$(INSTALL_DIR) $(1)/usr/sbin
	$(INSTALL_BIN) $(PKG_BUILD_DIR)/brctl/brctl $(1)/usr/sbin/
endef

$(eval $(call BuildPackage,bridge))

2.BuildPackage変数

1.PKG_NAME

        パッケージの名前。パッケージ名にはアンダースコアを使用しないでください。アンダースコアを使用すると、見つけにくいエラーが発生し、コンパイルが失敗する可能性があります。

2.PKG_VERSION

        ダウンロードするパッケージのバージョン番号。

3.PKG_RELEASE

        パッケージの Makefile のバージョン。

4.PKG_BUILD_DIR

        パッケージをコンパイルするパス。

5.PKG_SOURCE

        元のソースのファイル名 (通常は tarball パッケージ)。

6.PKG_SOURCE_URL

        ソースファイルをダウンロードする場所。

7.PKG_HASH

        ダウンロード ソースのチェックサムは、パッケージが正式なものであるかどうかを確認するために使用されます。

8.PKG_CAT

        ソースの解凍方法(zcat、bzcat、unzip)。

9. PKG_BUILD_DEPENDS

        このパッケージの前にパッケージをビルドする必要があります。ビルド時にパッケージが別のパッケージにアクセスできるようにする必要がある場合は、このオプションを使用して、バイナリ パッケージ (libopenssl) の代わりにディレクトリ名 (openssl など) を指定しますこのビルド変数はビルド時の依存関係のみを確立します。DEPENDS を使用して実行時の依存関係を確立します。

10.PKG_CONFIG_DEPENDS

        どの構成オプションがビルド構成に影響し、ビルド/構成の再実行をトリガーするかを指定します。

3.BuildPackage マクロ

1.パッケージ/

セクション: 現在使用されていないソフトウェア パッケージのタイプ。

CATEGORY: menuconfig に表示されるメニュー。

タイトル: パッケージの簡単な説明。

DESCRIPTION: (非推奨) パッケージの詳細な説明。

URL: オリジナルのパッケージをダウンロードするためのリンク。

MAINTAINER: パッケージのメンテナ。

DEPENDS: オプション。このパッケージをコンパイルする前に、どのソフトウェア パッケージをコンパイルしてインストールする必要があります。

EXTRA_DEPENDS: オプションのランタイム依存関係。ビルドされず、CONTROL ファイルにのみ追加されます。

2. パッケージ/構成ファイル

        このパッケージによってインストールされる構成ファイルのリスト (1 行に 1 つのファイル)。ファイル リストのセクションはインデントしないでください。セクションの先頭にタブやスペースはありません。

3. パッケージ/説明

        パッケージの説明。

4. 構築/準備

        ソースの解凍またはパッチ適用のための一連のコマンド。これを未定義のままにしても安全です。

5. 構築/構成

        ソースが構成を使用しない場合、または通常の構成スクリプトがある場合は、未定義のままにすることができます。それ以外の場合は、configure コマンドをここに置くか、$(call Build/Configure/Default) を使用できます。

6. ビルド/コンパイル

       ソース コードをコンパイルする方法。ほとんどの場合、未定義に設定する必要があります。

7. ビルド/インストール

        コンパイルされたソースコードをインストールする方法。

8.開発のビルド/インストール

        パッケージのコンパイルに必要なファイル (静的ライブラリ、ヘッダー ファイル) をターゲットにしますが、ターゲット デバイスでは役に立ちません。

9. ビルド/クリーン

        掃除の際に取り除く必要があるものに。

10. パッケージ化/インストール

        $(1) で表される ipkg ディレクトリにファイルをコピーするための一連のコマンド。ソース コードとして、解凍してコンパイルしたソース コードからインストールされる相対パス、または $(PKG_INSTALL_DIR) を使用できます。これは、上記の手順でビルド/インストールしたファイルが終了する場所です。

        一部の定義には接頭辞「Package/」が付いており、他の定義には単に「Build」が付いているのは、単一のソースから複数のパッケージをビルドできるためです。OpenWrt はパッケージ Makefile ごとに 1 つのソースを想定して動作しますが、そのソースを必要な数のパッケージに分割することができますソース コードをコンパイルする必要があるのは 1 回だけであるため、「Build」定義のグローバル セットが存在しますが、BuildPackage への呼び出しを追加することで、任意の数の「Package/」定義を追加できます。dropbear パッケージの例を参照してください。

4. まとめ

        この記事ではOpenWrt BuildPackageの変数やマクロとその詳しい使い方をまとめています。

おすすめ

転載: blog.csdn.net/to_be_better_wen/article/details/132518667