본문 바로가기

Build System8

GCC attribute GCC __attribute__(())gcc 컴파일러가 제공하는 확장 기능으로 속성을 지정하는 키워드해당 키워드를 통해서 변수 혹은 함수에 대한 속성을 지정할 수 있음. 종류__attribute__((__used__)): 컴파일 시 최적화를 통해 사용하지 않는 변수들을 제외하는데 해당 속성을 지정하게 되면 사용하지 않는 변수에 대해서 제외시키지 않음__attribute__((__aligned__(x))): 선언한 변수의 메모리 주소를 x 크기로 align__attribute__((__packed__)): 구조체 변수에 대해서 padding을 하지 않고 실제 data의 size만큼 할당. (4byte align)ex)  1번 case의 경우 padding에 의해 8byte 메모리를 할당. / 2번 case.. 2024. 8. 9.
Yocto Project Yocto Project는 임베디드 소프트웨어를 위한 사용자 정의의 리눅스 배포판 생성을 가능하게 하는 절차들과 도구를 만들어내기 위한 오픈소스 프로젝트 Bitbake는 python과 shell script로 작성되어 embedded linux의 크로스 컴파일 과정을 위한 패키지와 관련파일들을 빌드하는데 사용되는 tool(상기 이미지의 파란색 부분) Poky는 yocto의 reference system으로서 가장 2024. 8. 9.
CMake CMake개요기존 Makefile를 조금 더 쉽고 편리하게 작성할 수 있는 툴로써, 프로젝트의 규모가 커짐에 따라 관리해야하는 소스 파일의 양이 많아지고, 의존성이 많이 생겨 소스 관리가 어려워지는 Makefile의 한계를 해결하기 위해 탄생하였습니다. 소스 코드와 결과물 사이의 추상화를 통해 프로젝트 관리가 쉬워지는 장점이 있음 "CMake는 프로젝트를 빌드하는 것이 아닌 빌드 스크립트 파일(Makefile)을 생성해주는 프로그램" How to useCMake를 사용하기 위해서는 가장 먼저 CMakeLists.txt를 작성해주어야 함 1.기본 CMakeLists.txtCMakeLists.txt에는 반드시 CMake 최소 버전과 프로젝트 버전을 반드시 기재해 주어야 함# 요구 CMake 최소 버전cmak.. 2024. 8. 9.
GCC attribute gcc컴파일러가 제공하는 확장 기능으로 속성을 지정하는 키워드 해당 키워드를 통해서 변수 혹은 함수에 대한 속성을 지정할 수 있음. 종류 __attribute__((__used__)): 컴파일 시 최적화를 통해 사용하지 않는 변수들을 제외하는데 해당 속성을 지정하게 되면 사용하지 않는 변수에 대해서 제외시키지 않음 __attribute__((__aligned__(x))): 선언한 변수의 메모리 주소를 x 크기로 align __attribute__((__packed__)): 구조체 변수에 대해서 padding을 하지 않고 실제 data의 size만큼 할당. (4byte align) ex) 1번 case의 경우 padding에 의해 8byte 메모리를 할당. / 2번 case의 경우 해당 키워드를 통해 5b.. 2024. 2. 2.
PACKAGECONFIG Description Yocto recipe상에서 해당 레시피에 대한 feature에 대하여 enable하거나 disable 또는 dependency를 설정할 수 있는 변수로서 아래와 같은 형태로 사용한다. 기본형태 PACKAGECONFIG ??= "f1" PACKAGECONFIG[f1] = "--with-f1,--without-f1,build-deps-f1,rt-deps-f1" 1. PACKAGECONFIG에 명시된 feature에 대하여 해당 feature에 대한 configure를 설정 ex) f1이 PACKAGECONFIG에 명시되어 있으므로 PACKAGECONFIG[f1]이 활성화 되어 정의된 configure 적용 2. 각 feature에 대한 configure 설정, 4 가지 config 설.. 2022. 3. 15.
Bitbake 명령어 Bitbake 명령어task 실행bitbake -C task이후의 모든 과정 실행              -c  특정 task만 실행 unpack: src fetchconfigure: 빌드 config 설정compile: 컴파일cleanall: repository를 포함한 모든 정보 제거recipe 내 bitbake util1.bb.utils.contains"${@bb.utils.contains('VAR', 'test', 'libtest.so', '', d)}"상기 구문의 경우 VAR라는 변수에 'test'가 있으면 3번째 인자를 선택하고, 아니면 4번째 인자를 선택하는 util example# 해당 예제의 경우 INVITE_PLATFORM 변수에 hud-display가 존재하면 file://0001-.. 2021. 9. 15.
728x90