Permalink
Cannot retrieve contributors at this time
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
isotopec-cpuminer/INSTALL_WINDOWS
Go to fileThis commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
173 lines (101 sloc)
4.89 KB
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Instructions for compiling isotopec-cpuminer for Windows. | |
Windows compilation using Visual Studio is not supported. Mingw64 is | |
used on a Linux system (bare metal or virtual machine) to cross-compile | |
isotopec-cpuminer executable binaries for Windows. | |
These instructions were written for Debian and Ubuntu compatible distributions | |
but should work on other major distributions as well. However some of the | |
package names or file paths may be different. | |
It is assumed a Linux system is already available and running. And the user | |
has enough Linux knowledge to find and install packages and follow these | |
instructions. | |
First it is a good idea to create new user specifically for cross compiling. | |
It keeps all mingw stuff contained and isolated from the rest of the system. | |
Step by step... | |
1. Install necessary packages from the distribution's repositories. | |
Refer to Linux compile instructions and install required packages. | |
Additionally, install mingw-64. | |
sudo apt-get install mingw-w64 | |
2. Create a local library directory for packages to be compiled in the next | |
step. Recommended location is $HOME/usr/lib/ | |
3. Download and build other packages for mingw that don't have a mingw64 | |
version available in the repositories. | |
Download the following source code packages from their respective and | |
respected download locations, copy them to ~/usr/lib/ and uncompress them. | |
openssl | |
curl | |
gmp | |
In most cases the latest vesrion is ok but it's safest to download | |
the same major and minor version as included in your distribution. | |
Run the following commands or follow the supplied instructions. | |
Do not run "make install" unless you are using ~/usr/lib, which isn't | |
recommended. | |
Some instructions insist on running "make check". If make check fails | |
it may still work, YMMV. | |
You can speed up "make" by using all CPU cores available with "-j n" where | |
n is the number of CPU threads you want to use. | |
openssl: | |
./Configure mingw64 shared --cross-compile-prefix=x86_64-w64-mingw32 | |
make | |
curl: | |
./configure --with-winssl --with-winidn --host=x86_64-w64-mingw32 | |
make | |
gmp: | |
./configure --host=x86_64-w64-mingw32 | |
make | |
4. Tweak the environment. | |
This step is required everytime you login or the commands can be added to | |
.bashrc. | |
Define some local variables to point to local library. | |
export LOCAL_LIB="$HOME/usr/lib" | |
export LDFLAGS="-L$LOCAL_LIB/curl/lib/.libs -L$LOCAL_LIB/gmp/.libs -L$LOCAL_LIB/openssl" | |
export CONFIGURE_ARGS="--with-curl=$LOCAL_LIB/curl --with-crypto=$LOCAL_LIB/openssl --host=x86_64-w64-mingw32" | |
Create a release directory and copy some dll files previously built. | |
This can be done outside of isotopec-cpuminer and only needs to be done once. | |
If the release directory is in cpuminer-opt directory it needs to be | |
recreated every a source package is decompressed. | |
mkdir release | |
cp /usr/x86_64-w64-mingw32/lib/zlib1.dll release/ | |
cp /usr/x86_64-w64-mingw32/lib/libwinpthread-1.dll release/ | |
cp /usr/lib/gcc/x86_64-w64-mingw32/7.3-win32/libstdc++-6.dll release/ | |
cp /usr/lib/gcc/x86_64-w64-mingw32/7.3-win32/libgcc_s_seh-1.dll release/ | |
cp $LOCAL_LIB/openssl/libcrypto-1_1-x64.dll release/ | |
cp $LOCAL_LIB/curl/lib/.libs/libcurl-4.dll release/ | |
The following steps need to be done every time a new source package is | |
opened. | |
5. Download isotopec-cpuminer | |
Download the latest source code package of isotopec-cpuminer to your desired | |
location. .zip or .tar.gz, your choice. | |
https://github.com/isotopec-org/isotopec-cpuminer/releases | |
Decompress and change to the isotopec-cpuminer directory. | |
6. Prepare to compile | |
Create a link to the locally compiled version of gmp.h | |
ln -s $LOCAL_LIB/gmp-version/gmp.h ./gmp.h | |
Edit configure.ac to fix lipthread package name. | |
sed -i 's/"-lpthread"/"-lpthreadGC2"/g' configure.ac | |
7. Compile | |
you can use the default compile if you intend to use isotopec-cpuminer on the | |
same CPU and the virtual machine supports that architecture. | |
./build.sh | |
Otherwise you can compile manually while setting options in CFLAGS. | |
Some common options: | |
To compile for a specific CPU architecture: | |
CFLAGS="-O3 -march=znver1 -Wall" ./configure --with-curl | |
This will compile for AMD Ryzen. | |
You can compile more generically for a set of specific CPU features | |
if you know what features you want: | |
CFLAGS="-O3 -maes -msse4.2 -Wall" ./configure --with-curl | |
This will compile for an older CPU that does not have AVX. | |
You can find several examples in build-allarch.sh | |
If you have a CPU with more than 64 threads and Windows 7 or higher you | |
can enable the CPU Groups feature: | |
-D_WIN32_WINNT==0x0601 | |
Once you have run configure successfully run make with n CPU threads: | |
make -j n | |
Copy cpuminer.exe to the release directory, compress and copy the release | |
directory to a Windows system and run cpuminer.exe from the command line. | |
Run cpuminer | |
In a command windows change directories to the unzipped release folder. | |
to get a list of all options: | |
cpuminer.exe --help | |
Command options are specific to where you mine. Refer to the pool's | |
instructions on how to set them. |