仮想通貨出張所

モナコインをやっていき

macOSでSanDeGoのQtウォレットをビルドする

本記事ではSanDeGoのGUI版QtウォレットをmacOSでビルドする方法を紹介したいと思います。

Discordをみていると「たまにmacOS用のウォレットがないのか?」と質問があります。さきほどmacOSでsandegodをビルドする方法を書きました。

crypto.ch3cooh.jp

注意!この方法でビルドしたウォレットを使って一ヶ月以上PoSしたり送金したりできることを確認できていますが、SanDeGoから公式にリリースされたウォレットではないためなんらかの問題が発生したとしても当方では一切の責任を負うことができない旨をご了承ください。

macOSでSanDeGoのQtウォレットをビルドする

さて、それでは早速macOSでSanDeGoのQtウォレットをビルドする方法を紹介していきます。

Homebrewをインストールする

まずパッケージマネージャとしてHomebrewを利用しています。インストール方法については以下の公式ページをご覧ください。日本語なので楽にインストールができると思います。

必要なライブラリをインストールする

Homebrewのインストールが完了したら、次はsandegoで使用しているライブラリを導入していきましょう。

brew install qt boost@1.60 openssl berkeley-db@4 miniupnpc

すでにライブラリをインストール済みの場合にワーニングやエラーが発生することがあります。その場合には未インストールのものだけをbrew install boost@1.60のように個別でビルドしてみてください。

ソースコードを取り込む

SanDeGoリポジトリのmasterブランチには、まだ僕のPullRequestが取り込まれていませんのでそのままの状態ではビルドに失敗してしまいます。macOSでQtウォレットをビルドする場合にはこちらのリポジトリを利用してください。

ソースコードを取得しましょう。

$ cd /PATH/TO/
$ mkdir sandegod
$ cd sandegod
$ git clone -b feature/macosdev_5 git@github.com:CH3COOH/SanDeGo.git
$ cd SanDeGo

ビルドする

Qtはクロスプラットフォームに対応したフレームワークでqmakeを実行することで、ビルドするプラットフォームに合わせたMakefileを生成します。

$ qmake
$ make

以上でビルドは完了ですが、ビルドしたMacのライブラリのパスに依存してしまうため、このまま配布しても別のPCで使えません。

パッケージにライブラリを内包する

Qtアプリパッケージにライブラリを追加すれば、他のPCでも実行することができるようになります。手動でやる方法とコマンドを使う方法がありました。ここではコマンドを使う方法を紹介します。

$ macdeployqt SanDeGo-Qt.app

ビルドしたQtアプリで利用しているライブラリのパスを調べてみました。ローカルのパスではなく、appパッケージ内に含まれていれば問題ありません。

$ otool -L SanDeGo-Qt.app/Contents/MacOS/SanDeGo-Qt 
SanDeGo-Qt.app/Contents/MacOS/SanDeGo-Qt:
    @executable_path/../Frameworks/libminiupnpc.17.dylib (compatibility version 0.0.0, current version 0.0.0)
    /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation (compatibility version 300.0.0, current version 1452.23.0)
    /System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices (compatibility version 1.0.0, current version 50.0.0)
    /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit (compatibility version 45.0.0, current version 1561.40.112)
    @executable_path/../Frameworks/libssl.1.0.0.dylib (compatibility version 1.0.0, current version 1.0.0)
    @executable_path/../Frameworks/libcrypto.1.0.0.dylib (compatibility version 1.0.0, current version 1.0.0)
    @executable_path/../Frameworks/libdb_cxx-4.8.dylib (compatibility version 0.0.0, current version 0.0.0)
    @executable_path/../Frameworks/libboost_system-mt.dylib (compatibility version 0.0.0, current version 0.0.0)
    @executable_path/../Frameworks/libboost_filesystem-mt.dylib (compatibility version 0.0.0, current version 0.0.0)
    @executable_path/../Frameworks/libboost_program_options-mt.dylib (compatibility version 0.0.0, current version 0.0.0)
    @executable_path/../Frameworks/libboost_thread-mt.dylib (compatibility version 0.0.0, current version 0.0.0)
    @executable_path/../Frameworks/QtWidgets.framework/Versions/5/QtWidgets (compatibility version 5.10.0, current version 5.10.1)
    @executable_path/../Frameworks/QtGui.framework/Versions/5/QtGui (compatibility version 5.10.0, current version 5.10.1)
    @executable_path/../Frameworks/QtCore.framework/Versions/5/QtCore (compatibility version 5.10.0, current version 5.10.1)
    /System/Library/Frameworks/DiskArbitration.framework/Versions/A/DiskArbitration (compatibility version 1.0.0, current version 1.0.0)
    /System/Library/Frameworks/IOKit.framework/Versions/A/IOKit (compatibility version 1.0.0, current version 275.0.0)
    @executable_path/../Frameworks/QtNetwork.framework/Versions/5/QtNetwork (compatibility version 5.10.0, current version 5.10.1)
    /System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL (compatibility version 1.0.0, current version 1.0.0)
    /System/Library/Frameworks/AGL.framework/Versions/A/AGL (compatibility version 1.0.0, current version 1.0.0)
    /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 400.9.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1252.50.4)
    /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 1452.23.0)
    /System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices (compatibility version 1.0.0, current version 822.31.0)
    /usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 228.0.0)

以上でSanDeGoのQtウォレットをビルドする方法でした。

f:id:ch3cooh393:20180512182452p:plain

関連記事

macOSでsandegodをビルドする方法を紹介しました。

SanDeGoについて知りたい方は以下の公式サイトまたはDiscordをご利用ください。

SanDeGoのウォレットを作りたい場合は、Sensuでアカウントを作るのが一番簡単な方法だと思います。ただSensuに預けっぱなしではPoSができないので適度に溜まったらデスクトップに送金(withdraw)した方がよいでしょう。