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の変数やマクロとその詳しい使い方をまとめています。