[smartmontools-support] Compiling smartctl on Windows
    Christian Franke 
    Christian.Franke at t-online.de
       
    Fri Apr 22 13:45:08 CEST 2022
    
    
  
Eaton Zveare wrote:
> Hi, after spending some time getting smartctl compilable on my Windows 
> 11 machine, I have run into problems and must ask for some assistance 
> in getting a proper build environment set up.
Which compatibility problems did you find under Win11 ?
>
> I have read the "Guidelines for Windows" section in the INSTALL file. 
> I installed MSYS2, did their 2-step package update commands, and 
> installed mingw-w64-x86_64-toolchain. In other words, everything under 
> the Installation section here: https://www.msys2.org/
>
> I then installed these additional packages via this command: /pacman 
> -S make autoconf autogen automake/
If you plan to use Linux-like tools more often, I would recommend to use 
Cygwin.
> /
> /
> I then copied the latest smartmontools source (the SVN copy) to here: 
> /C:\msys64\home\Eaton/
> Start the "MSYS2 MinGW x64" shell and run these commands:
>
>  1. /./autogen.sh/
>  2. /./configure/
>  3. /make/
>
> That gets me a smartctl.exe, but it's 6.4 MB, more than 6x larger than 
> the official build. I suspect it was compiled in debug mode, but it's 
> not clear how to specify release/production mode.
The configure default is CXXFLAGS='-g -O2', so code is optimized for 
release but debug information is still included.
> This leads to my questions:
>
>  1. How do I compile in release/production mode?
>
This removes the debug info:
strip -s *.exe
x86_64-mingw32-strip -s *.exe
>  1. How do I compile the "smartctl-nc" version of the exe?
>
make smartctl-nc.exe
Both are included in:
make instdir-win32
>  1. I also tried getting this working in Visual Studio, but running
>     the /config-vc14/ (or vc16) command does not work. It says /No
>     rule to make target/.
>
Yes, this info is outdated, sorry. Added to my TODO list.
The make commands for VC16 (VS2019) are now:
make config-vc
make clean-vc
make distclean-vc
make maintainer-clean-vc
Add "vc=15" to switch to VC15 (VS2017).
Note that VC is never used for release and CI 
(https://builds.smartmontools.org/) binaries for Windows. These are 
always cross-compiled using a Docker image with Linux and Mingw-w64.
Thanks,
Christian
    
    
More information about the Smartmontools-support
mailing list