天天看点

arm嵌入式设备工具移植指南

fio移植编译方法:

$make clean

$make CROSS_COMPILE=/path/to/toolchain/prefix

例如:

make CROSS_COMPILE=工具链目录公有头

make CROSS_COMPILE=/xxx/xxx/xxx/arm-linux/target/bin/arm-linux-

备注:

若出现 对‘posix_madvise’未定义的引用 的错误,可以修改该函数为madvise

iozone移植编译方法:

方法1:阉割掉iozone对aio的支持 

修改src/current下的makefile的cc和GCC为当前交叉编译工具链,将所有"linux-arm"目标中的“-DASYNC_IO”删掉,并且,将所有"linux-arm"目标中的生成xxxasynxxx.o的命令删掉

make clean

make linux-arm

成功生成iozone

方法2:添加对aio库的支持 备注:未成功

因为在aio.h中,还包含了很多其他文件,而这些文件又是uclibc中所没有的,所以单纯找到aio.h和aio.c然后编译进来是不可以的。方法如下:   

  • 把其他包含aio.h的libc/usr库(包含include、lib等)
  • 修改makefile:
    • CC  = arm-linux-gcc
    • GCC = arm-linux-gcc
    • CFLAGS  = -Wall -static
    • CFLAGS  = -L /xxxx/lib
  •  make clean
  •  make linux-arm
  •  成功生成iozone 

注意:

本处不能指定-I目录为/xxxx/include,如果指定了,会报错:iozone_linux-arm.o:在函数‘begin’中:iozone.c:(.text 0xda0):对‘__xstat64’未定义的引用

smartmontools交叉编译:

  1. ./configure --host=arm-linux
  2. make

strace-4.9交叉编译:

  1. ./configure --host=arm-linux  
  2. make

mdadm-4.1交叉编译:

  1. 修改Makefile,增加CC赋值为需要的编译工具链
  2. make