SDKに静的ライブラリを含める方法を検索した人は、必ずthis thread from 2014とお読みください。私は彼らが提案したものを試しましたが、うまくいかなかったのです。sdkで静的ライブラリを取得するには?
yocto megaマニュアルバージョン2.1(yocto morty)を読むと、5.9.12章にあります。 (Poky参照分布の変更)、DISABLE_STATIC変数を追加して静的ライブラリの生成を無効にすることができます。私は私のレシピにこれを追加してみました、そして、それはSDKに静的ライブラリを追加し有効にしなかった。
DISABLE_STATIC = ""
イメージを構築するとき、私はSYSROOTでライブラリを見ることができます。しかし、SDKには入っていません。
SDKで静的ライブラリとヘッダーを取得するには、どうすればよいですか? local.conf
に'IMAGE_INSTALL'にstaticdevパッケージを追加して働いていたが、私はそれを行うにはしたくない何
。
私は自分の問題を示すレシピの例を作成しました。ディレクトリ構造はこのようなものです:
example-staticlib/
example-staticlib/example-staticlib_0.1.bb
example-staticlib/files/
example-staticlib/files/lib.c
example-staticlib/files/lib.h
example-staticlib/files/Makefile
example-staticlib_0.1.bb:
DESCRIPTION = "example stared library"
LICENSE = "LGPLv2"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/LGPL-2.0;md5=9427b8ccf5cf3df47c29110424c9641a"
SRC_URI = "file://lib.c \
file://lib.h \
file://Makefile"
PR = "r0"
S = "${WORKDIR}"
ALLOW_EMPTY_${PN} = "1"
do_install() {
oe_runmake install DEST=${D}
}
TOOLCHAIN_TARGET_TASK += "example-staticlib-dev"
TOOLCHAIN_TARGET_TASK += "example-staticlib-staticdev"
lib.c:
int foo()
{
return 42;
}
lib.h:
int foo();
メイクファイル:
TARGET=libexample.a
all:$(TARGET)
install :
@install -d $(DEST)/usr/lib/
@install -m 0644 $(TARGET) $(DEST)/usr/lib/
@install -d $(DEST)/usr/include/
@install -m 0644 lib.h $(DEST)/usr/include/
$(TARGET) : lib.c
$(CC) -c lib.c -o lib.o
$(AR) rcs [email protected] lib.o
clean:
rm -rf lib.o $(TARGET)
SDKで静的ライブラリを取得するには、正確にレシピを変更するにはどうすればよいですか?
ええ、2行を削除してください。 '.a'ファイルは' $ {PN} -staticdev'パッケージによって自動的に選択されます。 – Anders
私の追加したメモを見てください。 – Anders
私の最後のコメントの前に私の答えに何を追加したかを見てください。 toolchain変数nを画像レシピの先頭に追加する必要があります。 – Anders