爬坑之旅 --编译smartmontool

最近要做一个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环境,包括基本的bashmake等等。与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

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: aarch64-linux-gnu交叉编译是指在x86或其他架构的电脑上,通过交叉工具链,将代码编译为适用于ARM64架构的可执行文件。在开发ARM64架构的应用程序时,我们可以通过交叉编译工具链,将开发环境迁移到x86或其他架构的电脑上,使得开发变得更加便捷。 aarch64-linux-gnu交叉编译的过程一般包括以下步骤: 1. 安装交叉编译工具链:可以通过下载对应的工具链来安装,例如使用apt-get install gcc-aarch64-linux-gnu (Ubuntu系统) 或yum install gcc-aarch64-linux-gnu (CentOS系统)来安装。 2. 编写应用程序源代码:开发人员根据需求编写应用程序源代码。 3. 使用交叉编译工具链编译可执行文件:在Linux终端下,输入交叉编译工具链的路径与对应的编译选项,对应的可执行文件就会生成。 4. 上传可执行文件到ARM64服务器:最后,将编译好的可执行文件上传到ARM64服务器上即可完成部署。 通过aarch64-linux-gnu交叉编译,可以为ARM64架构的应用开发提供更为方便和高效的开发环境。同时,通过与开源社区的交流与合作,可以不断地改进和完善交叉编译工具链。 ### 回答2: Aarch64-linux-gnu交叉编译是将一组程序代码从一种CPU及操作系统架构编译成另一种CPU及操作系统架构的过程。在这种情况下,原始代码是针对ARM 64位体系结构和Linux操作系统编写的,但是需要将其编译成可以在不同体系结构和操作系统下运行的代码。 这种编译称为交叉编译,目的是让程序能够在ARM架构的设备上运行。 Aarch64-linux-gnu交叉编译通常用于在PC上为ARM架构的设备编写软件。它的目的是为开发者提供在开发环境中使用强大的桌面工具来编程,而不需要在设备上进行编程。这使得程序编写和测试更加高效。此外,交叉编译还允许在使用不同操作系统(如Mac或Windows)的计算机上开发应用程序,这样就可以在处理器体系结构不同或使用不同的操作系统的多个设备上运行相同的程序。 Aarch64-linux-gnu交叉编译需要建立交叉编译环境,即要在一个主机上安装交叉编译器,可以使用gcc工具链,同时还需要安装一些与目标体系结构有关的库和头文件。这些库和头文件通常是在目标体系结构的官方开发工具包中提供的。 进行Aarch64-linux-gnu交叉编译的本质是让开发人员能够在不同环境之间快速迁移代码和数据,满足快速开发和部署的需求。它为开发人员带来更多的便利,让他们不再局限于一个特定的平台,同时也能够加速代码开发过程,从而使开发者可以更快地发布产品和服务。 ### 回答3: aarch64-linux-gnu是指基于Aarch64架构的Linux系统,而交叉编译则是指在一台机器上编译出另一种不同架构的可执行程序。 在进行aarch64-linux-gnu交叉编译时,需要首先安装对应的交叉编译工具链,这个工具链应该包含对ARM Aarch64架构的交叉编译器、库文件等。具体安装方法可以参照相应的文档或者使用包管理器安装。 安装好交叉编译工具链之后,就可以开始编写代码并进行交叉编译了。在编写代码时,需要注意一些与不同架构相关的问题。例如,需要注意对齐方式、字节序等问题。同时,也需要在Makefile或者其他编译脚本中指定交叉编译器的路径,并设置好编译选项。 最后,进行交叉编译时需要选择要编译的目标架构并指定交叉编译器以及库文件的位置。编译完成后,可以将生成的可执行程序拷贝到目标机器上进行运行。 总之,aarch64-linux-gnu交叉编译需要准备好对应的工具链,注意编写代码时与不同架构相关的问题,设置好编译选项和路径,最后进行交叉编译并将生成的可执行文件拷贝到目标机器上即可。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值