반응형

개발 113

g

[Clang] C++ 빌드 시 undefined reference error 해결 방법

제가 WSL을 여러 번 설치하고 CMake로 빌드하면서 겪었던 상황과 문제에 대해서 공유해 보도록 하겠습니다. WSL, CMake 빌드 시 undefined reference error 해결 방법 1. 필수 standard lib 설치 및 지정 필요 아래와 같은 기본적인 명령어를 알지 못한다면 기본적으로 clang 설치 후 build-essential, libc++-10-dev 와 같은 라이브러리들을 설치하지 않아서 발생한 문제일 경우가 있습니다. undefined reference to `operator new undefined reference to `std::cout' 이 경우 clang version에 따라 아래와 같이 설치를 할 필요가 있습니다. sudo apt install libstdc++-..

개발/C, C++ 2023.12.02

g

[개발 환경] make, Makefile 기본 구조, 작성 방법

make와 Makefile은 개발할 때 많이 활용되는 빌드 도구 및 파일입니다. 기본적인 개념과 작성 방법에 대해서 알아보도록 하겠습니다. make, Makefile 기본 구조, 작성 방법 Make make는 소프트웨어 개발에서 자동 빌드 및 빌드 관리 도구입니다. 주로 C, C++, Python 및 다른 프로그래밍 언어로 작성된 프로젝트에서 사용됩니다. make는 프로젝트의 소스 코드 파일을 컴파일하고 링크하는 작업을 자동화하며, 이를 통해 개발자는 코드 변경 사항을 효과적으로 관리하고 프로젝트를 더 효율적으로 관리할 수 있습니다. make는 Makefile이라는 설정 파일을 사용하여 작동하며, 이 파일은 프로젝트의 구조와 의존성을 정의합니다. 각각의 작업 또는 "타깃"은 소스 파일, 명령어 및 의존성..

g

[C++] STL 컨테이너 unordered set, unordered map 사용법, 차이점

C++ 표준 라이브러리(STL)에는 다양한 컨테이너가 포함되어 있습니다. 여기서는 unordered_set과 unordered_map에 대해 알아보겠습니다. 이 두 컨테이너는 해시 테이블을 기반으로 하며, 특정 데이터를 빠르게 찾을 수 있는 장점이 있습니다. [C++] STL 컨테이너 unordered set, unordered map 사용법, 차이점 unordered_set 사용법 아래는 unordered_set 사용방법에 대한 예제 코드입니다. #include #include int main() { std::unordered_set mySet; // 요소 추가 mySet.insert(1); mySet.insert(2); mySet.insert(3); // 요소 확인 if (mySet.find(2) !..

개발/C, C++ 2023.11.21

g

[CMake] Ch4. WSL 설치하여 VS Code 원격 환경 구성해보기

이번 Ch4 에서는 WSL을 설치해서 VS Code를 WSL 환경에서도 CMake를 설정해보도록 하겠습니다. 추가로 Visual Studio 환경에서도 CMake 환경을 설정해볼 수도 있습니다. 만약 기본 환경인 윈도우 VS Code 만 진행하실 예정이라면 이번 Chapter는 그냥 넘어가셔도 좋습니다. WSL 이란? 리눅스용 윈도 하위 시스템(Windows Subsystem for Linux, WSL)은 윈도 10과 윈도 11에서 리눅스를 실행하기 위한 기능입니다. 즉 윈도우 내에서 리눅스를 사용하기 위한 가상 환경입니다. 이 WSL 덕분에 무거운 VirtualBox 같은 가상 OS 환경 프로그램을 설치하지 않고도 쉽게 리눅스를 사용할 수 있습니다. 따라서 저는 이 WSL을 활용하여 CMake를 사용하..

개발/CMake 2023.10.05

g

[CMake] Ch3. CMake 설치와 프로젝트 생성 (CMake, GCC, VS Code)

