임베디드 관련 카테고리/C++10 실무에서 꼭 알아야 할 네이밍 규칙 완벽 가이드 개발을 하다 보면 "이 변수 이름을 뭐라고 지을까?"라는 고민을 자주 하게 됩니다. 좋은 코드의 첫 걸음은 바로 일관된 네이밍 규칙에서 시작됩니다. 오늘은 실무에서 반드시 알아야 할 네이밍 규칙들을 정리해보겠습니다.왜 네이밍 규칙이 중요할까?네이밍 규칙은 단순히 코딩 스타일의 문제가 아닙니다. 다음과 같은 이유로 매우 중요합니다:가독성 향상: 일관된 규칙으로 코드를 더 쉽게 읽을 수 있습니다팀 협업: 모든 개발자가 같은 규칙을 사용하면 의사소통이 원활해집니다유지보수성: 나중에 코드를 수정할 때 의도를 파악하기 쉽습니다전문성: 업계 표준을 따르는 것은 개발자의 기본 소양입니다1단계: 기본 네이밍 케이스 이해하기먼저 주요 네이밍 케이스들을 정의해보겠습니다:PascalCase (파스칼 케이스)정의: 모든 단어.. 임베디드 관련 카테고리/C++ 2025. 8. 7. C++ constexpr과 전역변수: 컴파일 시점 상수와 링크 에러 해결법 1. constexpr의 기본 개념C++에서 constexpr은 컴파일 시점에서 값이 결정되는 상수 표현식을 의미하는 키워드입니다. 이 키워드는 변수와 함수 모두에 사용할 수 있으며, 컴파일러가 컴파일 단계에서 가장 먼저 처리합니다.constexpr int MAX_SIZE = 100; // 변수에 사용constexpr int square(int x) { // 함수에 사용 return x * x;}2. constexpr vs const static: 정의 시점의 차이constexpr과 const static의 주요 차이점은 언제 값이 정의되는가에 있습니다. 2-1. constexpr의 특징컴파일 시점에서 값이 결정됨컴파일러가 값을 미리 계산하여 상수로 치환런타임 오버헤드가 없음2-2. const .. 임베디드 관련 카테고리/C++ 2025. 8. 6. C++ 정적 라이브러리 vs 동적 라이브러리 비교 프로젝트 프로젝트 배경임베디드 개발에서의 라이브러리 의존성 문제NVIDIA Jetson 시리즈(TX2, ORIN 등)에서 임베디드 개발을 진행하다 보면 다음과 같은 상황을 자주 경험하게 됩니다:문제 상황:TX2 보드에서 개발하고 빌드한 프로젝트가 정상 작동동일한 코드를 ORIN 보드로 업그레이드하여 새로 빌드빌드는 성공하지만 실행 시 다양한 오류 발생일반적인 오류 사례:# 라이브러리 버전 불일치./my_app: /usr/lib/aarch64-linux-gnu/libopencv_core.so.4.2: version `OPENCV_4.5' not found# 라이브러리 경로 문제./my_app: error while loading shared libraries: libcudnn.so.8: cannot open sha.. 임베디드 관련 카테고리/C++ 2025. 7. 8. Bazel과 nlohmann/json을 활용한 멀티스레드 안전 싱글턴 패턴 구현 이번 포스트에서는 Bazel 빌드 시스템을 사용하여 외부 라이브러리(nlohmann/json)를 다운로드하고, 멀티스레드 환경에서 안전하게 작동하는 싱글턴 패턴을 구현하는 방법을 소개합니다.프로젝트 개요이 프로젝트의 핵심 목표는 다음과 같습니다:외부 라이브러리 관리: nlohmann/json 라이브러리를 온라인에서 다운로드하여 정적 라이브러리로 링크설정 파일 관리: JSON 설정 파일을 바이너리와 함께 배포하고 런타임에 읽기멀티스레드 안전성: 싱글턴 패턴으로 구현된 설정 클래스를 여러 스레드에서 안전하게 사용프로젝트 구조├── MODULE.bazel├── repositories.bzl├── BUILD├── config.json├── third_party/│ ├── BUILD│ └── nlohman.. 임베디드 관련 카테고리/C++ 2025. 7. 7. Bazel을 활용한 정적 라이브러리 빌드 실전 가이드 이전 포스트에서 라이브러리 의존성 문제와 해결 방법에 대해 다뤘습니다. 이번에는 Google의 Bazel 빌드 도구를 활용하여 동적 라이브러리 중 필요한 부분만 정적 라이브러리로 변환하는 구체적인 방법을 살펴보겠습니다.Bazel이란?Bazel은 Google에서 개발한 빌드 도구로, 대규모 프로젝트에서 빠르고 안정적인 빌드를 제공합니다. 특히 다음과 같은 장점이 있습니다:증분 빌드: 변경된 부분만 다시 빌드병렬 빌드: 멀티코어 환경에서 효율적인 빌드재현 가능한 빌드: 동일한 입력에 대해 항상 동일한 출력크로스 플랫폼 지원: Linux, macOS, Windows 지원Bazel의 핵심 장점: 온라인 의존성 관리Bazel의 가장 큰 장점 중 하나는 온라인에서 특정 라이브러리 버전을 자동으로 다운로드하여 정적 .. 임베디드 관련 카테고리/C++ 2025. 7. 7. C++ 프로젝트에서 라이브러리 의존성 문제 해결하기 C++ 프로젝트를 진행하면서 가장 골치 아픈 문제 중 하나는 바로 라이브러리 의존성 문제입니다. 내 개발 환경에서는 완벽하게 작동하던 코드가 다른 환경에서는 빌드조차 되지 않는 경험, 한 번쯤은 겪어보셨을 것입니다. 이번 포스트에서는 이러한 문제의 원인과 해결 방법을 정리해보겠습니다. 정적 라이브러리 vs 동적 라이브러리정적 라이브러리 (Static Library)정적 라이브러리는 여러 오브젝트 파일(.o)들을 하나의 아카이브 파일(.a)로 묶어놓은 것입니다. 컴파일 시점에 실행 파일에 포함되어 배포되므로, 실행 시 별도의 라이브러리 파일이 필요하지 않습니다.동적 라이브러리 (Dynamic Library)동적 라이브러리는 실행 시점에 외부에서 불러와 사용하는 라이브러리입니다. Linux에서는 .so(S.. 임베디드 관련 카테고리/C++ 2025. 7. 7. CMake와 Meson에서 만든 정적 라이브러리 .a 파일, 호환이 될까? C++ 프로젝트를 빌드할 때 자주 사용되는 빌드 시스템인 CMake와 Meson, Bazel.이 두 빌드 시스템은 내부 구조가 다르지만, 둘 다 .cpp 파일을 컴파일해 .o를 만들고, .o를 모아서 .a라는 정적 라이브러리를 생성한다는 점은 같습니다.그렇다면,CMake로 만든 .a 정적 라이브러리 파일을 Meson 프로젝트에서 사용할 수 있을까요?혹은 그 반대는 가능할까요?결론부터 말씀드리면, 가능합니다. 하지만 몇 가지 조건을 만족해야 해요.정적 라이브러리 .a의 정체정적 라이브러리(.a)는 여러 개의 오브젝트 파일(.o)을 묶은 압축 파일로, 실행파일을 만들 때 링커가 참조하는 대상입니다.📦 예시:ar rcs libmylib.a file1.o file2.o이 파일은 libmylib.a라는 이름의 .. 임베디드 관련 카테고리/C++ 2025. 4. 11. C++ 빌드 개념과 오브젝트 파일(.o), 정적 라이브러리(.a), 링커 이해하기 C++ 개발을 시작하면 반드시 마주치는 개념 중 하나가 바로 오브젝트 파일(.o), 정적 라이브러리(.a), 그리고 **링커(Linker)**입니다.특히 CMake나 Meson처럼 빌드 시스템을 사용하여 다양한 디렉터리로 나뉘어진 프로젝트를 빌드할 때, 이 구조에 대한 이해는 필수예요.이 글에서는 빌드 과정을 쉽게 설명하고, 실무에서 자주 겪는 정적 라이브러리 연동과 링커의 역할까지 함께 정리해보겠습니다.🛠️ C++ 빌드 과정, 단계별로 이해하기C++ 프로그램은 아래와 같은 과정을 거쳐서 실행파일이 됩니다.1. 전처리 (Preprocessing)#include, #define, #ifdef 같은 전처리 지시문을 처리하는 단계입니다..cpp 파일에서 헤더 파일들을 실제 코드로 치환해 .i 파일을 만들어냅.. 임베디드 관련 카테고리/C++ 2025. 4. 11. Windows에서 Meson 설치 및 Hello World C++ 코드 빌드 방법 이 가이드에서는 Windows 환경에서 Meson을 설치하고, 간단한 Hello World C++ 프로그램을 Meson 빌드 시스템을 사용하여 빌드하는 방법을 설명합니다. 단계별로 설치 및 설정 과정을 따라가면서 C++ 프로젝트를 빌드하는 방법을 알아보겠습니다. 1. 필요한 도구 설치1.1 Python 설치Meson은 Python을 사용하여 작동합니다. 먼저 Python을 설치해야 합니다.Python 공식 사이트에서 Python 설치 파일을 다운로드합니다.설치할 때 "Add Python to PATH" 옵션을 체크한 후 설치를 진행합니다.설치 후 터미널에서 Python이 정상적으로 설치되었는지 확인합니다.python --version1.2 Meson 설치Meson은 Python을 통해 설치할 수 있습니다.. 임베디드 관련 카테고리/C++ 2024. 9. 4. C++와 TensorFlow를 이용한 쓰레기 이미지 분류 안녕하세요, 여러분! 오늘은 C++과 TensorFlow를 이용하여 쓰레기 이미지를 분석하고 분류하는 방법에 대해 알아보려고 합니다. 이 과정에서는 사전 학습된 CNN 모델을 사용하여 이미지가 유리, 플라스틱, 알루미늄, 종이, 또는 재활용할 수 없는 재질인지 분류합니다.TensorFlow 모델 다운로드TensorFlow 허브는 다양한 사전 학습된 모델을 제공하는 저장소입니다. 이 중 MobileNet V2 모델을 사용하여 이미지를 분류해 보겠습니다. MobileNet V2 모델은 경량화된 신경망으로, 모바일과 임베디드 애플리케이션에 적합합니다.모델 다운로드 링크: https://www.kaggle.com/models/google/mobilenet-v2/준비 사항TensorFlow 모델 다운로드: 사전 .. 임베디드 관련 카테고리/C++ 2024. 7. 25. 이전 1 다음 728x90 반응형