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交叉编译:
- ./configure --host=arm-linux
- make
strace-4.9交叉编译:
- ./configure --host=arm-linux
- make
mdadm-4.1交叉编译:
- 修改Makefile,增加CC赋值为需要的编译工具链
- make