지금까지 기본 빌드 시스템에 대한 이해와 CMake에 대해서 간단히 알아보았습니다. 이제 본격적으로 실습을 해보도록 하겠습니다. 실습을 하기 위해서는 환경을 먼저 세팅해야겠죠? 여기서는 CMake를 설치하고 빌드해 볼 수 있는 여러 가지 환경을 알려드리도록 하겠습니다. 선택은 본인의 몫이지만, 가이드를 모든 환경에 맞추어서 하긴 어려워서 윈도에서 VS Code를 활용하여 진행하도록 하고 추후에 Visual studio 2022, VS Code + WSL 환경 활용한 환경을 가이드해 보도록 하겠습니다. 필요하신 분만 추가로 다른 글을 참고하여 진행하시면 될 것 같습니다. CMake 설치 윈도우에 CMake를 설치합니다. 공식 사이트 (https://cmake.org/download/)로 접속하여 cmake..

개발/CMake 2023.09.22

g

[CMake] Ch2. 빌드 시스템에 대한 이해

빌드와 빌드 시스템이란? Build라는 단어의 사전적 뜻이 무엇일까요? 별로 어렵지 않은 단어이죠. 만들다, 건물을 짓다, 창조하다 라는 뜻으로 자주 사용되는 단어입니다. 우리가 코딩을 하는 이유는 코딩을 통해 작성한 소스 코드를 가지고 원하는 동작을 하는 프로그램을 만드는 것입니다. 빌드를 한다는 것은 바로 이 과정을 수행하는 것입니다. 즉 소스코드를 프로그램으로 바꾸어 주는 행위가 바로 빌드를 하는 것이고 이렇게 할 수 있도록 도와주는 도구들을 빌드 시스템이라고 말합니다. 빌드 시스템은 각종 프로그램, 컴파일러, 링커, 스크립트 등을 포함하는 말입니다. C/C++ 코드를 빌드하기 위해서는 특정 프로그램만을 써야 하는 것은 아니고 선택적으로 사용할 수 있습니다. 이러한 빌드는 파일을 기계어로 변환하는 ..

개발/CMake 2023.09.15

g

[CMake] Ch1. CMake 의 소개와 장점

CMake 가 도대체 뭔가요? https://cmake.org/ CMake(Cross Platform Make)는 Make와 빌드 관리 시스템을 만들기 위해 윈도나 리눅스 계열과 상관없이 사용할 수 있는 Kitware 라는 회사의 오픈소스 프로젝트이자 빌드 파일(Unix MakeFile..)을 생성해 주는 프로그램입니다. 그럼 CMake만 있으면 소스 코드를 빌드하여 프로그램을 만들 수 있을까요? 아닙니다. 정확히 말하자면 CMake를 사용해서 C/C++ 프로젝트를 직접 빌드를 하는 것이 아니라, CMakeLists.txt 파일과 CMake 프로그램을 통해서 빌드를 할 수 있는 파일을 생성하게 되면 지정된 컴파일러를 통해서 make, ninja와 같은 명령어로 프로젝트를 빌드하는 것입니다. 예를 들어 M..

개발/CMake 2023.09.13

g

[C++] class 생성자에서 explicit 키워드의 의미

오늘은 class 생성자에 대해서 공부하다가 알게 된 explicit 키워드의 의미에 대해서 알아보겠습니다. class 생성자에서 explicit 키워드의 의미 explicit 키워드 C++에서 `explicit` 키워드는 주로 클래스의 생성자에 사용되며, 해당 생성자가 암시적 형 변환을 허용하지 않도록 지정하는 데 사용됩니다. `explicit` 키워드를 사용하면 해당 생성자가 명시적으로 호출되어야 하며, 암시적 형 변환이 자동으로 수행되지 않습니다. 1. 형 변환 오류를 방지: 암시적 형 변환이 허용되면 예상치 못한 형 변환이 발생할 수 있으며, 이는 버그의 원인이 될 수 있습니다. `explicit` 키워드를 사용하면 이러한 형 변환이 방지됩니다. 2. 의도적인 호출 강조: `explicit` 키워..

개발/C, C++ 2023.09.05

g

[C++] STL 컨테이너 Set과 Map 활용법과 차이점

컨테이너 중에서 많이 사용되는 Vector에 대해 알아보았고 그 다음으로 C++에서 많이 사용되는 Set와 Map 컨테이너에 대해서 알아보고 활용법과 차이점에 대해서 정리해 보도록 하겠습니다. C++의 Set과 Map 활용법과 차이점 Set: 중복 없이 유일한 값 관리 Set은 중복된 값을 허용하지 않는 데이터 구조입니다. 이를 통해 유일한 값을 저장하고 관리할 수 있습니다. 값을 정렬된 순서로 저장하며, 내부적으로는 레드-블랙 트리(Red-Black Tree) 또는 비슷한 자료 구조를 사용하여 빠른 검색 및 삽입을 제공합니다. 이러한 특징 때문에 집합 연산에 유용하게 사용할 수 있습니다. #include std::set mySet; mySet.insert(10); mySet.insert(20); myS..

개발/C, C++ 2023.09.02

g

[C++] STL 컨테이너 Vector 의 용도와 특징, 사용 예제

C언어에서 C++언어로 오면서 특징 중에 하나가 컨테이너입니다. STL에서 제공하는 여러 가지의 컨테이너에 대해서 알아볼 텐데 오늘은 가장 중요하고 많이 사용되는 Vector에 대해서 알아보도록 하겠습니다. STL 컨테이너 Vector 의 용도와 특징, 사용 예제 Vector란 Vector는 순차적인 데이터를 저장하고 관리하는 데 사용됩니다. 예를 들어, 배열처럼 연속적인 메모리 공간에 데이터를 저장하며, 데이터를 추가, 삭제, 수정하거나 검색하는 작업을 효율적으로 수행할 수 있습니다. 즉 전통적인 C스타일의 배열과 매칭되는 컨테이너입니다. Vector의 특징 동적 크기 조절 Vector는 크기를 동적으로 조절할 수 있기 때문에 초기에 얼마나 많은 요소가 필요한지 미리 알 필요가 없습니다. 이로써 메모리..

개발/C, C++ 2023.09.01
반응형