본 글에서는 MacOS에 CLion을 설치하는 방법에 대해 설명합니다. CLion은 기본적으로 CMake를 기반으로 코드 인덱싱을 수행하므로, 코드 내비게이션 기능(단축키 등을 통해 원하는 함수, 변수, 정의 등으로 한번에 이동하는 기능)을 사용하기 위해서는 CMake가 정상적으로 동작해야 합니다. 또한 CMake가 정상 동작하기 위해서는 Toolchain 설정까지 완료되어야 합니다. 본 글에서 사용된 설치 환경은 다음과 같습니다. Mac H/W : iMac(Intel) MacOS : Big Sur 버전 11.2.3 CLion : 2020.3.3 CLion 설치 CLion 홈페이지에서 Mac용 CLion을 다운로드하여 설치합니다. www.jetbrains.com/clion/download/#section..
본 글은 SNMP 표준 중 RFC 2579 Textual Conventions for SMIv2 표준에 정의된 RowStatus 객체의 의미와 그 사용 방법을 정리한 글입니다. 테이블 유형의 MIB 오브젝트 MIB를 정의할 때, 테이블 유형의 오브젝트를 정의할 수 있습니다. 테이블 유형의 오브젝트는 공통된 형식의 정보 묶음이 하나 이상 존재할 경우에 사용됩니다. 예를 들면 다음과 같습니다. SNMP 관리 대상 장치에 장착된 하나 이상의 네트워크 인터페이스에 대한 정보를 관리하고자 하는 경우, 각 네트워크 인터페이스는 보통 공통된 상태정보(들)을 가집니다. 예: 연결상태, IP주소, 송신패킷 수, 수신패킷 수 등 이처럼 공통된 상태정보(들)을 하나의 정보 묶음으로 정의합니다. 각 네트워크 인터페이스에 대한..
본 글은 RFC 2579 Textual Conventions for SMIv2 표준에 기술된 RowStatus에 대해 정리한 글입니다. 용어 정의 열 요구사항 : 개념적 행 생성을 위한 "SET" 프로토콜 동작 수행 시, 값이 반드시 제공되어야 하는 열 객체들 해당 열 객체들 모두에 대한 값이 설정되지 않으면 개념적 행이 생성될 수 없다. 필요 열 : 개념적 행 생성을 위한 "SET" 프로토콜 동작 수행 시, 값이 반드시 제공되어야 하는 열 객체 해당 열 객체에 대한 값이 설정되지 않으면 개념적 행이 생성될 수 없다. MIB 모듈 : 원하는 특정 MIB 를 정의한 것 (즉, ASN.1 파일에 정의된 내용이라고 보면 된다) RowStatus 정의 개념 RowStatus textual convention은 ..
현상 프로그램 빌드 시 다음과 같은 에러가 발생하는 경우가 있습니다. 이는 링크 에러로써, 각 mp_* 함수를 찾을 수 없다는 의미입니다. undefined reference to `mp_prime_is_prime' undefined reference to `mp_sqrmod' undefined reference to `mp_lcm' undefined reference to `mp_gcd' undefined reference to `mp_mod_d' undefined reference to `mp_toradix' undefined reference to `mp_set_int' undefined reference to `mp_get_int' undefined reference to `mp_get_int' ..
현상 프로그램 실행 중 다음과 같은 에러가 발생하며 프로그램이 종료되는 경우가 있습니다. free(): invalid size Aborted 원인 이는 메모리 관련 에러가 발생했음을 나타냅니다. 다음 중 하나의 문제일 수 있습니다. 할당되지 않은 메모리 포인터를 해제(free())하고자 하는 경우 이미 해제된 메모리 포인터를 다시 해제하고자 하는 경우 위와 같이 코드를 작성하지 않았음에도 이러한 현상이 발생하는 경우, 버퍼 오버플로우가 발생했거나 써서는 안 될 메모리에 무언가를 써서 heap corruption이 발생했을 수 있습니다. 해결 방안 디버거 등을 사용하여 에러 발생 시점에 프로그램이 무엇을 하고 있었는지 확인해 봅니다. 해당 시점에서 문제점을 찾지 못할 경우, 그보다 이전 시점 어딘가에서 문..
현상 프로그램 빌드 시 다음과 같은 에러가 발생하는 경우가 있습니다. 이는 링크 에러로써, log10f 함수를 찾을 수 없다는 의미입니다. undefined reference to log10f 해결 방법 "-lm" 옵션으로 math 라이브러리를 링크해 주면 해결됩니다.
개요 ffmpeg은 오픈 소스 기반의 영상/음성 기록, 변환, 스트리밍 솔루션이며, 공식 웹사이트는 다음과 같습니다. https://www.ffmpeg.org/ 본 글에서는 ffmpeg을 ARM 기반 임베디드 리눅스 플랫폼용으로 빌드하는 방법에 대해 소개합니다. 빌드 환경은 Ubuntu 16.04 리눅스입니다. 크로스 컴파일러 설치 Ubuntu 16.04 리눅스 환경에서, ffmpeg을 빌드하기 위한 크로스 컴파일러를 설치합니다. 여기서는 "arm-linux-gnueabihf-gcc"를 사용합니다. $ sudo apt update $ sudo apt install gcc-arm-linux-gnueabihf ffmpeg 소스패키지 다운로드 https://www.ffmpeg.org/download.html에..
개요 JSMN(JSON parse library)는 JSON 구문 파싱 라이브러리이며, 공식 웹사이트는 아래와 같습니다. zserge.com/jsmn/ 본 글에서는 JSMN 라이브러리를 ARM 기반 임베디드 리눅스 플랫폼용으로 빌드하는 방법에 대해 소개합니다. 빌드 환경은 Ubuntu 16.04 리눅스입니다. 크로스 컴파일러 설치 Ubuntu 16.04 리눅스 환경에서, jsmn 라이브러리를 빌드하기 위한 크로스 컴파일러를 설치합니다. 여기서는 "arm-linux-gnueabihf-gcc"를 사용합니다. $ sudo apt update $ sudo apt install gcc-arm-linux-gnueabihf JSMN 소스 패키지 다운로드 github.com/zserge/jsmn에서 JSMN 라이브러리..
개요 CURL 라이브러리는 URL 기반으로 데이터를 웹으로 전송하는 기능을 제공하는 라이브러리입니다. 웹으로 전송하기 위해 HTTP/TCP/IP 통신을 직접 구현할 수도 있지만, CURL 라이브러리를 사용하면 TCP/IP 소켓 제어 및 HTTP 통신을 직접 제어할 필요 없이 쉽게 수행할 수 있습니다. CURL 라이브러리의 공식 웹사이트는 아래와 같습니다. curl command line tool and library for transferring data with URLs (since 1998) Supports... DICT, FILE, FTP, FTPS, GOPHER, GOPHERS, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, MQTT, POP3, POP3S, RTMP, RT..
개요 이번 글에서는 Visual Studio 2017에서 setup 프로젝트(설치형 프로그램을)를 만들고 배포하는 방법에 대해 소개합니다. C# winform 기반의 프로그램을 예제로 사용했으며, 해당 프로그램은 C/C++ 기반의 dll도 함께 사용합니다. Visual Studio Installer 설치 1. 비주얼 스튜디오 상단 메뉴의 "도구" → "확장 및 업데이트" 메뉴를 선택합니다. 2. "확장 및 업데이트" 창의 좌측 메뉴에서 "온라인" 항목을 선택하여 검색창에 "install" 입력해서 검색 후 'Microsoft Visual Studio Installer Projects' 항목을 다운로드합니다. 3. 비주얼 스튜디오 프로그램 종료 후 설치를 진행합니다. Setup Project 생성 1. s..
개요 Visual studio code(vscode)는 범용 코드 편집기로써, 특정 프로그래밍 언어에 종속되지 않고 다양한 분야에서 많이 사용되고 있습니다. C/C++ 언어 기반의 소프트웨어를 개발하는데에도 사용될 수 있는데, 아쉽게도 vscode는 자체 컴파일러(툴체인)은 포함하고 있지 않아, 코드 작성 시에는 vscode를 이용하고 컴파일(빌드) 시에는 별도의 컴파일러(툴체인)을 사용해야 합니다. 다행히 vscode에서는 Remote-WSL이라는 플러그인을 통해 vscode 내에서 WSL(Windows Subsystem for Linux)의 터미널을 사용할 수 있는 기능을 제공합니다. 이를 이용하면 vscode 내에서 WSL의 컴파일러(툴체인)을 이용하여 코드를 바로 컴파일(빌드)할 수 있습니다. 여..
개요 pps-tools는 시스템의 Kernel PPS 기능을 사용할 수 있는 오픈소스 유틸리티(github.com/redlab-i/pps-tools)입니다. pps-tools 내에 포함된 timepps.h 파일을 이용하여 Kernel PPS 관련 시스템콜을 호출하는 어플리케이션을 개발할 수 있으며, pps-tools 빌드 시 생성되는 ppstest 유틸리티로는 시스템의 Kernel PPS 동작을 확인할 수 있습니다. 본 글에서는 pps-tools를 x64/x86 리눅스 시스템용으로 빌드하는 방법과 arm 리눅스 시스템용으로 빌드하는 방법을 설명합니다. 참고로 본 글에서 사용된 환경은 우분투 리눅스 18.04 버전입니다. pps-tools 다운로드 다음 명령을 통해 pps-tools를 다운로드합니다. (글..