Ubuntu 18.04LTS 환경에 X11 Platform 용 QT 프레임워크를 설치 하려고 합니다.
잘 알고 계시겠지만,
참고로 말씀드리면 QT 프레임워크 빌드는 QT Application 개발만을 위해서는 굳이 진행하실 필요가 없습니다.
QT Appliation 개발을 위한 환경 설정 중이시라면 아래 링크를 참고 하시면 됩니다.
2020/03/12 - [QT] - Ubuntu 18.04에 QT Application 개발환경 설정
실제 QT 프레임워크 빌드 목적은 여러가지이겠지만,
Cross platform 및 프레임워크 코드 수정 및 기능 추가가 아닐까 싶네요.
그럼 제가 진행하여 빌드 및 설치 성공한 결과를 블로그 해보도록 하겠습니다.
Ubuntu 18.04 LTS 환경에 QT 프레임워크 설치하기(X11 platrom 용)
1. QT framework Source Download
ubunt 에서 아래 링크로 접속하여 원하시는 QT Version 을 Download 하시면됩니다.
https://download.qt.io.archive/qt/
Web 실행 없이 Download를 원하신다면 wget을 사용 하시면됩니다.
(대신 정확한 url 을 아셔야 합니다. 저는 4.8.7을 설치 하였으므로 4.8.7 버젼 링크를 올려 두도록 하겠습니다.
wget https://download.qt.io/archive/qt/4.8/4.8.7/qt-everywhere-opensource-src-4.8.7.tar.gz
2. 다운로드 받은 파일 압축 해제 및 묶음 해제
이정도는 설명 없이도 하실수 있으시겠지요?
하지만, 명령문 적도록 하겠습니다.
tar xvf qt-everywhere-opensource-src-4.8.7-tar.gz
3. QT make 하기전 필요한 package를 설치 합니다.
예전에 작업한 것을 기억을 더듬어 가면 작성하고 있어 정확한 package가 기억이 안나는 군요.
우선, 해당 package 설치 후 빌드가 안되면 구글 검색 하시면 될 듯 합니다.(제가 생각이 난다면 추가 기입하겠습니다.)
sudo apt install build-essential libgl1-mesa-dev
4.configure 진행
configure 경우 현재 진행하는 platform 에 맞게 환경이 설정되도록 합니다.
그래서 configure의 경우 추가 옵션이 많이 존재합니다.
configure 관련하여 상세한 내용을 기입하고 싶지만 잘 모르기도하고,
해당 작성글 취지에도 벗어나기 때문에 다음에 따로 글을 올려 보도록 하겠습니다.
cd ./qt-everywhere-opensource-src-4.8.7
./configure
5. make
make
Ubuntu 18.04에서 QT make 진행시 아래와 같은 Build error가 발생할 것 입니다.
Ubuntu 18.04에 적용된 GCC 가 C++11이 Disable 되어 있어 발생한 Error 입니다.
../3rdparty/javascriptcore/JavaScriptCore/wtf/TypeTraits.h:173:69: error: ‘std::tr1’ has not been declared
template<typename T> struct HasTrivialConstructor : public std::tr1::has_trivial_constructor<T> { };
^~~
../3rdparty/javascriptcore/JavaScriptCore/wtf/TypeTraits.h:173:74: error: expected ‘{’ before ‘has_trivial_constructor’
template<typename T> struct HasTrivialConstructor : public std::tr1::has_trivial_constructor<T> { };
^~~~~~~~~~~~~~~~~~~~~~~
../3rdparty/javascriptcore/JavaScriptCore/wtf/TypeTraits.h:174:68: error: ‘std::tr1’ has not been declared
template<typename T> struct HasTrivialDestructor : public std::tr1::has_trivial_destructor<T> { };
^~~
../3rdparty/javascriptcore/JavaScriptCore/wtf/TypeTraits.h:174:73: error: expected ‘{’ before ‘has_trivial_destructor’
template<typename T> struct HasTrivialDestructor : public std::tr1::has_trivial_destructor<T> { };
위의 에러가 발생한다면 아래와 같이 옵션을 추가 해줍니다.
6. 애드블럭 해제 하시면 나타납니다.
6. QMAKE_CXXFLAGS 추가.
해당 파일에 아래 코드를 추가 해줍니다.
vi qt-everywhere-opensource-src-4.8.7/src/script/script.pro
line 112 : QMAKE_CXXFLAGS += -std=gnu++98
7. make 진행
그럼, 또 Error가 발생 할 것입니다.
itemviews.cpp: In member function ‘virtual bool QAccessibleTable2::unselectColumn(int)’:
itemviews.cpp:396:105: error: conversion from ‘int’ to ‘QItemSelectionModel::SelectionFlags {aka QFlags<QItemSelectionModel::SelectionFlag>}’ is ambiguous
view()->selectionModel()->select(index, QItemSelectionModel::Columns & QItemSelectionModel::Deselect);
애드블럭을 해제하면 수정 방법이 나타납니다.
해당 GCC 버젼에서 QFlags 값을 캐스팅 하지 못하여 발생한 Error 입니다.
그냥 static cast 를 적용 하시면 됩니다.
vi ./src/plugins/accessible/widgets/itemviews.cpp
// view()->selectionModel()->select(index, QItemSelectionModel::Columns & QItemSelectionModel::Deselect);
view()->selectionModel()->select(index, static_cast<QItemSelectionModel::SelectionFlags>(QItemSelectionModel::Columns & QItemSelectionModel::Deselect));
다시 make 합니다.
8. make install
정상적으로 build 가 완료 될 것입니다.
make install
9. 환경변수 추가.
초기 configure 시 path를 지정하지 않게 되면 default 폴더로
'/usr/local/Trolltech/Qt-버젼/' 에 설치 하게 됩니다. 그러니 해당 path를 추가 시켜 줍니다.
.bashrc 를 하셔도 되고, profile 을 수정하셔도 됩니다.
저는 profile을 수정합니다.
vi .profile
PATH=/usr/local/Trolltech/Qt-%VERSION%/bin:$PATH
export PATH
바로 적용 되도록 아래 명령도 한번 넣어 줍니다.
setenv PATH /usr/local/Trolltech/Qt-4.8.7/bin:$PATH
이렇게 하시면 QT framework 빌드가 완성 됩니다.
추가로 필요하신 plugin 의 경우 아래 링크 sqlite, mariadb 연결을 위한 plugin 빌드 부분을 참고 하시면 될 것 같습니다.
2019/01/31 - [QT] - [QT] QT Application에 SQLite , mariaDB 연결하기
그리고 블로그로 광고 수익 좀 내보고 싶어 애드블럭 실행되어져 있으면,
안보이도록 코드 좀 심어 놓았습니다. 양해 부탁드립니다.
'QT' 카테고리의 다른 글
[QT] Ubuntu 18.04LTS環境設定にQTフレームワークを設置する(X11 platform 用) (0) | 2019.02.06 |
---|---|
[QT] QT Applicationに SQlite連結する (0) | 2019.02.06 |
[QT]QTCtreator 윈도우에서 X window 로 사용하기 (0) | 2019.01.31 |
[QT] QT Application에 SQLite , mariaDB 연결하기 (0) | 2019.01.31 |
[QT] 타이틀 영역 제거 (0) | 2019.01.30 |