嵌入式 Linux 上基于 makefile 的编译,执行编译出现如下错误:
error: test/fake_blemgr_test.o: requires unsupported dynamic reloc R_ARM_REL32; recompile with -fPIC
这个问题涉及到生成位置无关代码的机制,在我这里的情况是,对于 -fPIC 选项的使用,需要放置在 -fpie 选项的后面位置,才能生效,就不会再出现上述编译错误。
CFLAGS += -O2 -pie -march=armv7-a -mfpu=neon -mfloat-abi=hard \
-fpie -fPIC --sysroot=$(AG550QCN_PATH)/../sysroots \
$(DEFINES) $(INCLUDE)
修改 makefile 后,可能需要 make clean 再 make 一次才能成功。