본문 바로가기
취미/linux 기초

Buildroot 에 Package 추가 (helloworld)

by 심심해43 2022. 10. 24.
반응형

몇 년 전에 한번 해본 것 같긴 한데... 생각이 안 나 검색을 해봅니다.  

 

역시나 고수님들이 친절하게 설명해 놓은것들이 많이 있습니다.  

 

buildroot  / yocto 등 개발환경이 바뀔 때마다.. 매우 머리가 아픕니다... 

 

참조 링크 1

참조 링크 2

 

참조링크1,2 의 설명을 바탕으로 내 환경에 맞게 따라서 테스트를 해보고 기록해봅니다.  

우선 저는 패키지를 추가하는 방법을 시도해봅니다. 

 

1. Buildroot/package 폴더 내에 원하는폴더를 만듭니다.  

    최대한 간단하게 helloworld를 빌드, 테스트 할것이기 때문에  

Buildroot/package/helloworld  라고 폴더를 만들었습니다. 

 

2. Buildroot/package/helloworld  내의  만든 폴더 안에 Config.in 파일을 생성/ 수정합니다. 

$ vi Config.in
config BR2_PACKAGE_HELLOWORLD
        bool "helloworld"
        default n
        help
          This is a HELLOWORLD package to show how to integrate a new package into Buildroot.

 

3. Buildroot/package/helloworld  내에  helloworld.mk 파일을 만들고 내용을 수정합니다. 

   WEB에서 다운로드하는 구조가 아니기 때문에 폴더의 경로를 지정하고  local로 지정하는 듯 합니다.

   실제 빌드 폴더에는 helloworld-0.0.1  라는 폴더가 복사되어 생깁니다. 

#
# Test mk file for helloworld
#

HELLOWORLD_VERSION = 0.0.1
HELLOWORLD_SITE = $(TOPDIR)/helloworld   # Makefile, hello.c  ...source dir 
HELLOWORLD_SITE_METHOD = local
HELLOWORLD_LICENSE = GPLv2+

define HELLOWORLD_BUILD_CMDS
    $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D)
endef

define HELLOWORLD_INSTALL_TARGET_CMDS
    $(INSTALL) -m 0755 -D $(@D)/out_world $(TARGET_DIR)/usr/bin/out_world
endef

$(eval $(generic-package))

 

4. Buildroot/package내에 Config.in  파일을 열어 메뉴를 추가합니다. 

알아보기 쉽게 맨마지막에 큰 카테고리를 하나 만들고 helloworld 를 추가합니다. 

~~~~~~

menu "myApp test menu"
        source "package/helloworld/Config.in"
endmenu

 

~~~~~~~

 

5. 메뉴를 다 추가 했으면,  실제 소스를  설정한 위치에 맞춰 줍니다. 

 

6. 추가한 패키지를 별도로 빌드해봅니다.  

- 패키지 별도 빌드 

$ make <package>-rebuild

$ make  helloworld-rebuild

 

- 환경설정 다시하기 

$ make <package>-reconfigure

 

- 다시 설치하기
$ make <package>-reinstall

 

- 빌드 디렉터리 삭제하기
$ make <package>-dirclean

 

7. 패키지가 추가는 된것 같은데 문제가 있습니다.

  크로스 컴파일이 안된것 같습니다.

   Source 폴더내의  makefile을 너무 간단하게 테스트용으로 만들어서

   상위 환경변수를 받아오지 않게 되어있습니다.  

   

   소스폴더 내의 makefile 를 수정 해서 Buildroot 의 환경변수를 받아올수있도록 수정합니다. 

   helloworld에서는 고정된값으로 설정한 부분만 풀어주니 자동적용 되는듯 합니다. 

   

'취미 > linux 기초' 카테고리의 다른 글

linux WEBCAM 연결시 정보 확인법.  (0) 2022.10.27
pkg-config 사용법  (0) 2022.10.25
Linux 에서 gcc-arm-linux-gnueabihf 설치 버전 지정  (0) 2022.10.21
linux 파일 링크 만들기  (0) 2022.10.21
cmake로 CrossCompile 하기  (0) 2022.10.20

댓글