嵌入式系统的sata盘经常故障,需要使用smatctl工具监控和诊断sata故障。
-
从网上下载开源smartmontools-5.43包。
-
修改makefile进行交叉编译。
由于软件包中已经包含Makefile.am,Makefile.in。直接运行
automake --add-missing
生成Makefile。
- 修改Makefile中交叉编译工具
COMPILEPRE=/usr/local/arm/4.4.3/bin
#CC = gcc
#CCAS = gcc
CC = ${COMPILEPRE}/arm-linux-gcc-4.4.3
CCAS = ${COMPILEPRE}/arm-linux-gcc-4.4.3
CCASDEPMODE = depmode=gcc3
CCASFLAGS = -g -O2
CCDEPMODE = depmode=gcc3
CFLAGS = -g -O2
CPPFLAGS =
CXX = ${COMPILEPRE}/arm-linux-g++
CXXCPP = ${COMPILEPRE}/arm-linux-g++ -E
#CXX = g++
#CXXCPP = g++ -E
- make 生成
报错:
/home/grape/s3c2440/tools/smartmontools-5.43/dev_interface.cpp:271: undefined reference to `clock_gettime'
查询发现少了librt 实时库。
- 在交叉编译库中查找
find / -name '*librt*'
/usr/local/arm/4.4.3/arm-none-linux-gnueabi/sys-root/usr/lib/librt.so
- 在Makefile添加
LIBS = /usr/local/arm/4.4.3/arm-none-linux-gnueabi/sys-root/usr/lib/librt.so
- 重新make 成功,编译成功。并查看生成的smartctl。
file smartctl
smartctl: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.3, for GNU/Linux 2.6.32, not stripped
- 上载smartctl到开发版,查询stata:
./smartctl -h
smartctl 5.43 2012-06-30 r3573 [armv4tl-linux-4.15.0] (local build)
Copyright (C) 2002-12 by Bruce Allen, http://smartmontools.sourceforge.net
Usage: smartctl [options] device
============================================ SHOW INFORMATION OPTIONS =====
-h, --help, --usage
Display this help and exit
-V, --version, --copyright, --license
Print license, copyright, and version information and exit