Buildroot에 autotools 패키지를 추가하는 방법은 무엇입니까?

Buildroot에 autotools 패키지를 추가하는 방법은 무엇입니까?

별다른 성공 없이 buildroot에 패키지를 추가하려고 합니다. 제가 추가하려는 패키지는 scew라는 자동화된 도구 패키지입니다. 패키지 추가에 대한 빌드루트 가이드를 따랐으며 make menuconfig패키지를 실행할 때 패키지가 나열되지만 make최종 rootfs.tar.

.mk또한 설치를 위해 또 다른 간단한 파일을 복사 which하고 이에 따라 변수 이름과 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 패키지는 이 웹사이트에서 가져온 패키지 추가 가이드의 사본입니다(프랑스어로 작성됨).Hello World 추가

hello world 패키지도 작동하지 않습니다. 나는 이 문제에 대해 그냥 맴돌고 있고 내가 뭘 잘못하고 있는지 알 수 없는 것처럼 보이기 때문에 어떤 조언이라도 기꺼이 받아들일 것입니다.

답변1

보세요이 프로젝트아주 좋은 예가 있습니다.

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 디렉터리에 설치하거나 제거합니다.

답변2

스테이징 디렉토리는 최종 이미지를 빌드하는 데 필요한 헤더 및 중간 단계 도구에 유용하지만 rootfs에서는 필요하지 않으며 제거된 라이브러리 및 실행 파일을 빌드하는 데에도 사용됩니다.

스테이징에서 대상 디렉터리로 복사하는 작업은 $(TARGET_DIRECTORY)일반적으로 선택한 대상 rootfs 구성(예: crushfs, squashfs 등)에서 수행되지만 일반적으로 rootfs에 포함될 파일 목록은 플랫폼 구성 대상( 예: 순수 공통, 텍스트 파일의 플랫폼 콘텐츠).

답변3

동일한 문제가 있는 것 같습니다. 다른 패키지는 실행 파일을 빌드한 다음 이를 디렉터리로 제거하는 반면 ./project_build_arm/my_device/root/usr/bin/, 내가 추가한 패키지는 빌드한 다음 디렉터리로 제거합니다 ./build_arm/staging_dir/usr/bin/.

이 문제를 해결하기 위해 지금까지 수행한 작업은 제거된 바이너리를 잘못된 디렉터리에서 올바른 디렉터리로 복사하는 것입니다. 똑똑하지도 않고 정확하지도 않지만 (반창고 방식으로) 작동합니다.

문제가 무엇이든 상당히 진보된 방식으로 수행된 것으로 보이므로, 빌드 루트 경험이 있는 사람이라면 위의 설명만으로도 문제의 실제 원인을 진단하기에 충분할 수 있습니다.

...아니면 스스로 알아낸 건가요?

관련 정보