首先,gmp库在交叉编译工具里有,不用再交叉编译gpm库文件了。
使用gpm库,写一个测试程序t.c,包含gpm头文件#include <gpm.h>,因为一般交叉工具链没有安装在系统路径里面,所有需要使用-I和-L以及-l参数,-L指定新增的自定义库的路径,-l指定库名。命令如:
arm-linux-gcc -L/usr/local/arm_linux/usr/lib -lgmp -I/usr/local/arm_linux/usr/include t.c
但是这样编译会得到错误返回:
/usr/local/arm_linux/usr/lib/libgmp.so: file not recognized: File format not recognized
collect2: error: ld returned 1 exit status
怀疑是arm-linux-gcc使用的ld命令不是arm-linux-ld。于是写了个Makefile,用make编译通过。Makefile形如:
LDFLAGS = -L/usr/local/arm_linux/usr/lib -lgmp
IFLAGS = -I/usr/local/arm_linux/usr/include
CC = $(CROSS_PREFIX)gcc
a.out:t.o
$(CC) -o a.out t.o $(LDFLAGS)
t.o:t.c
$(CC) -c t.c $(IFLAGS)
clean:
rm *.o a.out