Buildrootにパッケージを追加しようとしていますが、あまり成功していません。私が追加しようとしているパッケージは、scewと呼ばれるautotoolsパッケージです。パッケージの追加に関するbuildrootガイドラインに従いました。パッケージは、make menuconfig
の実行時にリストされていますが、make
を実行すると、最後のrootfs.tar
からパッケージが欠落しています。
また、which
のインストールに使用する別のシンプルな.mk
ファイルをコピーし、それに応じて変数名とURLを変更しました。これがscew.mk
の私のコピーです。
SCEW_VERSION = 1.1.3
SCEW_SITE = http://savannah.nongnu.org/download/scew/
SCEW_LICENSE = GPLv3
SCEW_LICENSE_FILES = COPYING
$(eval $(autotools-package))
同じディレクトリにConfig.in
があり、次のようになっています。
config BR2_PACKAGE_SCEW
bool "scew"
help
google scew
また、package/Config.in
に次の行を追加しました。
menu "My Packages"
menu "Packages I Wrote"
source "package/MyPackages/packagesIWrote/hello/Config.in"
source "package/MyPackages/packagesIWrote/helloworld/Config.in"
endmenu
menu "External Packages"
source "package/MyPackages/external-packages/scew/Config.in"
endmenu
endmenu
パッケージが一覧表示され、選択できるため、この部分は機能しているようです。 helloおよびhelloworldパッケージは、このWebサイトから取得したパッケージ追加ガイドからのコピーです(フランス語で書かれています): Hello Wolrdの追加
Hello worldパッケージも機能しません。私はこれについて丸く一周しているようで、私が間違っていることを見ることができないので、私は少しのアドバイスでも喜んでいるでしょう。
見てください このプロジェクト 本当に良い例があります。
buildroot-packages/package/Config.in
を編集してパッケージを追加します
menu "buildroot-packages [external repo]"
source package/hola/Config.in
endmenu
.inファイルをフォルダに追加しますbuildroot-packages/package/hola/Config.in
config BR2_PACKAGE_HOLA
bool "hola"
depends on BR2_PACKAGE_SOME_PACKAGE
help
hola is an example of a program build with autotools for to be added
to buildroot
http://stackoverflow.com/users/4059304/simonppg
comment "hola no needs any toolchain w/ dynamic library, threads"
.mkも追加しますbuildroot-packages/package/hola/hola.mk
HOLA_VERSION = v0.0.1
HOLA_SITE = https://bitbucket.org/simonppg/hola
HOLA_SITE_METHOD = git
HOLA_AUTORECONF = YES
HOLA_DEPENDENCIES = some_package
$(eval $(autotools-package))
同じプロジェクト の指示に従って、buildrootディレクトリにパッケージをインストールまたはアンインストールします。
同じ問題が発生しているようです。他のパッケージは実行可能ファイルをビルドしてからディレクトリ./project_build_arm/my_device/root/usr/bin/
に削除しますが、追加したパッケージはビルドされてから./build_arm/staging_dir/usr/bin/
に削除されます。
この問題を回避するために、現在私がしているのは、ストリップされたバイナリを間違ったディレクトリから正しいディレクトリにコピーすることだけです。それは賢いわけではなく、正しくありませんが、(バンドエイドのような方法で)機能します。
何か問題が発生しているのはかなり高レベルの方法であるように思われるので、ビルドルートの経験が豊富な人が問題の実際の原因を診断するには、おそらく上記の説明で十分です。
...またはそれ以来、自分で解決しましたか?
ステージングディレクトリは、最終的なイメージの構築に必要なヘッダーと中間ステップツールに役立ちますが、rootfsでは不要です。また、構築されたストリップライブラリと実行可能ファイルにも使用されます。
ステージングからターゲットディレクトリへのコピー$(TARGET_DIRECTORY)
は通常、選択したターゲットrootfs構成(例:cramfs、squashfsなど)内で行われますが、多くの場合、rootfsに含めるファイルのリストはプラットフォーム構成ターゲット(例:generic、platform-something)のプレーンテキストファイル。