몇 년 전에 한번 해본 것 같긴 한데... 생각이 안 나 검색을 해봅니다.
역시나 고수님들이 친절하게 설명해 놓은것들이 많이 있습니다.
buildroot / yocto 등 개발환경이 바뀔 때마다.. 매우 머리가 아픕니다...
참조링크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 |
댓글