環境
1 2 3 4 5 6 7 |
$ uname -a ; lsb_release -a Linux ***** 4.4.0-109-lowlatency #132-Ubuntu SMP PREEMPT Tue Jan 9 20:43:47 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux LSB Version: core-9.20160110ubuntu0.2-amd64:core-9.20160110ubuntu0.2-noarch:printing-9.20160110ubuntu0.2-amd64:printing-9.20160110ubuntu0.2-noarch:security-9.20160110ubuntu0.2-amd64:security-9.20160110ubuntu0.2-noarch Distributor ID: Ubuntu Description: Ubuntu 16.04.6 LTS Release: 16.04 Codename: xenial |
Install MinGW
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
# x86_64-w64-mingw32-gcc sudo apt install gcc-mingw-w64-x86-64 # x86_64-w64-mingw32-g++ sudo apt install g++-mingw-w64-x86-64 # x86_64-w64-mingw32-gnat sudo apt install gnat-mingw-w64-x86-64 # i686-w64-mingw32-gfortran sudo apt install gfortran-mingw-w64-x86-64 # x86_64-w64-mingw32-windres # i686-w64-mingw32-gcc sudo apt install gcc-mingw-w64-i686 # i686-w64-mingw32-g++ sudo apt install g++-mingw-w64-i686 # i686-w64-mingw32-gnat sudo apt install gnat-mingw-w64-i686 # i686-w64-mingw32-gfortran sudo apt install gfortran-mingw-w64-i686 # i686-w64-mingw32-windres |
Download and Setting
ダウンロードした go は
~/golang/
に展開開発は
~/go/
で行う.bashrc
:
1 2 3 4 |
# golang export PATH=$PATH:$HOME/golang/bin export GOPATH=$HOME/go export PATH=$PATH:$GOPATH/bin |
1 2 |
$ go version go version go1.13 linux/amd64 |
モジュールのインストール
1 2 3 4 |
$ cd go/hello-walk $ GOOS=windows GOARCH=amd64 go get github.com/lxn/walk $ GOOS=windows GOARCH=386 go get github.com/lxn/walk $ go get github.com/akavel/rsrc |
hello-walk.go
そのまんま使用:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
package main import ( "strings" "github.com/lxn/walk" . "github.com/lxn/walk/declarative" // . ドットをつけるとパッケージ名を省略して呼び出せる ) func main() { var inTE, outTE *walk.TextEdit MainWindow{ Title: "SCREAMO", MinSize: Size{600, 400}, Layout: VBox{}, Children: []Widget{ HSplitter{ Children: []Widget{ TextEdit{AssignTo: &inTE}, TextEdit{AssignTo: &outTE, ReadOnly: true}, }, }, PushButton{ Text: "SCREAM", OnClicked: func() { outTE.SetText(strings.ToUpper(inTE.Text())) }, }, }, }.Run() } |
マニフェスト
下記のマニフェストは <trustInfo>
セクションを付けてあり
管理者権限での実行用にしてある
Linux では Windows のユーザーアカウント制御 (UAC; User Account Control) 関係ないので通常のユーザーで実行です
hello-walk.manifest
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> <security> <requestedPrivileges> <requestedExecutionLevel level="requireAdministrator"/> </requestedPrivileges> </security> </trustInfo> <assemblyIdentity version="1.0.0.0" processorArchitecture="*" name="Hogehoge" type="win32"/> <dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*"/> </dependentAssembly> </dependency> <application xmlns="urn:schemas-microsoft-com:asm.v3"> <windowsSettings> <dpiAwareness xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">PerMonitorV2, PerMonitor</dpiAwareness> <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">True</dpiAware> </windowsSettings> </application> </assembly> |
ビルド
32bit 用の場合は
amd64
を 386
に変える
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
$ # リソースファイル .syso を生成, 拡張子が合っていればOK $ GOOS=windows GOARCH=amd64 rsrc -manifest hello-walk.manifest -o rsrc.syso $ # マニフェストのファイル名を変更するのはやめてシンボリックリンク $ ln -s hello-walk.manifest hello-walk.exe.manifest $ # ビルド, ソースファイルを指定しないこと, リソースは結合してくれる $ GOOS=windows GOARCH=amd64 go build -ldflags="-H windowsgui" -o hello-walk.exe $ # linux では実行エラーになる wine が古いかも $ wine --version wine-3.0.4 $ wine hello-walk.exe 002e:fixme:process:SetProcessPriorityBoost (0xffffffffffffffff,1): stub |
wine のアップデート
して動作した
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
$ sudo apt-get remove winehq-stable ### Ubuntu 19.04 $ sudo apt-add-repository 'deb https://dl.winehq.org/wine-builds/ubuntu/ disco main' ### Ubuntu 18.04 $ sudo apt-add-repository 'deb https://dl.winehq.org/wine-builds/ubuntu/ bionic main' ### Ubuntu 16.04 $ sudo apt-add-repository 'deb https://dl.winehq.org/wine-builds/ubuntu/ xenial main' $ sudo apt-get update $ sudo apt-get install --install-recommends winehq-stable $ wine --version wine-4.0.1 |
See
- https://golang.org/
- https://github.com/lxn/walk
- https://pod.hatenablog.com/entry/2018/12/26/074944
- https://tecadmin.net/install-wine-on-ubuntu/