最近要做一个SMART信息获取的代码,尝试了很多种办法,通过cmd/PowerShell,使用WMI的WindowsAPI,使用DeviceIOControl,上述的方法获取机械硬盘的SMART信息都是没问题的。但是尼玛固态硬盘的SMART信息真的是获取不到啊,啊!啊!啊!啊!但是smartmontool和CrystalDiskInfo都可以获取到,救救孩子吧。

没办法只能拉下来smartmontool和CrystalDiskInfo的源码自己扒实现原理,说实话这个代码真的的好多,问题是,代码多就算了,这俩工程还编译不了!

那么问题来了为啥一个不能找到“Graph.html”一个缺少config.h呢?第一个问题“Graph.html”我一直都没找到原因,希望有知道怎么解决的好心人告诉我下,第二个我找到了方法,也就是这篇博客的主要内容了,怎么编译smartmontool。

引用大佬的解释:

MinGW,是Minimalist GNUfor Windows的缩写。它是一个可自由使用和自由发布的Windows特定头文件和使用GNU工具集导入库的集合,允许你在GNU/

Linux

和Windows平台生成本地的Windows程序而不需要第三方C运行时(C Runtime)库。MinGW 是一组包含文件和端口库,其功能是允许控制台模式的程序使用微软的标准C运行时(C Runtime)库(MSVCRT.DLL),该库在所有的 NT OS 上有效,在所有的 Windows 95发行版以上的 Windows OS 有效,使用基本运行时,你可以使用 GCC 写控制台模式的符合美国标准化组织(ANSI)程序,可以使用微软提供的 C 运行时(C Runtime)扩展,与基本运行时相结合,就可以有充分的权利既使用 CRT(C Runtime)又使用 WindowsAPI功能。

  MinGW主要由GNU binary utilities、GCC和GDB组成。同时还包括一些必要的库,例如libc(C Runtime),及专门用于Win32环境的API接口库。

  MSYS,Minimal GNU(POSIX)system on Windows,是一个小型的GNU环境,包括基本的bash,make等等。与Cygwin大致相当。

  从上面可以看出:

  MinGW是包含gcc编译器和一些C运行库的,可以手动来编译源文件。但是没有MSYS的话是不能实现自动编译的,就需要结合make和bash了。而一般的开源库基本是采用make编译系统来编译工程的,所以需要MinGW和MSYS的结合了。

========================废话到此结束=============================

1、首先需要下载一个MinGW和MSYS,我的电脑上有MinGW我就没管(验证有没有gcc的方法就是CMD 下输入gcc -v 有就会自动显示GCC版本了)。MinGW很多百度就能找到,至于MSYS就要自己下载了。MSYS就是windows下的unix环境

https://sourceforge.net/projects/mingwbuilds/files/external-binary-packages/

这里要注意不要下载exe,重要的事情说三遍!不要下载exe!不要下载exe!不要下载exe!

下载完成后将整个msys复制到MinGW下面

2、做好这些准备工作就可以继续编译smartmontools的工程了,打开msys.bat并进入到smartmontools的工程中。

(1)执行autogen.sh,然后创建文件夹mkdir vctmp && cd vctmp(这是两条指令)

(2)执行../configure,执行完了就这样了。

(3)make config-vc 创建Windows需要的三个文件(config.h,smart*.rc,svnversion.h )

注意这个一开始我输入的是make config-vc10 就一直都显示找不到编译的指令,后来在makefile中找到了的答案,就是下面的图片的内容。至此就完成了vs下编译smartmontools的所有准备工作。

最后进入os_win32文件夹,用visual studio打开solution文件(*.sln)。编译整个solution就可以了,对了别忘记使用进程前要传参数。不然就会这样!

最好可以自己操作一遍反正没啥坏处,最后自己不爱操作可以直接下载0积分,直接下载就可以啦。

https://download.csdn.net/download/qq_39495901/87368295

三天一小坑,五天一大坑,坑坑不重样,写代码真好玩,哈哈哈哈哈,噶!

好文链接

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。