반응형

링킹 2

clang toolchain의 위력 (빌드 최적화, build time profiling)

인포테인먼트 제품을 개발하고 있고 Yocto 프로젝트 기반의 임베디드 리눅스를 기반으로 하고 있다. Yocto 버전은 dunfell을 사용하다가 작년에 kirkstone으로 고생해서 마이그레이션을 해서 사용중이다. 컴포넌트 하나가 이전에 4시간 걸렸던 것이 LTO (Link Time Optimization) 옵션을 적용해서 2시간으로 줄었다. 이 컴포넌트는 ARXML 기반으로 프로토콜이 작성되어 있고 이것이 code generator을 통해 헤더와 코드가 생성되고 라이브러리가 생성되는 구조이다. 그렇기에 엄청나게 많은 파일이 linking 단계에서 사용되어 오래걸렸던 것이다. LTO는 빌드 시간이 더 걸릴 수 있다고 봤지만 이 경우에는 엄청나게 단축되었다. 3가지 variant가 있는데 최근 업그레이드 ..

Linux 2024.06.06

gcc compiler - 1부

유닉스 리눅스 필수 유틸리티 도서 3부 (컴파일과 링킹)을 보고 정리해보고자 한다. 그 첫번째 순서로 3부 4장. gcc compiler에 대해서 알아본다. 1. 컴파일의 의미 인간이 이해할 수 있는 형식 언어 (C, C++등)로 작성된 소스코드를 CPU가 이해할 수 있는 기계어(machine instruction)로 번역하는 과정 gcc로 빌드할 대 -g 옵션을 주면 이후 objdump -S 옵션으로 생성된 결과 파일의 디버깅 정보와 함께 instruction, instruction에 대응하는 assemble 코드를 함께 볼 수 있다. $ gcc -g -o like like.c $ objdump -S like 2. 알아 두면 정말 유용한 C 소스 컴파일 과정 /usr/bin/gcc는 실제 컴파일 과정을..

Linux 2023.04.18
728x90
반응형