这几天把识别算法从ubuntu x86平台移植到arm平台,运行代码出现logoutput.o:Relocations in generic ELF (EM: 62),原因是由于库的不匹配导致的,,然后检查代码调用了opencv库和相机库,,在pro中注释对这两个库的调用,错误依旧;
随后切换到库目录下,对so 文件使用file 命令查看,运用命令file +库名,查看库所支持的架构:
查询得知opencv库和相机库都是支持arm架构,然后定位到错误原因,logoutput.o:Relocations in generic ELF (EM: 62),发现是logoutput.o库的原因,file logoutput.o,发现是支持x86-64架构,然后在pro中注释掉logoutput.h和logoutput.cpp的调用,出现其他库的错误generate6Point.o,同样file generate6Point.o:
所以这些库都是在x86-64下生成的,直接拷贝过来不适用于arm架构,要在arm架构下重新生成,所以将文件夹下的*.o文件全部删除,然后重新生成;
然后需要修改Makefile的编译路径,打开Makefile文件可以看到:
可以看到Command:后的qmake路径是在/usr/lib/qt5/bin/qmake下的,这是之前x86-64的qmake路径,需要换成目前arm平台下的qmake路径,首先查找qmake路径,通过以下命令:
然后通过vim或者gedit打开Makefile,将Command:后的qmake路径替换为/usr/bin/qmake,重新编译即可通过。