Skip to content

Instantly share code, notes, and snippets.

@ngleb
Last active November 2, 2021 02:41
Show Gist options
  • Star 5 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ngleb/944346a67960776371aab74149edf38c to your computer and use it in GitHub Desktop.
Save ngleb/944346a67960776371aab74149edf38c to your computer and use it in GitHub Desktop.
How to build ledger under Windows using MSYS2/MinGW

Install MSYS2

Manual is on the home page http://www.msys2.org/

Run MINGW32 (32 bit environment) and update it

pacman --needed -Syu

Install dependencies

Update everything, install toolchain and dependencies (probably something is missing):

pacman --needed -S base-devel git \
                   mingw-w64-i686-toolchain \
                   mingw-w64-i686-cmake \
                   mingw-w64-i686-boost \
                   mingw-w64-i686-mpfr

Clone ledger tree

Git clone ledger tree (master branch):

git clone https://github.com/ledger/ledger.git ledger

Build ledger

cd ledger
cmake -G 'MSYS Makefiles'
make

If everything went well, ledger.exe will appear in the same dir. It can be checked by running it:

./ledger

Copy ledger

Now ledger and its dependencies can be copied to somewhere for using it outside of MSYS2 environment, for example, /c/ledger. ledger then can be used as a normal Windows application, from CMD or from GNU Emacs with ledger-mode (path expantion will work properly). In this case it's useful to add C:\ledger to PATH environment variable.

mkdir /c/ledger
cp ./ledger.exe /c/ledger
cp ./libledger.dll /c/ledger
cp /mingw32/bin/libboost_filesystem-mt.dll /c/ledger
cp /mingw32/bin/libboost_regex-mt.dll /c/ledger
cp /mingw32/bin/libboost_system-mt.dll /c/ledger
cp /mingw32/bin/libgcc_s_dw2-1.dll /c/ledger
cp /mingw32/bin/libgmp-10.dll /c/ledger
cp /mingw32/bin/libicudt64.dll /c/ledger
cp /mingw32/bin/libicuuc64.dll /c/ledger
cp /mingw32/bin/libstdc++-6.dll /c/ledger
cp /mingw32/bin/libwinpthread-1.dll /c/ledger

Some packages may be updated at some point, so the name of files might change as well (e.g. icu libs will have 59 instead of 58).

@LewWadoo
Copy link

There is no 'MSYS Makefiles' generator on my platform MSYS2 on Windows 10:

What shell do you start on Windows (msys or mingw)?

C:\msys64\msys2_shell.cmd -msys

As I have mentioned earlier, MSYS shell will not work for this guide. You need to use MinGW32 shell which will build native Windows binary of ledger which will work outside of MSYS environment.

I think the correct command in your case would be:
C:\msys64\msys2_shell.cmd -mingw32

Now the issue has gone! Thank you!

@Eason0210
Copy link

Is it possible to build ledger with Mingw64 on Msys2?

@ngleb
Copy link
Author

ngleb commented Feb 1, 2021

Is it possible to build ledger with Mingw64 on Msys2?

I don't think so. I tried it, but it didn't work. Here's my report at ledger/ledger#1905

There's pull request attached to this issue, so it might be fixed soon.

@mundifex
Copy link

mundifex commented Nov 2, 2021

Thank you so much for this! The binaries available at https://github.com/FullofQuarks/Windows-Ledger-Binaries/ were segfaulting for me when sorting balance reports. Built my own binaries according to your instructions and am encountering no errors.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment