当前位置: 首页 > news >正文

益阳建设公司网站麻豆精产三产区区别

益阳建设公司网站,麻豆精产三产区区别,临沂天元建设集团,扬州市建设厅网站目标 在x86_64架构的Ubuntu系统上,纯静态编译aarch64平台的rust-opencv,以方便在嵌入式设备上移植。 基础环境 系统:Ubuntu 24.04,架构:x86_64,可使用WSL,或者Docker,本次使用Doc…

目标

在x86_64架构的Ubuntu系统上,纯静态编译aarch64平台的rust-opencv,以方便在嵌入式设备上移植。

基础环境

系统:Ubuntu 24.04,架构:x86_64,可使用WSL,或者Docker,本次使用Docker。

#拉取基础镜像
docker pull ubuntu:24.04#启动Docker容器
docker run -it --name rust-aarch64 -v .:/build ubuntu:24.04

安装git

apt update
apt install git

安装基础工具

apt install build-essential wget curl llvm libclang-dev

安装并编译交叉编译工具

# 新建个目录存放编交叉编译相关工具
mkdir -p /tools
cd /tools# 下载交叉编译工具
git clone https://github.com/richfelker/musl-cross-make.git
cd musl-cross-make# 写入编译配置
cat > config.mak <<EOF
TARGET = aarch64-linux-musl
OUTPUT = /opt/musl-cross
GCC_VER = 11.5.0
#COMMON_CONFIG += CC="aarch64-linux-musl-gcc -static --static" CXX="aarch64-linux-musl-g++ -static --static"
GCC_CONFIG += --enable-languages=c,c++
BINUTILS_VER = 2.33.1
MUSL_VER = 1.2.5
GCC_CONFIG += --enable-static --enable-libstdcxx-static --enable-threads=posix
EOF# 编译
make -j$(nproc)
# 安装,将会被安装在/opt/musl-cross目录下
make install# 配置环境变量
export PATH=/opt/musl-cross/bin:$PATH

编译OpenCV

# 拉取OpenCV源码
cd /tools
git clone https://github.com/opencv/opencv.git#拉取opencv_contrib源码
git clone https://github.com/opencv/opencv_contrib.gitcd /tools/opencv && mkdir build && cd build# 编译
cmake  .. \
-D CMAKE_SYSTEM_NAME=Linux \
-D CMAKE_SYSTEM_PROCESSOR=aarch64 \
-D CMAKE_BUILD_TYPE=Release \
-D CMAKE_C_COMPILER=aarch64-linux-musl-gcc \
-D CMAKE_CXX_COMPILER=aarch64-linux-musl-g++ \
-D BUILD_SHARED_LIBS=OFF \
-D CMAKE_CXX_FLAGS=-fPIC \
-D CMAKE_C_FLAGS=-fPIC  \
-D CMAKE_EXE_LINKER_FLAGS="-lpthread -ldl"  \
-D ENABLE_PIC=OFF  \
-D WITH_1394=OFF \
-D WITH_ARAVIS=OFF \
-D WITH_ARITH_DEC=ON  \
-D WITH_ARITH_ENC=ON  \
-D WITH_CLP=OFF  \
-D WITH_CUBLAS=OFF \
-D WITH_CUDA=OFF  \
-D WITH_CUFFT=OFF \
-D WITH_FFMPEG=OFF  \
-D WITH_GSTREAMER=ON \
-D WITH_GSTREAMER_0_10=OFF  \
-D WITH_HALIDE=OFF  \
-D WITH_HPX=OFF \
-D WITH_IMGCODEC_HDR=ON \
-D WITH_IMGCODEC_PXM=ON \
-D WITH_IMGCODEC_SUNRASTER=ON \
-D WITH_INF_ENGINE=OFF \
-D WITH_IPP=OFF  \
-D WITH_ITT=OFF \
-D WITH_JASPER=ON \
-D WITH_JPEG=ON  \
-D WITH_LAPACK=ON  \
-D WITH_LIBREALSENSE=OFF  \
-D WITH_NVCUVID=OFF  \
-D WITH_OPENCL=OFF  \
-D WITH_OPENCLAMDBLAS=OFF \
-D WITH_OPENCLAMDFFT=OFF  \
-D WITH_OPENCL_SVM=OFF  \
-D WITH_OPENEXR=OFF  \
-D WITH_OPENGL=OFF \
-D WITH_OPENMP=OFF \
-D WITH_OPENNNI=OFF  \
-D WITH_OPENNNI2=OFF \
-D WITH_OPENVX=OFF  \
-D WITH_PNG=ON \
-D WITH_PROTOBUF=ON \
-D WITH_PTHREADS_PF=ON \
-D WITH_PVAPI=OFF  \
-D WITH_QT=OFF -D WITH_QUIRC=OFF \
-D WITH_TBB=OFF \
-D WITH_TIFF=ON \
-D WITH_VULKAN=OFF  \
-D WITH_WEBP=ON \
-D WITH_XIMEA=OFF  \
-D BUILD_JAVA=OFF \
-D BUILD_opencv_python3=OFF \
-D CMAKE_INSTALL_PREFIX=/opt/opencv \
-D WITH_GTK=OFF  \
-D WITH_EIGEN=OFF \
-D OPENCV_EXTRA_MODULES_PATH="/tools/opencv_contrib/modules" \
-D BUILD_ZLIB=ON  \
-D ZLIB_INCLUDE_DIR="../3rdparty/zlib" \
-D OPENCV_GENERATE_PKGCONFIG=ON \make -j$(nproc)#安装,将会被安装到/opt/opencv
make install

