Building_64 bit_binaries_for_Windows - jontio/libaeroambe GitHub Wiki
Compiling 64 bit binaries for Windows
Intro
I’ve been flooded with emails about how to compile libaeroambe on Windows. As my normal Windows computer already has a build environment set up I was going to use my laptop which doesn’t have one and install one on documenting how I did it as I went. However after spending a day of trying to get a new SSD working on it and trying to dual boot it, I can’t get Windows to mount it even though it can see it. The BIOS (UEFI) doesn’t mention the drive but when booting Linux from a USB flash drive it can see and access both drives format the new drive etc. In addition Windows seem so confused about the new SSD that even booting into Windows is hit and miss. In Windows when using diskpart
if I select disk 0 the moment I list the volumes then list disks again it switches back to disk 1, arrrgh. So instead I’m afraid I’m just going to have to document how I do things on my normal main computer where the build environment is already set up.
Here I’ll assume everyone is using a 64-bit Windows computer of some description.
MSYS2
For Windows install my first point of call is always MSYS2...
MSYS2 comes with the package manager called pacman and allows you to install things from a centralized repository.
Download the 64-bit MSYS2 installer. I found the MSYS2 download link rather slow so I copied it over and put it in a Google drive if you think it might be faster...
https://drive.google.com/file/d/1seRrUtbgllH3tnkxp7Ph6WWPfirO3uLB/view?usp=sharing
SHA256: 3b233de38cb0393b40617654409369e025b5e6262d3ad60dbd6be33b4eeb8e7b
Follow the instructions on the MSYS2 page at least up until you have finished updating pacman -Su
Now you have MSYS2 installed you can use the package manager pacman
to download the usual packages such as git, qt, qmake, etc.
What does my setup look like?
My setup is a little odd but I will document it here.
These are the packages that pacman has installed...
$ pacman -Q
autoconf 2.69-5
autogen 5.18.12-2
automake-wrapper 11-1
automake1.10 1.10.3-3
automake1.11 1.11.6-3
automake1.12 1.12.6-3
automake1.13 1.13.4-4
automake1.14 1.14.1-3
automake1.15 1.15.1-1
automake1.16 1.16.1-1
automake1.6 1.6.3-2
automake1.7 1.7.9-2
automake1.8 1.8.5-3
automake1.9 1.9.6-2
bash 4.4.023-1
bash-completion 2.8-2
binutils 2.30-1
brotli 1.0.7-1
bsdcpio 3.3.3-3
bsdtar 3.3.3-3
bzip2 1.0.6-2
ca-certificates 20170717-2
coreutils 8.30-1
crypt 1.4-1
curl 7.61.1-1
dash 0.5.10.2-1
db 5.3.28-2
diffutils 3.6-1
file 5.35-1
filesystem 2018.08-1
findutils 4.6.0-1
flex 2.6.4-1
gawk 4.2.1-1
gcc 7.3.0-3
gcc-fortran 7.3.0-3
gcc-libs 7.3.0-3
gdbm 1.18.1-1
gettext 0.19.8.1-1
glib2 2.54.3-1
gmp 6.1.2-1
gnupg 2.2.10-1
grep 3.1-1
gzip 1.9-1
heimdal-libs 7.5.0-2
icu 62.1-1
inetutils 1.9.4-1
info 6.5-2
isl 0.19-1
less 530-1
libarchive 3.3.3-3
libasprintf 0.19.8.1-1
libassuan 2.5.1-1
libbz2 1.0.6-2
libcrypt 2.1-2
libcurl 7.61.1-1
libdb 5.3.28-2
libedit 3.1-20170329
libexpat 2.2.6-1
libffi 3.2.1-3
libgc 8.0.0-1
libgcrypt 1.8.4-1
libgdbm 1.18.1-1
libgettextpo 0.19.8.1-1
libgnutls 3.6.3-1
libgpg-error 1.32-1
libgpgme 1.12.0-1
libguile 2.2.4-1
libhogweed 3.4-1
libiconv 1.15-1
libidn 1.35-1
libidn2 2.0.5-1
libintl 0.19.8.1-1
libksba 1.3.5-1
libltdl 2.4.6-5
liblz4 1.8.3-1
liblzma 5.2.4-1
liblzo2 2.10-2
libmetalink 0.1.3-2
libnettle 3.4-1
libnghttp2 1.34.0-1
libnpth 1.6-1
libopenssl 1.0.2.p-2
libp11-kit 0.23.14-1
libpcre 8.42-1
libpcre16 8.42-1
libpcre32 8.42-1
libpcrecpp 8.42-1
libpcreposix 8.42-1
libpsl 0.20.2-1
libreadline 7.0.005-1
libsqlite 3.21.0-4
libssh2 1.8.0-1
libtasn1 4.13-1
libtool 2.4.6-5
libunistring 0.9.10-1
libutil-linux 2.32.1-1
libxml2 2.9.8-1
libxslt 1.1.32-1
lndir 1.0.3-1
m4 1.4.18-2
make 4.2.1-1
mingw-w64-i686-assimp 4.1.0-2
mingw-w64-i686-binutils 2.30-5
mingw-w64-i686-brotli 1.0.7-1
mingw-w64-i686-bzip2 1.0.6-6
mingw-w64-i686-c-ares 1.15.0-1
mingw-w64-i686-ca-certificates 20170211-2
mingw-w64-i686-cairo 1.16.0-1
mingw-w64-i686-clang 7.0.0-1
mingw-w64-i686-clang-tools-extra 7.0.0-1
mingw-w64-i686-cmake 3.12.3-1
mingw-w64-i686-crt-git 7.0.0.5255.83bdce54-1
mingw-w64-i686-curl 7.61.1-4
mingw-w64-i686-dbus 1.12.10-1
mingw-w64-i686-expat 2.2.6-1
mingw-w64-i686-fontconfig 2.13.1-1
mingw-w64-i686-freeglut 3.0.0-4
mingw-w64-i686-freetype 2.9.1-1
mingw-w64-i686-gcc 7.3.0-2
mingw-w64-i686-gcc-fortran 7.3.0-2
mingw-w64-i686-gcc-libgfortran 7.3.0-2
mingw-w64-i686-gcc-libs 7.3.0-2
mingw-w64-i686-gdb 8.2-1
mingw-w64-i686-gdbm 1.18.1-1
mingw-w64-i686-gettext 0.19.8.1-6
mingw-w64-i686-giflib 5.1.4-2
mingw-w64-i686-glib2 2.58.1-1
mingw-w64-i686-gmp 6.1.2-1
mingw-w64-i686-gnutls 3.6.4-1
mingw-w64-i686-graphite2 1.3.12-1
mingw-w64-i686-harfbuzz 2.0.2-1
mingw-w64-i686-headers-git 7.0.0.5255.83bdce54-1
mingw-w64-i686-icu 62.1-1
mingw-w64-i686-icu-debug-libs 62.1-1
mingw-w64-i686-isl 0.19-1
mingw-w64-i686-jansson 2.11-1
mingw-w64-i686-jasper 2.0.14-1
mingw-w64-i686-jemalloc 5.1.0-3
mingw-w64-i686-jsoncpp 1.8.4-3
mingw-w64-i686-lcms2 2.9-1
mingw-w64-i686-libarchive 3.3.3-2
mingw-w64-i686-libffi 3.2.1-4
mingw-w64-i686-libgcrypt 1.8.4-1
mingw-w64-i686-libgpg-error 1.32-1
mingw-w64-i686-libiconv 1.15-3
mingw-w64-i686-libidn 1.35-1
mingw-w64-i686-libidn2 2.0.5-1
mingw-w64-i686-libjpeg-turbo 2.0.0-1
mingw-w64-i686-libmetalink 0.1.3-3
mingw-w64-i686-libmng 2.0.3-4
mingw-w64-i686-libpng 1.6.35-1
mingw-w64-i686-libpsl 0.20.2-1
mingw-w64-i686-libssh2 1.8.0-3
mingw-w64-i686-libsystre 1.0.1-4
mingw-w64-i686-libtasn1 4.13-1
mingw-w64-i686-libtiff 4.0.9-2
mingw-w64-i686-libtre-git r128.6fb7206-2
mingw-w64-i686-libunistring 0.9.10-1
mingw-w64-i686-libusb 1.0.22-1
mingw-w64-i686-libuv 1.23.2-1
mingw-w64-i686-libwebp 1.0.0-1
mingw-w64-i686-libwinpthread-git 7.0.0.5253.37101e0b-1
mingw-w64-i686-libxml2 2.9.8-1
mingw-w64-i686-libxslt 1.1.32-1
mingw-w64-i686-llvm 7.0.0-1
mingw-w64-i686-lz4 1.8.3-1
mingw-w64-i686-lzo2 2.10-1
mingw-w64-i686-make 4.2.1-2
mingw-w64-i686-minizip 2.5.2-2
mingw-w64-i686-mpc 1.1.0-1
mingw-w64-i686-mpdecimal 2.4.2-1
mingw-w64-i686-mpfr 4.0.1-2
mingw-w64-i686-ncurses 6.1.20180908-1
mingw-w64-i686-nettle 3.4-1
mingw-w64-i686-nghttp2 1.34.0-2
mingw-w64-i686-octopi-git r941.6df0f8a-1
mingw-w64-i686-openal 1.19.1-1
mingw-w64-i686-openssl 1.1.1-4
mingw-w64-i686-p11-kit 0.23.14-1
mingw-w64-i686-pcre 8.42-1
mingw-w64-i686-pcre2 10.32-1
mingw-w64-i686-pixman 0.34.0-3
mingw-w64-i686-python2 2.7.15-3
mingw-w64-i686-python3 3.7.1-2
mingw-w64-i686-qbs 1.12.1-1
mingw-w64-i686-qt-creator 4.7.1-1
mingw-w64-i686-qt-installer-framework-git r3011.370f61be-2
mingw-w64-i686-qt5 5.11.2-3
mingw-w64-i686-qt5-static 5.11.2-3
mingw-w64-i686-qtbinpatcher 2.2.0-2
mingw-w64-i686-readline 7.0.005-1
mingw-w64-i686-rhash 1.3.6-2
mingw-w64-i686-rtmpdump-git r512.fa8646d-3
mingw-w64-i686-spdylay 1.4.0-1
mingw-w64-i686-sqlite3 3.25.2-1
mingw-w64-i686-szip 2.1.1-2
mingw-w64-i686-tcl 8.6.8-1
mingw-w64-i686-termcap 1.3.1-3
mingw-w64-i686-tk 8.6.8-1
mingw-w64-i686-tools-git 7.0.0.5242.1b29d1bc-1
mingw-w64-i686-vulkan 1.1.73.0-1
mingw-w64-i686-windows-default-manifest 6.4-3
mingw-w64-i686-wineditline 2.205-1
mingw-w64-i686-winpthreads-git 7.0.0.5253.37101e0b-1
mingw-w64-i686-xpm-nox 4.2.0-5
mingw-w64-i686-xz 5.2.4-1
mingw-w64-i686-z3 4.7.1-2
mingw-w64-i686-zlib 1.2.11-4
mingw-w64-i686-zstd 1.3.7-1
mingw-w64-i686-zziplib 0.13.69-1
mingw-w64-x86_64-assimp 4.1.0-2
mingw-w64-x86_64-binutils 2.30-5
mingw-w64-x86_64-brotli 1.0.7-1
mingw-w64-x86_64-bzip2 1.0.6-6
mingw-w64-x86_64-c-ares 1.15.0-1
mingw-w64-x86_64-ca-certificates 20170211-2
mingw-w64-x86_64-cairo 1.16.0-1
mingw-w64-x86_64-clang 7.0.0-1
mingw-w64-x86_64-clang-tools-extra 7.0.0-1
mingw-w64-x86_64-cmake 3.12.3-1
mingw-w64-x86_64-crt-git 7.0.0.5255.83bdce54-1
mingw-w64-x86_64-curl 7.61.1-4
mingw-w64-x86_64-dbus 1.12.10-1
mingw-w64-x86_64-expat 2.2.6-1
mingw-w64-x86_64-fontconfig 2.13.1-1
mingw-w64-x86_64-freeglut 3.0.0-4
mingw-w64-x86_64-freetype 2.9.1-1
mingw-w64-x86_64-gcc 8.2.0-3
mingw-w64-x86_64-gcc-fortran 8.2.0-3
mingw-w64-x86_64-gcc-libgfortran 8.2.0-3
mingw-w64-x86_64-gcc-libs 8.2.0-3
mingw-w64-x86_64-gdb 8.2-1
mingw-w64-x86_64-gdbm 1.18.1-1
mingw-w64-x86_64-gettext 0.19.8.1-6
mingw-w64-x86_64-giflib 5.1.4-2
mingw-w64-x86_64-glib2 2.58.1-1
mingw-w64-x86_64-gmp 6.1.2-1
mingw-w64-x86_64-graphite2 1.3.12-1
mingw-w64-x86_64-harfbuzz 2.0.2-1
mingw-w64-x86_64-headers-git 7.0.0.5255.83bdce54-1
mingw-w64-x86_64-icu 62.1-1
mingw-w64-x86_64-icu-debug-libs 62.1-1
mingw-w64-x86_64-isl 0.19-1
mingw-w64-x86_64-jansson 2.11-1
mingw-w64-x86_64-jasper 2.0.14-1
mingw-w64-x86_64-jemalloc 5.1.0-3
mingw-w64-x86_64-jsoncpp 1.8.4-3
mingw-w64-x86_64-lcms2 2.9-1
mingw-w64-x86_64-libarchive 3.3.3-2
mingw-w64-x86_64-libffi 3.2.1-4
mingw-w64-x86_64-libgcrypt 1.8.4-1
mingw-w64-x86_64-libgpg-error 1.32-1
mingw-w64-x86_64-libiconv 1.15-3
mingw-w64-x86_64-libidn2 2.0.5-1
mingw-w64-x86_64-libjpeg-turbo 2.0.0-1
mingw-w64-x86_64-libmariadbclient 2.3.7-1
mingw-w64-x86_64-libmetalink 0.1.3-3
mingw-w64-x86_64-libmng 2.0.3-4
mingw-w64-x86_64-libpng 1.6.35-1
mingw-w64-x86_64-libpsl 0.20.2-1
mingw-w64-x86_64-libssh2 1.8.0-3
mingw-w64-x86_64-libsystre 1.0.1-4
mingw-w64-x86_64-libtasn1 4.13-1
mingw-w64-x86_64-libtiff 4.0.9-2
mingw-w64-x86_64-libtre-git r128.6fb7206-2
mingw-w64-x86_64-libunistring 0.9.10-1
mingw-w64-x86_64-libuv 1.23.2-1
mingw-w64-x86_64-libwebp 1.0.0-1
mingw-w64-x86_64-libwinpthread-git 7.0.0.5253.37101e0b-1
mingw-w64-x86_64-libxml2 2.9.8-1
mingw-w64-x86_64-libxslt 1.1.32-1
mingw-w64-x86_64-llvm 7.0.0-1
mingw-w64-x86_64-lz4 1.8.3-1
mingw-w64-x86_64-lzo2 2.10-1
mingw-w64-x86_64-make 4.2.1-2
mingw-w64-x86_64-minizip 2.5.2-2
mingw-w64-x86_64-mpc 1.1.0-1
mingw-w64-x86_64-mpdecimal 2.4.2-1
mingw-w64-x86_64-mpfr 4.0.1-2
mingw-w64-x86_64-ncurses 6.1.20180908-1
mingw-w64-x86_64-nettle 3.4-1
mingw-w64-x86_64-nghttp2 1.34.0-2
mingw-w64-x86_64-openal 1.19.1-1
mingw-w64-x86_64-openssl 1.1.1-4
mingw-w64-x86_64-p11-kit 0.23.14-1
mingw-w64-x86_64-pcre 8.42-1
mingw-w64-x86_64-pcre2 10.32-1
mingw-w64-x86_64-pixman 0.34.0-3
mingw-w64-x86_64-python2 2.7.15-3
mingw-w64-x86_64-python3 3.7.1-2
mingw-w64-x86_64-qbs 1.12.1-1
mingw-w64-x86_64-qt-creator 4.7.1-1
mingw-w64-x86_64-qt-installer-framework-git r3011.370f61be-2
mingw-w64-x86_64-qt5 5.11.2-3
mingw-w64-x86_64-qt5-static 5.11.2-3
mingw-w64-x86_64-qtbinpatcher 2.2.0-2
mingw-w64-x86_64-readline 7.0.005-1
mingw-w64-x86_64-rhash 1.3.6-2
mingw-w64-x86_64-sqlite3 3.25.2-1
mingw-w64-x86_64-szip 2.1.1-2
mingw-w64-x86_64-tcl 8.6.8-1
mingw-w64-x86_64-termcap 1.3.1-3
mingw-w64-x86_64-tk 8.6.8-1
mingw-w64-x86_64-tools-git 7.0.0.5242.1b29d1bc-1
mingw-w64-x86_64-vulkan 1.1.73.0-1
mingw-w64-x86_64-windows-default-manifest 6.4-3
mingw-w64-x86_64-wineditline 2.205-1
mingw-w64-x86_64-winpthreads-git 7.0.0.5253.37101e0b-1
mingw-w64-x86_64-xpm-nox 4.2.0-5
mingw-w64-x86_64-xz 5.2.4-1
mingw-w64-x86_64-z3 4.7.1-2
mingw-w64-x86_64-zlib 1.2.11-4
mingw-w64-x86_64-zstd 1.3.7-1
mingw-w64-x86_64-zziplib 0.13.69-1
mintty 1~2.9.3-1
mpc 1.1.0-1
mpfr 4.0.1-1
msys2-keyring r9.397a52e-1
msys2-launcher-git 0.3.32.56c2ba7-2
msys2-runtime 2.11.1-2
msys2-runtime-devel 2.11.1-2
msys2-w32api-headers 6.0.0.5223.7f9d8753-1
msys2-w32api-runtime 6.0.0.5223.7f9d8753-1
nano 3.1-1
ncurses 6.1.20180908-1
nettle 3.4-1
openssl 1.0.2.p-2
p11-kit 0.23.14-1
pacman 5.1.1-3
pacman-mirrors 20180604-2
pactoys-git r2.07ca37f-1
pax-git 20161104.2-1
pcre 8.42-1
perl 5.28.0-1
pinentry 1.1.0-2
pkg-config 0.29.2-1
pkgfile 17-1
rebase 4.4.4-1
sed 4.5-1
tar 1.30-1
tftp-hpa 5.2-2
time 1.9-1
tzcode 2018.c-1
util-linux 2.32.1-1
wget 1.19.5-1
which 2.21-2
windows-default-manifest 6.4-1
winpty 0.4.3-1
xz 5.2.4-1
zlib 1.2.11-1
I have both 64 and 32 bit packages (eg mingw-w64-i686 is a 32-bit package while mingw-w64-x86_64 is for 64-bit package) you will only need to install the 64-bit ones. I am missing git. I do have this installed on my computer but I installed it from the git website in the traditional Windows installation method.
qtcreator (this is a GUI IDE environment for C++) for the last year or so I have found has a bug in it on my computer at least (and others) where the CPU is stuck at 25% even when doing nothing. So the qtcreator I use is an older version that doesn’t have this bug in. I downloaded this separately from the Qt framework. I should really delete those qtcreator packages that pacman installed.
So to sum up my setup is...
- MSYS2 obtains most of the programs I use, Qt framework, cmake etc
- I use MinGW as my compiler and not MSVC
- I use an old qtcreator manually installed
- git is installed from the git webpage directly in the usual window ideology
What do you need?
I’m not sure exactly which packages are needed as I have all sorts but I can give you the few that will either be handy or are needed.
To install new packages you use the pacman -S
command from the MinGW-w64 Win64 Shell
. You can search for packages using the pacman -Ss
command. If you want pacman to do something that you don’t know how to do then I suggest doing an internet search and looking through https://github.com/msys2/msys2/wiki/Using-packages as that’s usually the quickest way.
I suggest getting pacman to install...
- git
- mingw-w64-x86_64-qt5
- mingw-w64-x86_64-gcc
- mingw-w64-x86_64-make
- mingw-w64-x86_64-cmake
You may need to install more packages than that but you’ll quickly find out when you try to compile something and it will tell you something is missing. That point searching the web is the next step.
So I believe you should type the following...
Pacman -S git mingw-w64-x86_64-qt5 mingw-w64-x86_64-gcc mingw-w64-x86_64-make mingw-w64-x86_64-cmake
Quick example
I’m missing the git package so for example I will install that one...
$ pacman -S git
resolving dependencies...
looking for conflicting packages...
Packages (32) expat-2.2.6-1 heimdal-7.5.0-2 libpcre2_8-10.32-1 openssh-7.9p1-1 perl-Authen-SASL-2.16-2 perl-Convert-BinHex-1.125-1
perl-Encode-Locale-1.05-1 perl-Error-0.17027-1 perl-File-Listing-6.04-2 perl-HTML-Parser-3.72-3 perl-HTML-Tagset-3.20-2
perl-HTTP-Cookies-6.04-1 perl-HTTP-Daemon-6.01-2 perl-HTTP-Date-6.02-2 perl-HTTP-Message-6.18-1 perl-HTTP-Negotiate-6.01-2
perl-IO-Socket-SSL-2.060-1 perl-IO-stringy-2.111-1 perl-LWP-MediaTypes-6.02-2 perl-MIME-tools-5.509-1 perl-MailTools-2.20-1
perl-Net-HTTP-6.18-1 perl-Net-SMTP-SSL-1.04-1 perl-Net-SSLeay-1.85-1 perl-TermReadKey-2.37-3 perl-TimeDate-2.30-2 perl-Try-Tiny-0.30-1
perl-URI-1.74-1 perl-WWW-RobotRules-6.02-2 perl-libwww-6.36-1 vim-8.1.0500-1 git-2.19.1-1
Total Download Size: 14.19 MiB
Total Installed Size: 81.67 MiB
:: Proceed with installation? [Y/n]
:: Retrieving packages...
expat-2.2.6-1-x86_64 42.6 KiB 20.8M/s 00:00 [######################################################] 100%
libpcre2_8-10.32-1-x86_64 117.8 KiB 595K/s 00:00 [######################################################] 100%
vim-8.1.0500-1-x86_64 6.8 MiB 1283K/s 00:05 [######################################################] 100%
heimdal-7.5.0-2-x86_64 425.5 KiB 1788K/s 00:00 [######################################################] 100%
openssh-7.9p1-1-x86_64 686.5 KiB 1582K/s 00:00 [######################################################] 100%
perl-Error-0.17027-1-any 39.2 KiB 19.1M/s 00:00 [######################################################] 100%
perl-Authen-SASL-2.16-2-any 42.4 KiB 20.7M/s 00:00 [######################################################] 100%
perl-Encode-Locale-1.05-1-any 24.3 KiB 11.8M/s 00:00 [######################################################] 100%
perl-HTTP-Date-6.02-2-any 8.6 KiB 0.00B/s 00:00 [######################################################] 100%
perl-File-Listing-6.04-2-any 7.7 KiB 7.51M/s 00:00 [######################################################] 100%
perl-HTML-Tagset-3.20-2-any 10.3 KiB 0.00B/s 00:00 [######################################################] 100%
perl-HTML-Parser-3.72-3-x86_64 93.1 KiB 15.1M/s 00:00 [######################################################] 100%
perl-LWP-MediaTypes-6.02-2-any 18.0 KiB 0.00B/s 00:00 [######################################################] 100%
perl-URI-1.74-1-any 92.8 KiB 15.1M/s 00:00 [######################################################] 100%
perl-HTTP-Message-6.18-1-any 89.5 KiB 12.5M/s 00:00 [######################################################] 100%
perl-HTTP-Cookies-6.04-1-any 34.5 KiB 16.9M/s 00:00 [######################################################] 100%
perl-HTTP-Daemon-6.01-2-any 14.2 KiB 13.9M/s 00:00 [######################################################] 100%
perl-HTTP-Negotiate-6.01-2-any 11.4 KiB 11.2M/s 00:00 [######################################################] 100%
perl-Net-HTTP-6.18-1-any 38.2 KiB 12.4M/s 00:00 [######################################################] 100%
perl-WWW-RobotRules-6.02-2-any 12.2 KiB 12.0M/s 00:00 [######################################################] 100%
perl-Try-Tiny-0.30-1-any 32.0 KiB 15.6M/s 00:00 [######################################################] 100%
perl-libwww-6.36-1-any 143.5 KiB 14.0M/s 00:00 [######################################################] 100%
perl-TimeDate-2.30-2-any 35.9 KiB 11.7M/s 00:00 [######################################################] 100%
perl-MailTools-2.20-1-any 74.9 KiB 2.22M/s 00:00 [######################################################] 100%
perl-IO-stringy-2.111-1-any 52.6 KiB 17.1M/s 00:00 [######################################################] 100%
perl-Convert-BinHex-1.125-1-any 42.8 KiB 13.9M/s 00:00 [######################################################] 100%
perl-MIME-tools-5.509-1-any 194.9 KiB 14.6M/s 00:00 [######################################################] 100%
perl-Net-SSLeay-1.85-1-x86_64 224.4 KiB 13.7M/s 00:00 [######################################################] 100%
perl-IO-Socket-SSL-2.060-1-any 153.0 KiB 6.79M/s 00:00 [######################################################] 100%
perl-Net-SMTP-SSL-1.04-1-any 18.4 KiB 0.00B/s 00:00 [######################################################] 100%
perl-TermReadKey-2.37-3-x86_64 34.6 KiB 11.3M/s 00:00 [######################################################] 100%
git-2.19.1-1-x86_64 4.7 MiB 1345K/s 00:04 [######################################################] 100%
(32/32) checking keys in keyring [######################################################] 100%
(32/32) checking package integrity [######################################################] 100%
(32/32) loading package files [######################################################] 100%
(32/32) checking for file conflicts [######################################################] 100%
(32/32) checking available disk space [######################################################] 100%
:: Processing package changes...
( 1/32) installing expat [######################################################] 100%
( 2/32) installing libpcre2_8 [######################################################] 100%
( 3/32) installing vim [######################################################] 100%
( 4/32) installing heimdal [######################################################] 100%
( 5/32) installing openssh [######################################################] 100%
( 6/32) installing perl-Error [######################################################] 100%
( 7/32) installing perl-Authen-SASL [######################################################] 100%
( 8/32) installing perl-Encode-Locale [######################################################] 100%
( 9/32) installing perl-HTTP-Date [######################################################] 100%
(10/32) installing perl-File-Listing [######################################################] 100%
(11/32) installing perl-HTML-Tagset [######################################################] 100%
(12/32) installing perl-HTML-Parser [######################################################] 100%
(13/32) installing perl-LWP-MediaTypes [######################################################] 100%
(14/32) installing perl-URI [######################################################] 100%
(15/32) installing perl-HTTP-Message [######################################################] 100%
(16/32) installing perl-HTTP-Cookies [######################################################] 100%
(17/32) installing perl-HTTP-Daemon [######################################################] 100%
(18/32) installing perl-HTTP-Negotiate [######################################################] 100%
(19/32) installing perl-Net-HTTP [######################################################] 100%
(20/32) installing perl-WWW-RobotRules [######################################################] 100%
(21/32) installing perl-Try-Tiny [######################################################] 100%
(22/32) installing perl-libwww [######################################################] 100%
Optional dependencies for perl-libwww
perl-LWP-Protocol-https: for https:// url schemes
(23/32) installing perl-TimeDate [######################################################] 100%
(24/32) installing perl-MailTools [######################################################] 100%
(25/32) installing perl-IO-stringy [######################################################] 100%
(26/32) installing perl-Convert-BinHex [######################################################] 100%
module test... pass.
(27/32) installing perl-MIME-tools [######################################################] 100%
(28/32) installing perl-Net-SSLeay [######################################################] 100%
(29/32) installing perl-IO-Socket-SSL [######################################################] 100%
(30/32) installing perl-Net-SMTP-SSL [######################################################] 100%
(31/32) installing perl-TermReadKey [######################################################] 100%
(32/32) installing git [######################################################] 100%
Optional dependencies for git
python2: various helper scripts
subversion: git svn
Building
Now you should have a system that is able to build libaeroambe. The system you’ve set up is similar to a Linux environment. You have a home directory that you can get to by typing cd ~
and that directory you can obtain its name by typing PWD
. In Windows Explorer you can find that directory where you have installed MSYS2. For example I have an E: drive that I have installed MSYS2 onto and my home folder is actually E:\msys64\home\Administrator
. If you want access particular drive you can type something like cd /e
which will take you to the E: drive. You’ll also notice in the system all the /
and \
are reversed. That should be enough to get you moving around.
So I’ll type the following one of the time...
cd ~
mkdir git
cd git
git clone https://github.com/jontio/libaeroambe.git
This clones the libaeroambe repository onto your computer. It basically downloaded but adds fancy things such as version control. The output I got was...
Cloning into 'libaeroambe'...
remote: Enumerating objects: 142, done.
remote: Counting objects: 100% (142/142), done.
remote: Compressing objects: 100% (114/114), done.
remote: Total 142 (delta 25), reused 141 (delta 24), pack-reused 0
Receiving objects: 100% (142/142), 460.30 KiB | 668.00 KiB/s, done.
Resolving deltas: 100% (25/25), done.
Now we go into mbelib-master by typing...
cd libaeroambe/mbelib-master
We can have a look at the files by typing...
ls
In this directory we see CMakeLists.txt
this means it’s a Cmake project.
ambe3600x2400.c ambe3600x2450_const.h CHANGELOG config.h ecc_const.h imbe7200x4400_const.h mbelib_Author.pgp test
ambe3600x2400_const.h ambe4800x3600.c cmake_uninstall.cmake.in COPYRIGHT imbe7100x4400.c mbelib.c mbelib_const.h
ambe3600x2450.c ambe4800x3600_const.h CMakeLists.txt ecc.c imbe7200x4400.c mbelib.h README.md
I’m not very good with Cmake so we will use the Cmake gui to build this by typing...
cmake-gui.exe
Hot tip: the tab button can be your friend. If you start typing cma
then press tab it will either complete what you wanted to type or will give you suggestions.
This is where you need to fill in where is the source code
and where to build the binaries
the following figure shows my location but you will need to change that depending on where you have installed MSYS2 and what your username is...
Click on tools -> configure . At this point it may ask you to create the build directory if you have not done so. If it does then say yes. It will then ask you what compilers to use. I have a strange set up with all sorts of things on it so I always select specify native compilers
and MinGW Makefiles
...
It then asked me to specify where they are. For me they are in E:/msys64/mingw64/bin/. The C compiler should be called gcc, the C++ compiler should be called g++ and I’m not sure about the Fortran compiler but it’s needed for me for Armadillo and CBLAS, I suspect you won’t need to use it but I’m not sure...
This is where I get my first error...
And it says “For MinGW make to work correctly sh.exe must NOT be in your path.” This is because we have run the cmake gui from msys and not dos. Msys creates its own path that we can see by typing...
$ echo $PATH
/mingw64/bin:/usr/local/bin:/usr/bin:/bin:/c/Windows/System32:/c/Windows:/c/Windows/System32/Wbem:/c/Windows/System32/WindowsPowerShell/v1.0/:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl:/mingw32/bin
And we see...
$ whereis sh.exe
sh: /usr/bin/sh.exe /usr/share/man/man1/sh.1.gz
So indeed sh.exe is in our path. Usually what I do is I just run the program from DOS and that fixes my problem. However this time I’ll try something different and change the CMAKE_SH
name value to CMAKE_SH-NOTFOUND
. This means modifying the following...
To read this...
Then I click configure...
Now I noticed build shared libraries has not been ticked. We need to build the shared libraries so I tick BUILD_SHARED_LIBS
...
Now I press generate...
Then I close the CMake GUI to go back to the console...
Then it’s into the build directory...
cd build
I’m never quite sure of the make command because Windows seems to have some make command as well but this time I’ll type...
mingw32-make.exe
Well, for me that worked enough to build the libraries. However it did then try to build something called gmock
which it failed to do so during linking but I’m not interested in building that...
The main thing is we have both the shared and static libraries of the modified libmbe (libmbe.a libmbe.dll and libmbe.dll.a). We will only be using the shared ones. We could install this into the system but instead will just leave them there and move on to qt side of things.
Type...
cd ../../libaeroambe/
That moves us to the directory with the qt project it in.
Now type the following one at a time...
qmake "CONFIG+=release"
make
That should finish the build. The DLLs can be seen with...
ls release/
I’ll now install JAERO. I’ll do this using the command line but you probably have already done it or want to do it using the usual Windows method.
cd release
wget https://github.com/jontio/JAERO/releases/download/v1.0.4.8/JAERO-x64-setup.zip
pacman -S unzip
unzip JAERO-x64-setup.zip
./JAERO-x64-setup.exe
Do the GUI part of the install.
Close that and now I am going to copy over the DLLs into the application directory. Again you might want to do this using Windows management but I’ll just use the command line...
cp *.dll /c/Program\ Files/JAERO/
cp ../../mbelib-master/build/*.dll /c/Program\ Files/JAERO/
And everything should be installed. I’ll now check to make sure JAERO can load the DLLs...
/c/Program\ Files/JAERO/JAERO.exe
And lo and behold this time when starting it doesn’t mention that it can’t find or load the libraries...
So now I’ll go back to seeing if I can get my stupid laptop to work. I am almost at the point of deciding a hammer is the most appropriate tool for it. I wanted to create a dual boot system but there are no Linux desktop environments that I like anymore (the last one I liked was KDE4 such as on the Mandriva 2010), there are so many bells and whistles now but not any usability. I really don’t want transparent windows that wobble and half a dozen taskbars where everything is a nondescript icon and there is no text. Yup everything’s fancy but usability and control has gone. The scrollbars are ridiculously thin, everything else is too small, sometimes affirmative is on the left sometimes it’s on the right and usually there’s no way to tell the operating system what side you would prefer. If you do end up designing a desktop think about usability and people who don’t have a gigantic screen, don’t have good vision, or have shaky hands. Anyway, grumble grumble grumble.
Jonti 8/Nov/2018