X윈도우는 하나의 어플리케이션이라고 이해하는게 맞다.
서버용 리눅스는 굳이 X윈도우를 실행해서 리소스를 낭비할 필요가 없다.
(내가 생각하고 있던 개념과 일치)
runlevel 5 = GUI 데스크탑 환경
runlevel 3 = CLI 텍스트 환경
// 이전 런레벨 모드와 현재 런레벨 모드 확인
$ runlevel
N 5
// 런레벨 3으로 전환
$ sudo init 3
$ runlevel
5 3
임베디드 시스템은 메모리가 부족하기 때문에, 사용하지 않는 라이브러리를 모두 메모리에 올려놓는 것은 낭비이다. 그래서 이러한 것에 대응하기 위해서 Qt는 주요 라이브러리들을 모듈 단위로 묶어서 지원함으로써 꼭 필요한 모듈만 가져다가 메모리에 올려놓고 효율적으로 사용할 수 있게끔 하고 있다.
요즘 apt 포팅이 하두 잘되어있어서 그냥 라즈베리파이에서도 apt로 qt를 사용할 수 있는데, 소형의 임베디드 파일시스템이 올라가는 타겟보드에 apt 명령이 없을 경우가 대부분이다.(또한 내가 사용해야 하는 Qt버전이 특수한 버전일 수 있다) 그래서 그러한 경우에는 크로스 컴파일 환경에서 컴퓨팅 성능이 좋은 컴퓨터에서 직접 빌드를 한 뒤에 그것을 타겟보드로 가져가서 환경을 구성해야 할 수도 있다.
"NFS"를 활용한다.
우분투 가상환경에서 Qt Creator를 실행하여 프로젝트 폴더를 열때 소스폴더 위치를 nfs 위치로 잡아놓고 거기서 수정을 한 다음에, 컴파일만 qmake
-make
로 라즈베리파이에서 하면 된다. (그냥 Qt Creator에서 바로 컴파일 후 실행하면 x86용 실행파일이 만들어져서 실행되기 때문에, ARM용 실행파일을 만들어서 실행하기 위해 라즈베리파이에서 qmake
-make
하는 것 뿐이다.)
(이런 창의적인 방법은 호스트시스템과 타겟시스템이 같은 리눅스이기 때문에 가능한 것이다.)
qmake -project
명령으로 .pro
파일을 만든다..pro
파일에 아래 사진의 4번째 라인 QT += widgets
를 추가해준다.make
할때 <QApplicatoin>이나 <QLabel>같은 모듈들을 찾아서 include 할 수 있게 된다.make
한다. 그러면 실행파일이 생긴다.소스파일이 추가되었을 때, qmake
를 해서 Makefile
을 다시 만들어줘야 한다.
그냥 소스파일이 수정만 되면 그냥 원래 Makefile
을 가지고 make
만 하면 된다.
안드로이드도 Qt와 느낌이 비슷하다. 다만 안드로이드는 액티비티라고 해서 하나의 화면단위로 프로그램을 한다.
~/Qt/Example/testWidget
Qt Creator를 통해서 그냥 실행할 수도 있고, 그냥 qmake - make를 통해서 만들어서 실행할 수도 있다.
위에 메뉴바 있는거
대화형으로 생긴거
제일 심플한거
MainWidget Object 최상위 레이아웃 우클릭하고 [Lay out] 눌러서 [vertical layout]을 누르면 레이아웃을 꽉차에 만들 수 있다. 그리고 다시 원래대로 수정하기 위한 창으로 돌아가고 싶으면 [break layout]을 누르면 된다.
레이아웃 안에 레이아웃을 넣어서 버튼 구성을 편하게 했다.
그리고 레이아웃 속성에 [layout strech]라는게 있는데, 여기에 10을 전체 값으로 갖는 비율값을 넣어주면 레이아웃 안에 컴포넌트들이 차지하는 공간영역의 비율이 된다.
화/수/목요일에 배운 내용을 가지고 응용해서 금요일에 평가가 진행될 예정임
평가 핵심부분: "차트 / 소켓 / SQL"