전체 글
[ODROID] Linaro gcc? ARM 아키텍처를 위한 gcc!
오드로이드 위키 페이지를 살펴보면 커널 빌드에 필요한 툴 체인이 무엇인지 알려주고 있습니다. "Linaro gcc"라고 하는데요, gcc는 gcc인데, Linaro는 무엇일까요? Linaro는 2010년에 만들어진 ARM 기반 리눅스 오픈 소스를 지향하는 엔지니어 중심의 비영리 단체입니다. 전 세계의 굵직한 회사들이 참여해서 ARM 기반 리눅스 소프트웨어에 필요한 도구를 개발하고 있습니다. 매월 마지막 주 목요일마다 최신 툴 체인을 배포한다고 합니다. 데비안 계열의 리눅스에서 "apt" 패키지 관리자로는 원하는 버전의 arm을 위한 gcc를 설치할 수 없습니다. 하지만 다행히도 Linaro 홈페이지에 방문하면 여태껏 배포된 gcc를 내려받을 수 있습니다. gcc 버전 4.9 ~ 7.5 저장소 gcc 버전..
임베디드 리눅스 애플리케이션 개발 환경 준비하기
임베디드 리눅스 애플리케이션 개발을 시작하려고 합니다. 그런데 개발 환경을 어떻게 구성하면 좋을까요? 우리에겐 두 가지 선택지가 있습니다. 타깃 디바이스에서 직접 개발 하는 방법과 호스트 PC에서 개발하는 방법입니다. 보통 타깃 디바이스 성능이 일반 PC보다는 좋지 않으므로 별도로 개발용 PC를 두고 작업을 하시는 게 낫습니다. 반면 당장 호스트 PC를 사용할 수 없거나 아직 개발 환경이 준비되지 않았는데 빨리 검토해봐야 한다면 타깃 디바이스에서 직접 코드를 작성해서 테스트해볼 수 있습니다. 이 글에서는 먼저 타깃 디바이스에 직접 개발 환경을 만들어 "Hello World!"를 출력해보는 예제를 설명할 것입니다. 그리고 호스트 PC에서 크로스 컴파일 개발 환경을 준비하는 과정을 살펴봅니다. 호스트 PC에..
[ODROID] Vu8M 디스플레이 연결 설정하기
ODROID에 연결할 수 있는 디스플레이로 Vu8M이라는 제품이 있습니다. 그러나 연결만 한다고 해서 바로 디스플레이가 작동하지 않습니다. Petitboot와 리눅스에서 필요한 설정을 해야만 화면에 영상을 띄울 수 있습니다. 확인 사항 Vu8M을 사용할 수 있는 환경인지 확인해야합니다. Petitboot 버전과 리눅스 커널 버전이 다음과 같아야 합니다. Petitboot: v20220424 이상 리눅스 커널: 4.19.219-202204111511-focal 이상 Petitboot 버전은 ODROID에 HDMI를 연결해서 전원을 켜면 처음에 뜨는 Petitboot 메뉴 화면 상단에서 확인할 수 있습니다. 리눅스 커널 버전은 리눅스 터미널에 아래처럼 명령을 입력해서 알 수 있습니다. dpkg -s linu..
vcpkg로 GTK 라이브러리 빌드하기
x64 Windows 환경에서 GTK 라이브러리를 사용하기 위해 빌드하는 과정을 다룹니다. 이전 글에서 소개한 vcpkg를 이용해서 손쉽게 할 수 있습니다. 라이브러리를 빌드하는 데는 시간이 필요하므로 충분한 여유 시간을 두고 진행하시기 바랍니다. 호환성 확인하기 먼저 vcpkg가 GTK 라이브러리를 지원하는지를 확인해보겠습니다. 원하는 라이브러리가 지원되는지는 vcpkg 공식 사이트에서 Browse packages 페이지로 들어가 확인할 수 있습니다. GTK 버전 4.6.0까지 설치 할 수 있고, 호환성(Compatibility)을 보면 x64-windows를 지원한다는 것도 알 수 있습니다. 설치하기 vcpkg를 설치한 경로에 가서 아래처럼 명령을 입력합니다. ./vcpkg install gtk:x6..
vcpkg로 C/C++ 오픈소스 패키지 관리하기
Python은 pip, C/C++은 vcpkg! vcpkg는 마이크로소프트에서 만든 Python의 pip, Ruby의 gem, Node.js의 npm 같은 패키지 관리자입니다. Windows, Linux, macOS 그 외 여러 환경에서 오픈소스 C/C++ 라이브러리를 쉽게 설치, 관리할 수 있도록 도와줍니다. 어떤 패키지들이 준비되어 있는지 궁금하다면 공식 사이트의 Browse packages 페이지에서 확인할 수 있습니다. 개인적으로 마이크로소프트의 오픈소스에 대한 이런 행보를 무척 긍정적으로 생각하고 있습니다. vcpkg 설치는 2단계로 끝! vcpkg 설치방법은 공식 문서에 자세히 나와 있습니다. '자세히'라고 하였지만 너무 쉬워서 단 두 줄의 명령으로 설치 준비가 끝납니다. 설치를 위해서는 먼저..
C++를 사용할 수 있는 GUI 라이브러리 모음
C++ 언어를 사용할 수 있는 GUI 라이브러리가 어떤 것들이 있는 지 얼마나 알고 계시나요? 저는 기껏해야 Windosws 환경에서 사용할 수 있는 MFC, 크로스 플랫폼을 지원하는 Qt와 GTK 그리고 wxWidgets 정도만 알고 있었습니다. 혹시 위에서 얘기한 라이브러리가 아닌 다른 것들을 찾고 있다면 아래 사이트를 꼭 참고해보시기를 바랍니다. 무려 40여 가지나 되는 C++ GUI 라이브러리를 소개한 페이지입니다. https://philippegroarke.com/posts/2018/c++_ui_solutions/ 윗글을 정리한 사람이 간단하게나마 각 라이브러리의 특징과 사용할 수 있는 운영체제 그리고 라이선스까지 적어두었습니다. 장단점도 적혀있는데 작성자의 개인 의견이기 때문에 참고만 하시면 ..
Git push 하려는데 나타나는 403 에러 해결하기
나의 시간과 코드가 날아갔다 어제 반나절 동안 작업한 코드를 날리고 말았습니다. 저장도 제대로 했고, 기능 구현을 마칠 때마다 git commit도 잘했는데 말이지요. 문제는 원격 저장소에 push를 하려는데 자꾸만 실패하는 것입니다. 원격 저장소 주소 설정도 제대로 되어있고 계정도 문제가 없습니다. 서버 문제도 아니고요. 그런데도 코드가 올라가지 않았습니다. 퇴근 시간은 다가오고, 마음은 급해져서 이리저리 git 명령어를 입력해봅니다. 그러다 그만 오늘 작업한 이력을 잃어버리고 말았지요. '어떻게 그럴 수 있지?' 라고 생각하실 수도 있지만... 이 글은 '커밋 이력을 날리는 법'이 아닌 403 에러를 해결하는 법을 설명하는 글입니다. 문제 상황 작업을 마치고 git 서버에 push 하려는데 에러가 났..
리눅스 커널 빌드를 위한 셸 스크립트 분석
시작하기에 앞서 이 글에서 다루는 셸 스크립트는 2장에 소개된 것입니다. 이 스크립트가 제대로 동작하기 위해서는 책에 설명된 환경이 갖춰져 있어야 합니다. 여기서는 커널 빌드 과정이 아닌 커널 빌드를 위한 셸 스크립트에 어떤 내용이 담겨있는지를 분석하는 글을 참고하셔서 읽어주시기를 바랍니다. 먼저 분석하고자 하는 예제 스크립트를 살펴본 다음에 셸 스크립트 문법을 딱 필요한 만큼만 알아보겠습니다. 그리고서 예제 스크립트를 한 줄씩 해석해보도록 하겠습니다. 커널 빌드를 위한 셸 스크립트 책에 소개된 셸 스크립트는 아래와 같습니다. 저자가 공유한 예제 스크립트는 이곳을 클릭하시면 확인하실 수 있습니다. #!/bin/bash echo "configure build output path" KERNEL_TOP_PA..