1.环境
系统:Ubuntu16.04
交叉编译器:arm-cortexa8-linux-gnueabihf-6.2.1
2.采用cmake-gui配置好后编译出现错误:
/opt/embedded/tools/linaro-toolchains/arm-cortexa8-linux-gnueabihf-6.2.1-2016.11/lib/gcc/arm-cortexa8-linux-gnueabihf/6.2.1/../../../../arm-cortexa8-linux-gnueabihf/bin/ld: ../../3rdparty/lib/libzlib.a(gzlib.c.obj): relocation R_ARM_THM_MOVW_ABS_NC against `a local symbol' can not be used when making a shared object; recompile with -fPIC
../../3rdparty/lib/libzlib.a: error adding symbols: Bad value
3.解决措施
提示是libzlib.a的库的问题,让我们重新编译,并且要加上参数 -fPIC
4.打开/3rdparty/zlib/CMakeLists.txt文件,并修改
if(UNIX)
if(CMAKE_COMPILER_IS_GNUCXX OR CV_ICC)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC")
endif()
endif()
修改为
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC")
5.分析原因
应该是交叉编译的平台没有被cmake识别的原因