From 3fd7331c1720a2ce6b240b92aa591bc5e8cc03ad Mon Sep 17 00:00:00 2001 From: JayDDee Date: Sat, 15 Jan 2022 13:29:42 -0500 Subject: [PATCH] Updated Compiling from source (markdown) --- Compiling-from-source.md | 53 ++++++++++++++++++++-------------------- 1 file changed, 27 insertions(+), 26 deletions(-) diff --git a/Compiling-from-source.md b/Compiling-from-source.md index d33d945..b04462e 100644 --- a/Compiling-from-source.md +++ b/Compiling-from-source.md @@ -86,7 +86,8 @@ N is the number of threads for the compiler to use. Windows compilation using Visual Studio is not supported. Mingw64 is used on a Linux system (bare metal or virtual machine) to cross-compile cpuminer-opt binaries package for Windows. That procedure follows this simpler one. Minimal knowledge of the Unix file -system and bash shell are required. +system and bash shell are required. Some steps in common with building for Linux may not be +explained in the same detail here, refer to the Linux procedure for more details details. ## Building for Windows, the easy way @@ -165,7 +166,7 @@ Refer to Linux compile instructions and install required packages. Additionally, install mingw-w64. -`sudo apt-get install mingw-w64 libz-mingw-w64-dev` +`$ sudo apt-get install mingw-w64 libz-mingw-w64-dev` #### Create a local library @@ -202,23 +203,23 @@ CPU threads you want to use. openssl: -`./Configure mingw64 shared --cross-compile-prefix=x86_64-w64-mingw32-` +`$ ./Configure mingw64 shared --cross-compile-prefix=x86_64-w64-mingw32-` -`make` +`$ make` Make may fail with an ld error, just ensure libcrypto-1_1-x64.dll is created. curl: -`./configure --with-winssl --with-winidn --host=x86_64-w64-mingw32` +`$ ./configure --with-winssl --with-winidn --host=x86_64-w64-mingw32` -`make` +`$ make` gmp: -`./configure --host=x86_64-w64-mingw32` +`$ ./configure --host=x86_64-w64-mingw32` -`make` +`$ make` #### Tweak the environment. @@ -228,15 +229,15 @@ This step is required everytime you login or the commands can be added to Define some local variables to point to local library. -`export LOCAL_LIB="$HOME/usr/lib"` +`$ export LOCAL_LIB="$HOME/usr/lib"` -`export LDFLAGS="-L$LOCAL_LIB/curl/lib/.libs -L$LOCAL_LIB/gmp/.libs -L$LOCAL_LIB/openssl"` +`$ 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"` +`$ export CONFIGURE_ARGS="--with-curl=$LOCAL_LIB/curl --with-crypto=$LOCAL_LIB/openssl --host=x86_64-w64-mingw32"` Adjust for gcc version: -`export GCC_MINGW_LIB="/usr/lib/gcc/x86_64-w64-mingw32/9.3-win32"` +`$ export GCC_MINGW_LIB="/usr/lib/gcc/x86_64-w64-mingw32/9.3-win32"` Create a release directory and copy some dll files previously built. @@ -244,19 +245,19 @@ This can be done outside of cpuminer-opt and only needs to be done once. If the release directory is in cpuminer-opt directory it needs to be recreated every time a source package is decompressed. -`mkdir release` +`$ mkdir release` -`cp /usr/x86_64-w64-mingw32/lib/zlib1.dll release/` +`$ cp /usr/x86_64-w64-mingw32/lib/zlib1.dll release/` -`cp /usr/x86_64-w64-mingw32/lib/libwinpthread-1.dll release/` +`$ cp /usr/x86_64-w64-mingw32/lib/libwinpthread-1.dll release/` -`cp $GCC_MINGW_LIB/libstdc++-6.dll release/` +`$ cp $GCC_MINGW_LIB/libstdc++-6.dll release/` -`cp $GCC_MINGW_LIB/libgcc_s_seh-1.dll release/` +`$ cp $GCC_MINGW_LIB/libgcc_s_seh-1.dll release/` -`cp $LOCAL_LIB/openssl/libcrypto-1_1-x64.dll release/` +`$ cp $LOCAL_LIB/openssl/libcrypto-1_1-x64.dll release/` -`cp $LOCAL_LIB/curl/lib/.libs/libcurl-4.dll release/` +`$ cp $LOCAL_LIB/curl/lib/.libs/libcurl-4.dll release/` #### Download cpuminer-opt @@ -276,24 +277,24 @@ Decompress and change to the cpuminer-opt directory. Create a link to the locally compiled version of gmp.h -`ln -s $LOCAL_LIB/gmp-version/gmp.h ./gmp.h` +`$ ln -s $LOCAL_LIB/gmp-version/gmp.h ./gmp.h` -`./autogen.sh` +`$ ./autogen.sh` Configure the compiler for the CPU architecture of the host machine: -`CFLAGS="-O3 -march=native -Wall" ./configure $CONFIGURE_ARGS` +`$ CFLAGS="-O3 -march=native -Wall" ./configure $CONFIGURE_ARGS` or cross compile for a specific CPU architecture: -`CFLAGS="-O3 -march=znver1 -Wall" ./configure $CONFIGURE_ARGS` +`$ CFLAGS="-O3 -march=znver1 -Wall" ./configure $CONFIGURE_ARGS` 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 $CONFIGURE_ARGS` +`$ CFLAGS="-O3 -maes -msse4.2 -Wall" ./configure $CONFIGURE_ARGS` This will compile for an older CPU that does not have AVX. @@ -306,7 +307,7 @@ can enable the CPU Groups feature by adding the following to CFLAGS: Once you have run configure successfully run the compiler with n CPU threads: -`make -j n` +`$ 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. @@ -316,7 +317,7 @@ Run cpuminer In a command windows change directories to the unzipped release folder. to get a list of all options: -cpuminer.exe --help +$ cpuminer.exe --help Command options are specific to where you mine. Refer to the pool's instructions on how to set them.