安装Rust

# 安装
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
. "$HOME/.cargo/env"#添加aarch64-unknown-linux-musl工具链
rustup target add aarch64-unknown-linux-musl

创建一个简单的Rust项目

# Cargo.toml
[package]
name = "opencv-cross-demo"
version = "0.1.0"
edition = "2024"[dependencies]
opencv = "0.94.2"
// main.rs
use opencv::imgcodecs::{IMREAD_COLOR, imread};
use opencv::prelude::MatTraitConst;fn main() -> Result<(), Box<dyn std::error::Error>> {// 在项目根目录下添加一张图片let image = imread("image.jpg", IMREAD_COLOR)?;println!("image size: {} x {}", image.cols(), image.rows());Ok(())
}
# config.toml
[target.aarch64-unknown-linux-musl]
linker = "aarch64-linux-musl-ld"
rustflags = ["-L", "/opt/opencv/install/lib","-L", "/opt/opencv/install/lib/opencv4/3rdparty","-L", "/opt/musl-cross/lib/gcc/aarch64-linux-musl/11.5.0","-L", "/opt/musl-cross/aarch64-linux-musl/lib","-C", "link-arg=-static","-C", "link-arg=-llibtiff","-C", "link-arg=-llibwebp","-C", "link-arg=-llibpng","-C", "link-arg=-lzlib","-C", "link-arg=-llibopenjp2","-C", "link-arg=-llibjpeg-turbo","-C", "link-arg=-llibprotobuf","-C", "link-arg=-lstdc++","-C", "link-arg=-lgcc","-C", "link-arg=-lc",
]

Rust编译

cd /build
cargo run--target aarch64-unknown-linux-musl
# 输出:image size: 1280 x 853# 查看文件格式,无动态链接
file target/aarch64-unknown-linux-musl/debug/opencv-cross-demo
# 输出:target/aarch64-unknown-linux-musl/debug/opencv-cross-demo: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), statically linked, with debug_info, not stripped
http://www.dtcms.com/a/467846.html

相关文章:

  • 做网站还是订阅号云南 网站建设网站
  • 旅游网站建设经济评价分类信息网站建设方案
  • 亚运村网站建设免费高清视频素材app哪里找
  • 网站修改了关键词被降权软件开发前端和后端区别
  • 做网站必须在工信部备案吗网站与装修公司
  • 苏州网站建设有限公司都江堰网站建设公司
  • 杭州网站建设哪家强网站建设 推广薪资
  • 个人网站备案出现公司名字怎么办社区推广怎么做
  • 【解决办法】网络训练报错AttributeError: module ‘jax.core‘ has no attribute ‘Shape‘.
  • 商城网站开发培训学校网站推荐正能量
  • 帮助做问卷调查的网站视频网站开发流程图
  • 网站建设分金手指排名十一网站与客户端的区别吗
  • 汕头网站建设系统移动端网站的重要性
  • 招商网站有哪些外国人做的汉字网站
  • 集团公司网站案例网站建设 云计算
  • 天津建设科技杂志的官方网站中铁三局招聘文员要求身材好
  • 网站站长如何赚钱WordPress料神
  • 黄岩做网站公司电话网站图片上的水印怎么做
  • 后端网站开发遇到的难题解决网站你懂我意思正能量晚上在线观看不用下载免费魅族
  • 地区网站建设html网页制作代码模板
  • 网站解析教程影视网络推广方案
  • 网站开发师是属于IT主体职业网站美工如何做
  • 网站后台上传软件免费的微网站哪个好
  • 网站建设的网站定位上海设计公司官网
  • 专业网站建设流程网站建设赛车
  • 网站域名域名wordpress兼容php版本
  • 婚纱摄影网站开题报告一起做网站女装夏季
  • 建设银行内部网站6攀枝花建设银行网站
  • 个人网站 域名选择浙江微信网站建设
  • 网站头部修改东莞人才市场招聘官网