정적 라이브러리를 SDK에 포함시키는 방법을 모색 한 사람은 모두 this thread from 2014이어야합니다. 나는 그들이 제안한 것을 시도했지만, 효과가 없었다.sdk에서 정적 라이브러리를 얻는 방법은 무엇입니까?
yocto mega manual 버전 2.1 (yocto morty)을 읽으면서, 5.9.12 장을 읽었습니다. (Poky Reference Distribution Changes), 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에서 정적 라이브러리를 얻으려면 정확히 어떻게 레시피를 수정해야하나요?
네, 두 줄을 제거하십시오. '.a' 파일은'$ {PN} -staticdev' 패키지에 의해 자동으로 선택됩니다. – Anders
추가 된 쪽지보기. – Anders
내가 마지막으로 대답하기 전에 내 대답에 무엇을 추가했는지 살펴보십시오. 툴체인 변수 n을 이미지 레서피 위에 추가해야합니다. – Anders