Web Analytics

こつこつエンジニア

現役アプリ開発者によるIT系特化ブログ

Qtでクロスプラットフォーム開発をしてみよう!【AWS Linux Ubuntu導入編】

f:id:madai21:20210801231731j:plain

はじめに

前回はWindowsでQt Creatorを導入し、Hello Worldを表示するプログラムを作りました。
今回はAWSLinux Ubuntu Serverを構築し、Windowと同じコードのHello WorldプログラムをUbuntu上で動作させてみたいと思います。
madai21.hatenablog.com

環境

以下をすべて用意していることを前提とします。

  • AWSのアカウントを用意

aws.amazon.com

  • TeraTermを用意(使用するバージョンは4.105です)

ja.osdn.net

手順

  1. AWSでEC2インスタンス(Linuxサーバー)の作成
  2. リモートデスクトップ接続できるようにLinuxsサーバーにUbuntu DesktopやXRDPなどをインストールする
  3. LinuxsサーバーにQtをインストールする
  4. Windows編で作成したHelloWorldプロジェクトをLinuxサーバーに転送する
  5. リモートデスクトップ接続する
  6. Qt CreatorでHelloWorldアプリケーションを実行する

1. AWSでEC2インスタンス(Linuxサーバー)の作成

AWSログイン後にサービスからEC2を選択します。
f:id:madai21:20210707013704p:plain
EC2からインスタンスを選びインスタンスの作成を行います。
f:id:madai21:20210706235029p:plain
マシンイメージには無料枠のUbuntu Server 20.04 LTSを選択します。
f:id:madai21:20210802143833p:plain
インスタンスタイプも無料枠のt2.microを使いたかった所ですが、今回はこれだとメモリが足りないのでt2.mediumを選択していることを確認し確認と作成ボタンを押します。
インスタンスタイプが無料枠ではないので料金がかかりますのでご注意ください!
f:id:madai21:20210802144148p:plain
このページでは特に何もせずに起動ボタンを押します。
f:id:madai21:20210802144750p:plain
AWSでキーペアをすでに作成済みの場合は既存のキーペアの選択を選び、使用するキーを設定します。
問題なければチェックボックスにチェックし、インスタンスの作成を押しましょう。
f:id:madai21:20210802144852p:plain
※キーペア作成したことがないのであればこの記事を参考に新規キーペアを作成しておいてください。
madai21.hatenablog.com
以下の画面が表示されたら赤丸の個所をクリックします。
f:id:madai21:20210706235851p:plain
生成したインスタンスの情報が確認できるので、パブリックIPアドレス(今回は54.248.30.206)を忘れないようにどこかにメモしておきます。
f:id:madai21:20210802150949p:plain

2. リモートデスクトップ接続できるようにLinuxsサーバーにUbuntu DesktopやXRDPなどをインストールする

Tera Termを起動し、生成したインスタンスのパブリックIPアドレスを入力しSSHで接続するためOKボタンを押します。
f:id:madai21:20210802151417p:plain
ユーザー名は「ubuntu」、パスワードはなし、認証方式にRSAを使うインスタンス生成の時に選択したキーペアファイル(key.pem)を選択した後にOKボタンを押します。
f:id:madai21:20210802151708p:plain
以下のコマンドを上から順に入力しLinuxを更新しておきます(途中の選択肢はすべてyで)

sudo apt update -y
sudo apt upgrade -y
以下のコマンドを上から順に入力しリモートデスクトップ接続用のユーザー(今回はdesktopuser)を作成します。
※adduserコマンド後にパスワード入力、確認用パスワード入力、5回Enter、Yと入力していきます。
sudo adduser desktopuser
sudo gpasswd -a desktopuser sudo
以下のコマンドを上から順に入力しUbuntu Desktopをインストールします。
※完了まで数分かかります。
apt search ubuntu-desktop
sudo apt -y install ubuntu-desktop
以下のコマンドを上から順に入力しXRDPをインストールします。
apt search xrdp
sudo apt install -y xrdp
sudo sed -e 's/^new_cursors=true/new_cursors=false/g' -i /etc/xrdp/xrdp.ini
sudo systemctl restart xrdp
ここで一旦AWSに戻りEC2インスタンスのセキュリティグループのインバウンドルールにRDPを許可するようにします。
f:id:madai21:20210802154339p:plain
タイプをRDP、ソースに0.0.0.0/0を選択し、ルールを保存ボタンを押します。
f:id:madai21:20210802154617p:plain
再度Teratermに戻ります。
以下のコマンドを上から順に入力しリモートデスクトップ接続用のユーザーに切り替え環境設定をしておきます。
※su desktopuserでパスワード入力されますので、設定したパスワードを入力します。
su desktopuser
DESKTOP=/usr/share/ubuntu:/usr/local/share:/usr/share:/var/lib/snapd/desktop
以下のコマンドを入力し.xsessionファイルを作成編集開始します。
vim ~/.xsessionrc
.xsessionファイルには以下の内容を設定しておきます。
export GNOME_SHELL_SESSION_MODE=ubuntu
export XDG_CURRENT_DESKTOP=ubuntu:GNOME
export XDG_DATA_DIRS=/usr/share/ubuntu:/usr/local/share:/usr/share:/var/lib/snapd/desktop
export XDG_CONFIG_DIRS=/etc/xdg/xdg-ubuntu:/etc/xdg

