라즈베리파이를 잘 이용하다가 디버그 모드를 Enable 후 리눅스 커널을 컴파일하였더니 용량 부족으로 리눅스 커널 컴파일 Error가 발생했다.

이에, Win32 Disk Imager를 이용해서 기존 16GB SD 카드의 Image를 구워서 다른 32GB SD 카드로 복사를 하기로 결정했다.

우선 기존 사용하던 16GB SD 카드를 PC에 연결 하고 나서, Win32 Disk Imager(설치는 https://sourceforge.net/projects/win32diskimager/ 참고)를 실행한다.

기존 16GB SD 카드의 Image를 굽기 위해  하기 그림에서 붉은색 네모 안의 아이콘을 클릭.

하기 그림과 같은 창이 뜨면, 적당한 경로를 설정 후 저장할 파일 이름(확장자는 반드시 .img가 되어야 함)을 기입한 다음 "열기" 버튼을 클릭.

아래 그림에서 Read 버튼을 클릭.

정상적이라면 하기 그림과 같이 표기가 된다. 기존 Image를 Read하는게 완료가 될때까지 기다린다.

이제 Image를 새로운 32GB SD Card에 Write 하기 위해, 32GB SD Card를 PC에 연결 후 하기 그림의 Write 버튼을 누른다.

그러면 하기와 같이 Confirm 창이 뜨고, Yes를 선택하면 Write가 시작된다.

하기 Writing 시에 화면에 의하면 Write 시간은 Read 일때와 거의 비슷하다.

완료가 되면 하기의 Pop-up 창이 뜬다.

이제 Writing 완료된 32GB SD 카드를 라즈베리파이 보드에 삽입 후 전원을 키면 정상적으로 부팅이 완료 되는 것을 확인할 수 있다.

하기 raspberrypi 공식 사이트에서 Raspberry Pi를 설치한다. 

https://www.raspberrypi.com/software/

 

Raspberry Pi OS – Raspberry Pi

From industries large and small, to the kitchen table tinkerer, to the classroom coder, we make computing accessible and affordable for everybody.

www.raspberrypi.com

본인이 사용하는 PC의 OS는 Window이므로 아래 캡쳐한 화면 붉은 사각형에서 "Download for Windows"를 클릭하여 Image를 받는다.

다운로드가 완료되면 하기의 실행 파일을 실행합니다.

실행을 실시한 후 하기 화면에서 "Install"을 실행.

하기의 화면이 표시되면 "Finish"를 눌러 완료한다.

그러면 위의 그림에서 "Run Raspberry Pi Imager"가 체크되어 있으므로, 다음과 같은 프로그램이 자동 실행될 것이다.

본인은 운영체제를 하기 파란 사각형과 같이 설정을 한후, "저장소 선택"을 눌러서 선택한 운영체제에 맞게 생성될 이미지가 저장될 곳을 선택한다.

하지만, 무슨 이유에서인지 "저장소 선택"을 누르면 다음과 같이 Raspberry Pi Imager가 malfunction에 빠진다.

그럼 직접 Image를 Download하는 예전 방법을 실행하기 위해 하기 사이트를 접속.

https://www.raspberrypi.com/software/operating-systems/#raspberry-pi-os-32-bit

 

Operating system images – Raspberry Pi

From industries large and small, to the kitchen table tinkerer, to the classroom coder, we make computing accessible and affordable for everybody.

www.raspberrypi.com

그리고 나서, 위의 버젼으로 Download를 실행한다.

완료가 정상적이라면 하기와 같은 파일을 볼 수 있다. 물론 버젼은 그때 그때 다르므로 하기와 같이 동일한 이름을 갖는 파일은 아닐것이다.

그다음 SD Card에 Image를 굽기 위해 하기 링크에서 Win32diskimager를 다운로드 받는다.

https://sourceforge.net/projects/win32diskimager/

 

Win32 Disk Imager

Download Win32 Disk Imager for free. A Windows tool for writing images to USB sticks or SD/CF cards . This program is designed to write a raw disk image to a removable device or backup a removable device to a raw image file. It is very useful for embedded

sourceforge.net

정상적으로 다운로드가 완료 되었다면 하기의 파일이 보일 것이다.

이 파일을 실행하여 Install 한다.

Install 완료 후 SD Card를 PC에 삽입 후 Win32diskimager를 실행하고나서 위에서 받은 image를 선택하여 Write를 실행하면 Image Writing이 된다.

완료가 되면 SD Card를 PC에서 분리하고 라즈베리 파이에 삽입하면 끝이다.

어제까지 잘 실행되었던 SourceTree가 갑자기 실행이 안된다.

재부팅 후 실행해 보아도 마찬가지. 아래 로고만 뜨고 그 다음엔 응답이 없다.

재설치를 할까 고민 하다가 구글 검색을 해보니, 다음과 같은 해결 방법이 있었다.

하기 경로로 이동 후,

C:\Users\사용자이름\AppData\Local\Atlassian

다음 그림과 같은 SourceTree.exe_...... 라고 되어 있는 폴더 내부로 이동.

다음 그림과 같이 폴더 하나만 표시되는데, 그 폴더를 선택하여 폴더 내부로 이동.

다음 그림과 같이 표시되는 파일 중에, Composition.cache만 삭제한다.

이후 SourceTree를 재실행하면 정상적으로 잘 동작한다. 다행이다... ㅎㅎ

2018년 11월 17일(토)

오늘의 여정 : 크로아티아 스플리트 → 플리트비체

 

또 다른 하루의 시작이다.

긴 동유럽 여행을 하면서 매번 맞는 아침은 새로운 느낌이다.

창문 사이로 보이는 따뜻한 빛 줄기와 시원한 바다 풍경.

오늘 아침식사는 어제 마트에서 구입한 재료들로...

간단하게 해결을 하고...

오늘은 플리트비체로 이동하는 날이다.

꽃보다 누나라는 프로그램을 통해 익히 잘 알려진 곳이다.

TV에서 보여진 그 동화 같은 풍경을 고대하며 길을 나섰다.

고속도로로 한참을 달리기 시작했다.

한참을 달리다 보니 저쪽 끝에 산맥이 보이고 산맥은 신비롭게 구름에 봉우리를 숨기고 있다.

지도 상으로는 아마도 저 곳을 넘으면 얼마가지 않아 플리트비체가 있다.

멀리 보이던 산맥의 자락에 도착해서 쉽지 않은 꾸불꾸불한 허리쯤을 돌고 나니 산봉우리를 구름이 짙게 뒤덮고 있는데,

자연에 대한 경외감 때문인지 두려움이 살짝 느껴졌다.

저곳을 잘 넘어 가야할텐데...

드디어 정상에 구름을 뚫고 정상에 도착했다.

정상위에는 또다른 구름들이 뒤덮고 있었지만,

곧게 뻗은 길 때문인지 꾸불꾸불 올라왔던 길에 비하면 한결 마음이 편하다.

봉우리들을 스쳐지나가고 나니, 저 멀리 또 큰 산들이 보인다.

높은 산 봉우리들을 옆에 끼고 다시 달리기를 몇번 끝에,

드디어 플리트비체에 도착했다.

이동하는 중에 여러가지 간식을 먹다 보니 배가 불러서 점심은 자연스럽게 스킵을하고,

곧바로 플리트비체 관광을 시작하기로 했다.

주차장에 차를 주차하고 입구로 향해 길을 건너는 나무로 만들어진 육교를 지난다.

북쪽으로 많이 올라와서 인지, 날씨가 꽤 쌀쌀하다.

그리고, 이미 가을은 훌쩍 지나고 초겨울 풍경이 우리를 맞이했다.

스플리트의 화창한 날씨와 초록들과는 매우 상반된 풍경이다.

나중에 후회를 했지만, 더 두꺼운 오리털 파카를 입었어야 했다.

플리트비체 호수로 가까이 갈 수록 바람이 많이 불어 체감 온도는 더 내려갔다.

우리 가족은 플리트비체 입장료를 구입할 수 있는 매표소에 도착을 했다.

입장료 가격은 시즌에 따라 다른 것 같다.

참고로, 우리 가족의 경우, 막내는 공짜 나머지 3명해서 HRK145/\24,960 정도이다.

나무 뒤로 보이는 선착장에서 배를 타고 이동을 한다.

지도에서 현재 P1 위치이고, 배를 타고 P2를 들렀다가 다시 배를 타고 P3로 이동하는 코스이다.

배를 이용하여 건너편인 P2로 이동하자마자

TV에서 보던 아기자기하고 예쁜 짧은 폭포들이 펼쳐져 있다.

나무 바닥길을 따라 쭈욱 걸어나가면 새로운 풍경들이 펼쳐진다.

물 웅덩이라고 해야 할까?? 조그마한 물 웅덩이들이 옹기종기 모여 있고,

그 물 웅덩이들은 서로 연결이 되어 있어서,

높은 곳에서 낮은 곳으로 연결된 부분은 마치 작은 폭포와 같다.

한 바퀴돌고 이제 P2에서 P3로 이동을 했다.

P3 지역은 넓은 잔디 밭도 있어서, P2 지역과는 사뭇 다른 풍경이였다.

경사진 도로를 올라가니 넓은 호수가 눈에 들어왔다.

그리고 점점 좁아지는 길을 따라 얇은 언덕을 넘어가면,

아까 넓은 호수물이 얇은 언덕을 따라 폭포를 이뤄 물이 흘러가고 있다.

길을 따라 쭈욱 올라가다 보면 높은 지대를 지나고,

이어서 제법 높은 폭포가 등장 한다.

이곳이 핫스팟인지 많은 사람들이 사진을 찍기 위해 모여 있다.

시간이 점점 흘러 벌써 어두워질 시간인 4시를 향해가고 있어서

서둘러 주차장으로 이동을 하기 위해 위로위로 발걸음을 재촉했다.

위에서 바라본 호수도 경이로운 풍경이었다.

주차장까지 가는 길은 여태 배를 타고 온길과 걸어서 온길을 되돌아 가야 하기 때문에 꽤 먼거리이다.

그래서 정기적으로 운행하는 버스를 타고 이동을 했다.

막차여서, 조금만 늦었더라도 엄청난 고생을 했을것이다.

이제 자그레브로 이동해서 크로아티아 여행을 마무리 할 예정이다.

버스를 타고 주차장으로 이동 중에 우리나라에서 온 사람들을 몇팀 만났다.

그 중에서 우리나라에서 온 젊은 여학생 2명이 대중교통을 이용하여

오늘 자그레브로 들어갈 예정이라는 소리를 우연히 듣게 되었다.

몇십분이 지나면 어둠이 깔릴텐데 조금 걱정이 되어 와이프에게 눈짓을 하니,

와이프가 좁지만 우리차에 태워 가자고 한다.

그래서, 성인 4명 어린이 2명 모두 6명이 승용차에 의지하여 어둠이 깔린 도로를 헤치고 자그레브로 이동을 했다.

얘기를 듣자 하니, 2명의 젊은 학생은 교환학생으로 독일에 와서 잠시 기업에서 인턴 경험을 쌓다가

주말을 이용하여 크로아티아로 놀러온 길이라고 한다.

학생때 좋은 경험을 할 수 있어서 부러워했지만, 그 학생 2명은 우리가족을 부러워하는군... ㅎㅎ

덕분에 애들과 말벗을 해주면서 게임도 하고 지루하지 않게 자그레브에 도착을 했다.

학생 2명을 자그레브 시내 어디쯤 호텔 근처에 내려 주고

우리는 우리가 예약한 호텔로 이동을 했다.

주차를 하고 짐만 방에 넣어 놓고 주린 배를 채우기 위해 시내로 이동을 했다.

자그레브 대성당이 보이는 곳으로 말이다.

그 이유는 대성당 건너편 돌라츠시장 주변에 먹을 곳이 많다고 해서이다.

위의 사진의 왼쪽에 위치한 BISTRO NOKTURNO이라는 식당을 들어갔다.

크로아티아 전통음식이 아니지만 Pub과 같이 맥주와 음식을 곁들일 수 있는 곳이었다.

일단 맥주를 하나씩 주문하고,

첫번째 요리는 그릴에 구운 닭고기 + 감자튀김

두번째 요리는 해산물 스파게티

세번째 요리는 오징어 튀김과 감자튀김

그리고 마지막 메뉴는 구운빵이다.

배가 고파서인지 접시를 깨끗이 비웠다.

맛도 괜찮았고, 북적이긴 했지만 분위기도 나쁘지 않았다.

4가지 메뉴에 맥주 2잔 그리고 물.

저녁으로 HRK240/\41,312.23원을 지출했다.

이정도면 무척 저렴한 가격에 훌륭한 저녁 한끼를 해결한것이다.

 

배를 채우고 나서 만사가 귀찮아지니 재빨리 호텔로 복귀해서 꿈나라로~!!!

 

참고로, 오늘 여행 경비를 정산하자면,

- 고속도로 톨비(스플리트->플리트비체) HRK 36/₩6,196.83

- 플리트비체 입장료 HRK 145 /₩24,959.47

- 고속도로 톨비(플리트비체 → 자그레브) HRK 19 /₩3,270.55

- 저녁식사 HRK 240.00 /₩41,312.23

 

그래서 오늘 사용한 여행 경비는

총 ₩75,740

 

그리고 오늘까지 총 누적 여행 경비

- 총 6,677,985 (어제까지의 총여행 경비 6,602,245 포함)

 

부제 : Ubuntu에서 Make compile 코드에 Qt GUI 추가하기

 

프롤로그

Ubuntu terminal 창에서 make compile 코드에 Qt GUI 추가하는 방법은 없을까?라는 단순한 호기심에서 작업을 시작하게 되었다.

 

작업 내용

Make 정상적으로 compile 코드(GNU Make 4.2.1 컴파일러 사용 했음) 준비가 되어 있고, Ubuntu에서 Qt 설치하는 작업을 해야 한다.

참고로, 본인이 사용하는 Ubuntu version 20.04이다.

 

1. Qt 설치 준비

$ sudo apt update
$ sudo apt upgrade

 

컴파일러를 이미 갖고 있다는 가정하에 설명을 하지만, 혹시라도 compiler 없는 경우는 하기 명령어를 실행한다.

$ sudo apt install build-essential

 

2. Qt 설치하기

Qt 관련 페키지를 설치한다. 참고로 qt5 설치하지만, 다른 버전을 설치할 수도 있다. 예를 들어 qt4 ...

$ sudo apt install qt5-default

 

Qt creator 설치하기 위해 아래 그림과 같이 "ubuntu software" 클릭하여 실행한다.

 

검색창에서 "Qt creator" 입력한 설치를 한다. 하기 1 / 2 / 3 참고. 본인은 이미 install 해서 설치 과정은 생략한다.

 

3. Qt 작업환경 만들기

Qt 실행한다. 다음 "Projects" 버튼을 누른 , "+ New" 버튼을 누른다.

 

"+ New" 버튼을 누르면 "Qt Widgets Application" 선택 하단의 "Choose" 누른다.

 

다음 하기의 붉은 부분에 원하는 PRJ 이름 경로를 각각 설정 "Next" 버튼을 누른다.

 

다음 창에서 Build system 디폴트로 설정된 qmake 그대로 사용하기 위해, 별도의 추가 설정 없이 "Next" 버튼을 누른다.

 

Class Information에서도 디폴트 상태로 "Next" 버튼을 누른다. 혹시라도 이름을 변경하고 싶다면 변경해도 무방.

 

다음 번역 파일 설정에서 디폴트 상태로 사용해도 되고 한국어를 설치해도 된다. 다음 "Next" 버튼을 누른다.

 

다음이 중요한 부분이다. 컴파일러를 설정하는 부분인데, 하기 options 눌러서 qmake(Qt 컴파일러) 현재 사용하고 있는 , make compile 코드에서 사용한 컴파일러를 이곳에서 선택해주면 된다.

 

먼저 Qt 다음과 같이 설정한다.

"Option" 누른 다음 "Qt versions" 탭을 선택 è Add 버튼 선택 è위에서 설치한 qt5 qmake 선택 è"Apply" 버튼 선택한다.

경로는 /usr/lib/x86_64_linux_gnu/qt5/bin/qmake 이다.

 

 

다음 "Kits " 선택 è  Qt version에서 방금 설정한 qt5 변경한다.

 

그리고 마지막으로 소스 컴파일시 사용했던 compiler gcc 다음과 같이 설정하여 준다.

 

 

만약 해당 버전이 없는 경우 "compilers" 탭에서 Manual 선택 è C++ 선택 Add 버튼을 눌러 C++ 컴파일러 설정 è C 선택 Add 버튼을 눌러 C 컴파일러를 설정하면 된다. 다음 다시 부분 설정으로 돌아가서 선택하면 된다.

 

Apply 버튼과 OK 버튼을 눌러 설정을 모두 완료해 준다.

 

이상 설정이 제대로 되었다면 다음과 같이 "Desktop" 보일 것이다.

Check 하고 Next 버튼을 누른다.

 

하기 화면에서 Finsh 누르면 모든 설정이 완료된다.

 

설정이 완료되면 하기 코드가 나타난 화면을 있다.

빨간 안에 실행 버튼을 누르면 GUI 실행해 있다.

 

실행을 하면 다음과 같은 GUI 표시된다.

 

4. Qt 이용한 디자인

위에서 GUI 화면이 정상적으로 표시 되었다면, Project 작업창에서 "Forms" 아래 있는 "mainwindow.ui" 더블 클릭한다.

 

 

그럼 아래와 같이 우리에게 익숙한 UI들이 왼쪽에 표시 되어 있는 것을 확인 있다.

필요한 요소들을 Drag해서 왼쪽 상단 작업창에 끌어 놓으면 된다. 간단하게 GUI 작업을 있다.

 

 

Push button 2개와 Line Edit 1개로 다음과 같이 꾸며 보았다.

 

실행 버튼을 누르면 정상적으로 실행이 되는 것을 확인 있다.

 

5. 기존 소스코드를 qt main.c 합치기

기존 make compile 했던 source code main.c qt main.c 합친다.

Qt main.c Qt creator에서 더블 클릭하면 다음과 같이 간단한 코드로 구성이 되어 있는 것을 있다.

 

main.c 파일에 기존 make compile했던 코드를 합치면 간단히 해결된다.

본인은 7 라인 이전에 기존 main.c 파일의 main 함수 내용을 copy 했다.

다음 실행버튼을 눌러 컴파일을 실시하면 다음과 같이 Error 발생한다.

 

Error 발생하는 Header 파일을 Projects 포함시킨다.

Project 창에서 Headers è 오른쪽 클릭 "Add Existing Files…" 선택한다.

이런식으로 Lib 포함 시킨다.

그러면 .pro 파일은 다음과 같이 표시된다.

 

다음 컴파일을 하여 Error 발생하지 않으면 성공!!!

Error 발생한다면 위와 같은 방법으로 하나씩 Error 잡아가면 된다. -_-;;

Error를 다 잡고 Build RUN 성공적으로 하면, 위에서 만들었던 GUI 나타나면 완성이다.

 

 

본인은 GUI 업데이트 하여 최종적으로 다음과 같이 구현 하였다. 상세한 GUI 구현기는 다음에 계속 하도록 하겠다…. ㅎㅎ

- 끝

 

Ubuntu에서 Qt5 설치하기

  • 쉬운 방법 : Ubuntu software tool에서 qt creator 검색 설치하는 방법이 가장 쉽다.

 

여러가지 방법이 있겠지만, Qt 사이트에서 인터넷 접속을 하여 직접 받는 방법을 사용한다.

Firefox 실행하여 하기 링크로 이동.

https://www.qt.io/download-open-source#section-2

 

Download Qt Open Source

The Qt framework is available under both open source and commercial licenses. Learn which license is right for you and get started with your development today!

www.qt.io

제일 아래 페이지로 이동하여 "Download the Qt Online Installer" 클릭한다.

그러면 하기와 같이 나의 시스템에 대해서 분석한 결과가 표시된다. "Download" 클릭!!!

다음과 같이 저장 곳을 지정하고 확인을 눌러준다.

해당 파일은 다운로드 폴더에 저장이 된다.

Firefox 스크롤을 아래로 내리면 Getting Started with Qt 부분을 있다.

https://www.qt.io/download-thank-you

 

Download Qt: Install and get started

 

www.qt.io

여기서 여러가지 비디오를 있는데, install 관련된 첫행 가운데 컨텐츠를 보면 된다.

 

설치하는 방법은 다음과 같다.

Download 받은 폴더로 이동 후에 파일(본인이 받은 파일은 "qt-unified-linux-x64-4.0.1-online.run") 선택하고 오른쪽 클릭--> 속성 선택 --> 권한 선택 --> 실행: 파일을 프로그램으로 실행 허용(E) 체크 표시한다.

다음 파일을 더블 클릭하면, 프로그램이 실행 된다.

하기와 같이 실행이 되면 Qt account 없기 때문에 Don't have Qt account 부분을 선택한다.

하기의 화면이 나오면 정보를 입력한다. 정보를 정확히 입력하면 NEXT 활성화 된다.

활성화된 NEXT키를 누르면 다음과 같이 입력한 e-mail verify e-mail 보냈으니 확인하라는 문구가 나온다.

Qt에서 발신한 e-mail 에서 verify 누르면 다음과 같이 정보를 입력하도록 되어 있다. 참고로 select role student 하면 되겠다.

입력을 완료 하면 아까 입력한 e-mail 주소와 패스워드를 입력해야 한다.

모두 완료 다음 화면으로 돌아가서 Next 누른다.

그러면 하기와 같은 화면이 표시되고 하기 빨간 부분을 체크 다음 Next 누른다.

다음화면이 표시되면 Next 누른다.

다음 화면에서 하나를 클릭하면 되는데, 정보 공유를 하지 않기 위해 하단을 클릭했다. 다음 Next 버튼을 누른다.

경로 등은 그대로 두고 설치할 예정이므로 Next 버튼을 누른다.

Agree 선택한 다음 Next 누른다.

다음 Next

그러면 다운로드가 시작된다.

다운로드가 완료가 되면 이제 Finish 누른다.

- 끝

$ tar zxvf make-4.1.tar.gz
$ cd make-4.1
$ ./configure
$ make
$ sudo make install

Ubuntu 기반 플랫폼에 기가지니인사이드 SDK 설치 및 테스트

기가지니 SDK를 Ubuntu에 설치하여 테스트 하기 위해 하기 링크된 KT 문서를 바탕으로 실행하였다.

참고로 본인 PC에 Vmware(WORKSTATION 15.5 Pro)를 이용 Ubuntu를 설치하여 테스트를 실시하였다. ( 환경 : ubuntu-20.04-desktop-amd64 / cmake v3.16.3 / gcc v9.3.0 / GNU Make 4.2.1)

https://github.com/gigagenie/sample-client-linux-grpc

 

gigagenie/sample-client-linux-grpc

G-INSIDE Linux Sample Client (using gRPC Device SDK) - gigagenie/sample-client-linux-grpc

github.com

위의 설명대로 작업은 크게 다음과 같이 나누어 볼수 있다.

  • 인사이드 클라이언트 키 발급
  • 개발 환경 설정 
  • 필수 라이브러리 및 파일 소스
  • 디렉토리(src/) 내 파일 구성 
  • Linux용 Sample 빌드
  • Sample App 실행

이 중에서 "인사이드 클라이언트 키 발급"은 위에 링크된 KT 문서를 참고로 하면 되므로 Pass하고 나머지 주제들로 글을 써본다.

개발 환경 설정

  • Build Tool 설치

위의 내용을 참고하면 먼저 Build Tool을 설치해야 한다.

$ sudo apt-get install build-essential autoconf automake libtool pkg-config curl make cmake g++ unzip git

Ubuntu에서 Terminal 창을 열고 다음과 같이 위의 cmd를 입력하여 실행하면 쉽게 설치할 수 있다.

설치가 완료되면 하기와 같이 g++ version(Ubuntu gcc)을 확인할 수 있다.

$ g++ -v

 

  • gPRC v1.20.0 및 protobuf 설치

Setup 환경을 하기와 같이 먼저 실행한다.

$ export MY_INSTALL_DIR=$HOME/.local
$ mkdir -p $MY_INSTALL_DIR
$ export PATH="$PATH:$MY_INSTALL_DIR/bin"

Git에서 gRPC v.1.20.0을 받는다.

$ git clone --recurse-submodules -b v1.20.0 https://github.com/grpc/grpc
$ cd grpc
$ make

하지만 여기서 make error가 발생한다.

오류 : error: ambiguating new declaration of ‘long int gettid()’
이유 : GCC 9 리드
솔루션 출처 : 
Github에서 / GRPC : # 20043
해결 방법 : 
src/core/lib/gpr/log_linux.ccsrc/core/lib/gpr/log_posix.ccsrc/core/lib/iomgr/ev_epollex_linux.cc이 파일은
gettid() --> local_gettid() 변경

다시 make를 실행하면 다음과 같이 Error가 또 발생.

Error 내용은 모든 warning을 Error로 처리하면서 발생하는 문제이다.

이 warning을 수정하는게 정석이지만, 일단은 다음과 같이 컴파일러 옵션을 추가하여 문제를 해결한다.

$ export CFLAGS=-Wno-error
$ export CXXFLAGS=-Wno-error

다시 make를 실행하면 문제 없이 compile 될것이다. 

$ make
$ sudo make install
$ cd third_party/protobuf
$ sudo make install

그 다음 위와 같이 make한 결과물을 install 하기 위해 sudo make install을 실행한다.

protobuf를 install 하기 위해 cd third_party/protobuf로 이동 후 sudo make install을 실행한다.

그 다음으로 make install을 입력을 해야하는데, sudo make install이라고 입력을 해야 한다.

그러면 이번 절의 모든 작업이 완료 된다.

 

  • cJSON 설치
$ git clone https://github.com/DaveGamble/cJSON
$ cd cJSON
$ mkdir build
$ cd build
$ cmake -DCMAKE_INSTALL_PREFIX=$MY_INSTALL_DIR ..
$ make
$ sudo make install

다음과 같이 위의 cmd를 차례대로 실행한다.

그 다음은 make install 명령어를 실행해야 하지만, Error를 회피하기 위해서 sudo make install로 실행을 해야 한다.

  • OpenSSL
$ sudo apt install libssl-dev

하기와 같이 cmd를 실행한다.

  • ALSA library

하기 명령어를 실행하여, 호출어/음성인식을 위한 voice recording 및 미디어 재생을 위해 ALSA 라이브러리를 설치한다.

$ sudo apt-get install libasound2-dev libasound2

 

필수 라이브러리 및 파일

  • SDK 라이브러리

하기 KT의 Ubuntu 라이브러리 링크에서 libginiside.so, libKwsRnet.so 파일을 다운로드 한다.

github.com/gigagenie/ginside-sdk/tree/master/g-sdk-linux/lib/ubuntu-x86_64

 

gigagenie/ginside-sdk

GiGA Genie INSIDE(G-INSIDE) SDK. Contribute to gigagenie/ginside-sdk development by creating an account on GitHub.

github.com

  • SDK 헤더파일

하기 KT의 Ubuntu SDK 헤더파일 링크에서 ginisde.h, ginsidedef.h 파일을 다운로드 한다.

github.com/gigagenie/ginside-sdk/tree/master/g-sdk-linux/include

 

gigagenie/ginside-sdk

GiGA Genie INSIDE(G-INSIDE) SDK. Contribute to gigagenie/ginside-sdk development by creating an account on GitHub.

github.com

  • 호출어 모델파일

하기 KT 링크에서 모델파일을 다운로드 한다.

github.com/gigagenie/ginside-sdk/tree/master/g-sdk-linux/conf

 

gigagenie/ginside-sdk

GiGA Genie INSIDE(G-INSIDE) SDK. Contribute to gigagenie/ginside-sdk development by creating an account on GitHub.

github.com

 

소스 디렉토리(src/) 내 파일 구성

하기 KT 링크에서 sample-client-linux-grpc를 다운로드 후 src/ 로 이동 한다.

github.com/gigagenie/sample-client-linux-grpc

 

gigagenie/sample-client-linux-grpc

G-INSIDE Linux Sample Client (using gRPC Device SDK) - gigagenie/sample-client-linux-grpc

github.com

위의 "필수 라이브러리 및 파일" 섹션에서 다운로드한 파일들을 다음 설명을 참고로 src 폴더 안에 Sub 폴더(conf, include, lib)에 위치 시킨다.

나머지 설명은 참고 사항이다.

  • conf/ : 호출어 모델 파일 저장 위치
  • include/ : SDK용 헤더파일 저장 위치 (ginside.h, ginsidedef.h)
  • lib/ : SDK 라이브러리 저장 위치 (libginside.so, libKwsRnet.so)
  • key.txt : API Link에서 발급받은 개발키 정보를 저장
  • server_info.txt : G-INISDE 개발 서버 정보 저장
  • test_sample.cpp : sample app main 소스

 

Linux용 Sample 빌드

  • sample-client-linux-grpc를 다운로드 후 src/ 로 이동
  • Makefile에서 lpthread, lcjson, lasound 라이브러리와 헤더파일의 위치를 수정한다.
1. cJSON
  - 변경 전
    CFG_INC = -I./include -I/usr/include -I/usr/local/include -I/usr/local/include/cjson
  - 변경 후
    CFG_INC = -I./include -I/usr/include -I/usr/local/include -I/home/mskim/cJSON
  • SDK 라이브러리, 헤더파일, 호출어 모델 파일 등을 lib/, include/, conf/ 디렉토리에 각각 복사하고 Makefile에서 경로 정보를 수정한다.
  • 실제 발급받은 클라이언트 키값을 key.txt 파일에 하기 설명 부분을 지우고 동일한 자리에 입력한다.
YOUR-CLIENT-ID
YOUR-CLIENT-KEY
YOUR-CLIENT-SECRET
  • make 명령어 실행 전에 test_sample.cpp 파일에서 다음 header 파일의 위치를 수정 해야 한다.
#include  "../include/ginside.h"
#include  "../include/ginsidedef.h"
  • $ export LD_LIBRARY_PATH=./lib:$LD_LIBRARY_PATH; 입력 후 make를 하면 문제 없이 컴파일 완료
$ export LD_LIBRARY_PATH=./lib:$LD_LIBRARY_PATH; 
$ make
  • 컴파일한 실행파일을 실행하는 방법은 다음과 같다.
$ export LD_LIBRARY_PATH=./lib:$LD_LIBRARY_PATH;
$ ./test_sample

파일을 실행 후 "지니야"를 호출하면 정상적으로 동작하는 것을 확인 할 수 있다.

물론 마이크와 스피커가 있는 상태에서 말이다. 본인은 우분투 설정에서 노트북 마이크/스피커 설정 후 테스트 함.

- 끝

2018년 11월 16일(금)

오늘의 여정 : 크로아티아 두브로브니크 → 스플리트

 

두브로브니크에서의 마지막 아침이다.

아침 식사는 어제 장을 봐온 재료로,

계란 후라이, 빵, 햄 등으로 간단히 해결을 했다.

오늘은 스플리트로 이동.

지난번 블레드에서 두브로브니크로 왔던 길을 거슬러 올라가면 된다.

이제는 익숙해진 보스니아 헤르체고비나를 들어가는 검문소가 보인다.

이른 아침임에도 불구하고 많은 차들이 늘어서 있다.

조금 지나지 않아 보스니아 헤르체고비나의 유일한 해변도시인 Neum에 도착했다.

해변가에 아름다운 건물들이 늘어서 있는게

이곳도 해양 휴양지가 아닐까 생각된다.

언제일지 모르겠지만,

다음에 기회가 된다면 한 번 들러보고 싶은 풍경이다.

다시 얼마 지나지 않아

보스니아 헤르체고비나를 지나

크로아티아로 들어가는 검문소가 나온다.

이곳 검문소에도 크로아티아로 들어가려는 차들의 행렬이 길게 늘어서 있었다.

그래도 검문 시간이 그렇게 길지 않아서 금방 통과 할 수 있었다.

 

한참을 달리다 보니, 눈이 쌓인 것 같은 산이 멀리 보인다.

날이 따뜻한데 눈이 쌓여 있다니 좀 이상하다.

멀리서 보면 눈이 쌓인 산이라고 생각을 했는데,

다가가서 보니 그냥 돌로 이루어진 돌산이다.

이내 크로아티아 고속도로 톨게이트가 모습을 나타냈다.

230Km 가량을 한참 달린 끝에 스플리트에 도착을 했다.

스플리트는 크로아티아 남북 길이의 중간쯤 위치한 휴양도시이다.

고대 로마의 디오클레티아누스 황제가 여생을 보내기 위해 디오클레티안 궁전을 이곳에 만들었다.

일찍이 유럽에서도 기원전에 지은 황제의 궁전으로 스플리트가 매우 유명했다고 한다.

주차장 모습도 이국적인 모습과 고풍적인 유적의 모습이 공존해 있다.

날씨도 11월의 날씨 답지 않게 따뜻하고 쾌적했다.

주차장을 나서면 곧바로

디오클레티안 궁전 앞에 위치한 해변가가 눈 앞에 다가와 있다.

벤치에 앉아서 맑은 공기를 쐬며 바닷가를 한동안 바라보았다.

바닷가 왼쪽에는 페리 선착장이, 오른쪽에는 산이 감싸고 있는 풍경이다.

궁전 앞에 있는 거리에서 찍은 풍경들도 매우 예쁘다.

벤치에 앉아서 풍경을 바라보는 사람들,

거리를 거닐고 있는 사람들,

노상 테이블에 앉아서 음식을 먹는 사람들 등.

모두 제 할일을 하고 있는 사람들이 거리를 채우고 있다.

따사로운 햇볕을 받으며 한가히 앉아 있다보니,

배가 슬슬 고프기 시작한다.

그래서, 노상 테이블이 차려진 음식점으로 이동하기로 결정.

구글에서 음식점 리뷰를 검색해 보니 평점이 다 비슷하다.

우선, 사람이 많이 있는 음식점으로 무작정 돌진.

자리에 앉자마자 우선 아이들을 위한 물과 어른들을 위한 맥주+와인을 주문

그리고, 구운 생선 요리 + 먹물 리조또 + 오징어 샐러드를 주문했다.

먹물 리조또는 약간 싱겁고 미묘한 맛이라서 인기가 없었지만

나머지 2가지 요리는 너무 맛있게 먹었다.

경치도 좋고 따스한 햇볕 아래서 음식을 즐길 수 있어서

노상 테이블에서의 식사는 강추이다.

 

맛있게 점심식사를 마치고,

본격적으로 스플리트의 명소인 디오클레티안 궁전을 관광할 차례이다.

티오클레티안 궁전은 동서남북으로 입구가 있다.

우리는 수산시장 쪽에서 들어갈 수 있는 서문(철의 문)으로 들어간다.

입구 앞에는 Marco Marulic 동상이 서 있다.

Marco Marulic은 ( 1450 ~ 1524 )은 크로아티아의 민족 시인으로 유명하며,

크로아티아 500쿠나 지폐의 인물로도 유명하다.

 

조금 걸어 들어가니 지하궁전 홀이 나온다.

어두침침한 지하에서 기념품을 파는 가게들이 여럿있다.

상점가 안쪽으로 조금 더 들어가면 1960년대에 발굴된 지하궁전 홀이 나온다고 하던데...

아이들이 음산한 분위기가 싫다고 하여 패스.

성 도미니우스 대성당이 웅장하고 고풍스러운 자태를 뽐내고 있다.

이곳은 원래 디오클레티아누스 황제의 무덤이 있던 자리였다고 한다.

하지만, 황제의 무덤은 사라지고 그곳에 성 도미니우스 대성당을 지었다고 한다.

그리고 이 성당은 황제에게 죽임을 당한 성 도미니우스를 위해 지어졌다고 한다.

성당으로 올라가는 계단에는 스핑크스가 마치 입구를 지키는것 처럼 자리 잡고 있다.

이 스핑크스는 이집트에서 가져온(?) 것이라고 한다.

아마도 약탈해 온것이 아닐지??

성당 앞에는 열주광장이 자리잡고 있다.

성 도미니우스 대성당에는 60m 높이의 종탑이 있다.

이곳에 오르면 스플리트의 아름다운 도시를 한 눈에 볼 수 있다고 한다.

헌데, 어른들도 오르다가 무서움에 포기를 한다고 한다.

그때는 왜 어른들이 포기할까 라는 생각을 했는데, 올라가보니 그럴만했다.

그래서 6살 먹은 작은 아들 녀석과 둘이서 도전하기로 하고 종탑 입구로 이동했다.

종탑으로 올라가는 길이 가파르게 보여지고 있다.

실제로 올라가다 보니 고소공포증이 있는 분들은 오르기가 어려울 듯 했다.

중간 넘어서 부터는 난간이 부실한 계단이고

난간 너머서는 바로 아래로 추락할 수 있는 구조라서 말이다.

또한, 올라가는 중간에 더이상 오르지 못하고

오르기를 포기하고 내려가는 사람을 몇명 보았다.

둘째 아들 녀석과 종탑 정상에 올라서서 기념사진 한컷을 찍어 보았다.

종탑 전망대가 이 지역에서 가장 높은 위치이기 때문에

전망대에서 바라 본 경치는 속이 뻥 뚤릴 정도로 드넓은 경치를 보여준다.

고풍스러운 건물들과 햇살을 머금은 아드리안해의 눈부신 풍경이 잘 어울러져 있다.

종탑 전망대를 뒤로하고 이제 북문(황금의 문)을 향해 간다.

북문을 향해 가는 길에 마주하는 작은 골목길이 예쁘기만 하다.

북문(황금의 문)에 도착하여 기념사진을 한 컷~

북문 앞에는 검은색 그레고리우스 닌의 동상이 자리하고 있다.

그레고리우스 닌은 10세기에 대주교로 크로아티아인이 모국어로 예배를 드릴 수 있도록 투쟁한 인물이다.

동상의 왼쪽 엄지 발가락을 만지면 행운이 온다는 이야기 때문에

그 부분은 황금색으로 반짝이고 있었다.

이제 다시 성 내부로 들어가서 수산시장 쪽으로 갈 예정이다.

수산시장에서 해물을 조금 사서 AirBnB로 예약한 숙소에서 저녁을 해결할 예정.

수산시장에 도착을 했는데 시장이 텅 비어있다.

확인을 해보니 영업시간이 이미 종료가 된것이다.

해물 사는건 어렵게 되었고, 다시 바닷가 쪽으로 이동하여 주차장으로 간다.

어느덧 노을이 하늘에 드리워지기 시작했다.

주차장을 가는 길에 군밤을 파는 곳이 있다.

그냥 방앗간을 지나칠 참새들이 아니지...

주자장 부근에 야외시장이 있어서 잠시 들러보았다.

시장도 이미 파장 분위기이다.

주차된 차를 몰고 근처 마트에 가서 간단하게 저녁 장을 보았다.

AirBnB로 예약한 숙소에 도착.

오늘도 내가 요리사~ ㅎㅎ

빵, 생선, 새우 그리고 베이컨 요리이다.

그리고 슬로베니아 블레드에서 구입한 와인을 오늘 깔끔하게 드링킹 할 예정.

참고로, 오늘 여행 경비를 정산하자면,

- 스플릿 숙소(애어비앤비) - ₩51,143

- 주유비 HRK 379.43 /₩65,312.92

- 고속도로 톨비 HRK 50 /₩8,607.71

- 점심값 HRK 442.00 /₩76,083.36

- 점심팁 €5.0 /₩6,359.17 (현금)

- 주차비 HRK 75 /₩12,910.07

- 군밤(간식) HRK 2.50 /₩430.34 (현금)

- 저녁장 HRK 168.98 /₩29,087.25

 

그래서 오늘 사용한 여행 경비는

총 ₩249,933

 

그리고 오늘까지 총 누적 여행 경비

- 총 6,602,245 (어제까지의 총여행 경비 6,352,312 포함)

+ Recent posts