linux cpu占用率如何看
371
2022-08-23
Linux aarch64交叉编译之 assimp模型库
对于assimp的交叉编译,目前网上没见到debian版本aarch64版本上搞过的,因此整一篇。该文章的目标是编译一套aarch64 Linux Debian嵌入式版本上可以运行的版本库,接下来就开始趟坑。老套路,先把linux桌面版搞好,然后 移植到嵌入式Linux Debian 板子上。
1 assimp简介
assimp(全称:Open Asset Import Library )用于导入和导出各种 3d 模型格式的库,包括场景后期处理 以及 补充生成缺失的渲染数据(这里的导入是把model文件,解析成ASSIMP自身定义的一套模型,导出即是把自身建立的模型结构导出为model文件)。
那么为啥要搞这么一个东西出来呢?因为对于3D渲染的工作,建模是一件工作量大又麻烦的事情,网上的模型格式很多,如果自己去解析代价太高了。而assimp为模型的导入导出提供了良好的支持。宗旨,这东西可以理解为提升工作效率的高强度辅助工具啦。
项目下载地址:GitHub - assimp/assimp Project
如果想更多了解assimp,可以参考官方文档:The Asset-Importer-Lib Documentation
2 Linux 本地编译 & 交叉编译
2.1 Linux(ubuntu20.04)上assimp的编译
assimp通过cmake文件来配置和编译,流程如下:
$cmake -DCMAKE_INSTALL_PREFIX=$PWD/out CMakeLists.txt $make$make install
编译成功后在out目录下生对应的include和lib,lib内容如下:
├── cmake│ └── assimp-5.2│ ├── assimpConfig.cmake│ ├── assimpConfigVersion.cmake│ ├── assimpTargets.cmake│ └── assimpTargets-noconfig.cmake├── libassimp.so -> libassimp.so.5├── libassimp.so.5 -> libassimp.so.5.2.4├── libassimp.so.5.2.4└── pkgconfig └── assimp.pc
2.2 aarch64交叉编译与移植
因为是用aarch64交叉编译,需要提前配置环境,安装如下软件:
sudo apt install binutils-aarch64-linux-gnu-dbg binutils-aarch64-linux-gnu cpp-aarch64-linux-gnu \g++-10-aarch64-linux-gnu g++-9-aarch64-linux-gnu g++-aarch64-linux-gnu g++ \gcc-10-aarch64-linux-gnu-base gcc-9-aarch64-linux-gnu-base gcc-aarch64-linux-gnu \pkg-config-aarch64-linux-gnu qemu-efi-aarch64 gcc arch-test
调整CMakeLists.txt,在该文件中添加如下内容:
diff --git a/CMakeLists.txt b/CMakeLists.txtindex 2c55fce0a..f2aa3c829 100644--- a/CMakeLists.txt+++ b/CMakeLists.txt@@ -55,7 +55,31 @@ IF(ASSIMP_HUNTER_ENABLED) add_definitions(-DASSIMP_USE_HUNTER) ENDIF()-+#add cross compile start+if("$ENV{MY_TARGET_ARCH}" STREQUAL "aarch64")+ set(CMAKE_C_COMPILER "/usr/bin/aarch64-linux-gnu-gcc")+ set(CMAKE_CXX_COMPILER "/usr/bin/aarch64-linux-gnu-g++")+ + set(CMAKE_SYSTEM_NAME Linux)+ set(CMAKE_SYSTEM_PROCESSOR arm64)++ set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)+ set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)+ set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)+ set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17")+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu17")+endif()+#add cross compile end PROJECT(Assimp VERSION 5.2.4) # All supported options ###############################################
添加该内容后,在主目录下执行:
$export MY_TARGET_ARCH=aarch64
之后和桌面版的编译流程类似,如下所示:
$cmake -DCMAKE_INSTALL_PREFIX=$PWD/out_aarch64 CMakeLists.txt $make$make install
编译后 目录同桌面版。
特殊说明:
这里在编译完桌面版后再编译嵌入式aarch64版本时需要对之前桌面版的中间文件进行删除,但是执行make clean 并不能全部删除,需要手动执行
rm -rf CMakeCache.txt generated CMakeFiles
将所有中间文件删除,这样才可以。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~