3. LinuxsサーバーにQtをインストールする

以下のコマンドを入力しQtライブラリをインストールします。
※かなり時間かかります。

sudo apt install -Y qtbase5-dev qttools5-dev-tools qt5-default
以下のコマンドを入力しQt Creatorをインストールします。
sudo apt install -Y qtcreator
以下のコマンドを入力しビルドツールをインストールします。
sudo apt-get install build-essential

4. Windows編で作成したHelloWorldプロジェクトをLinuxサーバーに転送する

以下のコマンドを入力しQtプロジェクト用フォルダをdesktopuserのHomeディレクトリ以下に作成します。

cd /home/desktopuser/
sudo mkdir qt
sudo chmod 777 qt
Windows編で作成したHelloWorldプロジェクトをZip圧縮しておきます。
その後、Teratermのメニューからファイル→SSH SCPを選択します。
f:id:madai21:20210802154831p:plain
HomeにはZip圧縮したHelloWorldプロジェクトを、Toには先ほど作成したQtプロジェクト用フォルダをそれぞれ設定しておきます。
Sendボタンを押すとローカルPCからAWS Ubuntuサーバーに転送されます。
f:id:madai21:20210802155036p:plain
以下のコマンドを入力し転送されたHelloWorldプロジェクトを解凍しておきます。
cd /home/desktopuser/qt
sudo unzip HelloWorld.zip

5. リモートデスクトップ接続する

Windowsの検索窓にdeskと入力するとリモートデスクトップ接続と出ると思いますので、それを選択して起動します。
f:id:madai21:20210802155542p:plain
オプションの表示を押します。
f:id:madai21:20210802155748p:plain
コンピュータに「パブリックIPアドレス」、ユーザー名に「リモートデスクトップ接続用のユーザー名」を入力し接続ボタンを押します。
f:id:madai21:20210802160203p:plain
はいを押します。
f:id:madai21:20210802160243p:plain
リモートデスクトップ接続用のユーザーのパスワードを入力し、OKを押しましょう。
f:id:madai21:20210802160316p:plain
このようなubuntuのデスクトップ画面が表示されてたらリモート接続成功です^^
f:id:madai21:20210802160600p:plain

6. Qt CreatorでHelloWorldアプリケーションを実行する

まずはubuntuのデスクトップ画面からQt Creatorを起動しましょう。
左下のアイコンを押し、その後Allタブを押します。
f:id:madai21:20210802160415p:plain
右中央に〇が縦に3つ並んでいると思います。
真ん中の〇を選択しましょう。
f:id:madai21:20210802160744p:plain
Qt Creatorがあると思いますので、クリックして起動させます。
f:id:madai21:20210802160909p:plain
ProjectsからOpenボタンを押します。
f:id:madai21:20210802161002p:plain
Other LocationsからComputerを選択します。
f:id:madai21:20210802161102p:plain
home→desktopuser→qt→HelloWorldとディレクトリを順にクリックしていきます。
HelloWorld.proを選択しましょう。
f:id:madai21:20210802164610p:plain
以下のようなダイアログが出るかと思いますが、とりあえず無視してOKボタンを押します。
f:id:madai21:20210802161440p:plain
Configure Projectを押します。
f:id:madai21:20210802161601p:plain
これで準備は整いました。
ビルドして実行してみましょう^^
メニューのビルド→実行と押します。
f:id:madai21:20210802161654p:plain
Windows編と同じ画面が表示されましたね^^
f:id:madai21:20210802161758p:plain

おわりに

長かったですね、お疲れさまでした^^;
ですが、これで一つのコードでWindowsLinuxどちらもビルド可能なコードをQtを使って開発することが可能となりました^^
時間あれば各種Qtライブラリの機能についても書きたいと思います。

最後に今回参考にさせていただいたURLを記載させて頂きます。
ponsuke-tarou.hatenablog.com
enjoysoftware.hatenablog.com