HuaWeiAtlas200DK交叉编译踩坑记录
⽂章⽬录
HuaWei Atlas200 DK交叉编译踩坑记录
由于需要⽤到OpenCV以及CV的⼀个特征提取的库,并且MindStudio没有代码提⽰,没有函数、变量跳转,所以想要换个编辑器,这就需要改为命令⾏构建。华为Atlas 200DK demo项⽬的命令⾏构建⽅式可以参考。
⾸先,交叉编译⼯具使⽤aarch64-linux-gnu-gcc v5,OpenCV v3.4.2, vl-feat v0.9.20
OpenCV在交叉编译之前,需要先交叉编译好⼀些依赖库,包括 zlib, jpegsrc,libpng,yasm,x264-snapshot,xvidcore,ffmpeg。这些依赖库的CMAKE编译选项可以参考这篇⽂章。
需要注意的是ffmpeg 如果编译出错,可以尝试使⽤旧⼀点的版本,我使⽤的是 v2.7.7。
最后⼀个步骤OpenCV的编译很容易出错,尝试了很多CMAKE的选项的设置,最终使⽤OpenCV v3.4.2交叉编译成功的CMAKE命令如下:
cmake -DWITH_V4L=ON -DWITH_1394=ON -DWITH_LIBV4L=ON -DINSTALL_C_EXAMPLES=OFF -DWITH_GTK=ON --enable-shared --disable-static -DCMAKE_MAKE_PROGRAM=make -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=/usr/local/arm64 -DWITH_OPENGL=OFF -DWITH _GDAL=OFF -DWITH_XINE=ON -DBUILD_EXAMPLES=OFF -DBUILD_PERF_TESTS=OFF -DBUILD_TESTS=OFF -DBUILD_DOCS=OFF -DWITH_FFM PEG=ON -DENABLE_NEON=OFF -DBUILD_opencv_cudalegacy=OFF -DBUILD_opencv_cudafilters=OFF -DBUILD_opencv_cudastereo=OFF -DBUILD_o pencv_cudafeatures2d=OFF -DCMAKE_TOOLCHAIN_FILE=../ake -DFFMPEG_LIBRARY_DIRS="/usr/local/arm64/lib"..
相关的路径需要改成⾃⼰的,其中ake⽂件内容如下:
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR arm64)
set(CMAKE_C_COMPILER aarch64-linux-gnu-gcc)
set(CMAKE_CXX_COMPILER aarch64-linux-gnu-g++)
set(CMAKE_FIND_ROOT_PATH "/usr/local/arm64")
gnu编译器set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
其中CMAKE_FIND_ROOT_PATH是之前那些依赖库的⽬标路径,该路径下有include, lib等⽂件夹。
为了让交叉编译器能够搜索到这些头⽂件和库⽂件,需要将这些交叉编译好的库复制到交叉编译器的默认路径中。对于aarch64-linux-
gnu-gcc v5交叉编译器来说,其默认的链接库路径为 /usr/lib/gcc-cross/aarch64-linux-gnu/5/,默认头⽂件路径为/usr/lib/gcc-cross/aarch64-linux-gnu/5/include。当然,默认的路径还有其他的⼏个。查看编译器的默认头⽂件与链接库搜索路径使⽤命令:
echo'main(){}'| aarch64-linux-gnu-gcc -v -E -
输出如下图所⽰
对于vlfeat 库的交叉编译,从vlfeat源码的Makefile⾥⾯没看到ARCH 是arm64的,不过发现是有ubuntu arm 的的。不过安装好后,动态链接库libvl.so是不在交叉编译器的默认路径上的,需要放到该默认路径上,并且还需要创建⼀个软链接 名称为libvl.so,因为安装了deb 的动态链接库的名称为libvl.so.0.9.20,如果直接复制过去,make的时候 -lvl同样会出错。这样创建⼀个名称为libvl.so的软链接指向libvl.so.0.9.20编译器就能到了。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论