交叉编译 iceoryx

这篇具有很好参考价值的文章主要介绍了交叉编译 iceoryx。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

交叉编译 iceoryx

概述

交叉编译 iceoryx,交叉编译,eclipse,git,java

iceoryx 是用于各种操作系统的进程间通信(IPC)中间件(目前支持 Linux、macOS、QNX、FreeBSD 和 Windows 10)。它起源于汽车行业,当涉及到驾驶员辅助或自动驾驶系统时,需要在不同的过程之间传输大量数据。然而,有效的通信机制也可以应用于更广泛的用例,例如在机器人或游戏开发领域。

iceoryx 使用一种真正的零拷贝共享内存方法,该方法允许在没有单个拷贝的情况下将数据从发布者传输到订阅者。这确保了数据传输具有恒定的延迟,而与有效负载的大小无关。有关更多信息,请查看 1000 字的 iceoryx 简介。

就其本身而言,这并不是一种新的创新,因为这种方法自 20 世纪 70 年代以来就一直在使用。然而,我们进一步采用了这种方法,将其与发布/订阅体系结构、服务发现、现代 C++ 和无锁算法相结合。通过添加一个避免复制的应用程序编程接口(API),我们可以实现我们所称的真正的零拷贝——从发布者到订阅者的端到端方法,而无需创建单个拷贝。

  • GitHub: https://github.com/eclipse-iceoryx/iceoryx

下载

开发版本 (最新)

如果以研究学习为目的,或者希望尝试最新特性,又或者希望参与到 iceoryx 的开发中,可以直接从 github 上拉取最新源码,拉取命令:

git clone https://github.com/eclipse-iceoryx/iceoryx.git

技巧:在 github 页面点击右上角的 Code 按钮获取 git clone 链接。

发行版本

如果以商用量产为目的,一般选择正式的发行版本为佳。在 iceoryx 的 Release 页面,源码以压缩包的形式提供,根据需求选择合适的版本进行下载,以最新的 2.0.3 为例,下载源码包 Source Code (tar.gz).

也可以直接使用 wget 命令下载:

wget https://github.com/eclipse-iceoryx/iceoryx/archive/refs/tags/v2.0.3.tar.gz

交叉编译

解压缩源码包,如果使用 git clone 拉回来的代码可以忽略这一步:

tar -xvf v2.0.3.tar.gz

解压缩源码包之后建议先阅读 README.md 文档,在 Build and install 章节里面有关于编译的相关信息,或者直接阅读 doc/website/getting-started/installation.md 文档。

在 iceoryx 的文档及配置文件中有提及到依赖关系,最主要的是依赖 libacl 库,如果需要完整编译可以先参考「交叉编译 attr」与「交叉编译 acl」两篇文章。需要注意的点就是,需要使用 make DESTDIR=$BUILDSYSROOT install 将编译产物部署到 sysroot 目录便于 iceoryx 编译时依赖,效果类似于 apt install *-dev 安装开发依赖包。

iceoryx 使用了 CMake 编译系统,需要保证系统中已经安装了 cmake 工具。可以使用 apt 命令进行安装:

sudo apt install -y cmake

如果 cmake 版本低于 3.16 需要先更新到 cmake 3.16+ 版本。

提示:cmake 更新可参考「Ubuntu/Linux 升级 CMake 版本」。

首先创建一个环境配置文件 aarch64-environment-setup,配置最重要的交叉编译环境变量。

aarch64-environment-setup:

export TOOLCHAIN_ROOT=/opt/toolchains/aarch64--glibc--stable-2022.03-1
export BUILDSYSROOT=$TOOLCHAIN_ROOT/aarch64-buildroot-linux-gnu/sysroot
export PATH=$TOOLCHAIN_ROOT/bin:$PATH

export PREFIX=/usr

export CC="aarch64-linux-gcc --sysroot=$BUILDSYSROOT"
export CXX="aarch64-linux-g++ --sysroot=$BUILDSYSROOT"
export CPP="aarch64-linux-gcc -E --sysroot=$BUILDSYSROOT"
export LD="aarch64-linux-ld --sysroot=$BUILDSYSROOT"
export AR=aarch64-linux-ar
export AS=aarch64-linux-as
export NM=aarch64-linux-nm
export GDB=aarch64-linux-gdb
export OBJDUMP=aarch64-linux-objdump
export OBJCOPY=aarch64-linux-objcopy
export RANLIB=aarch64-linux-ranlib
export READELF=aarch64-linux-readelf
export STRIP=aarch64-linux-strip

export PKG_CONFIG_SYSROOT_DIR=$BUILDSYSROOT
export PKG_CONFIG_PATH=$BUILDSYSROOT/usr/lib/pkgconfig:$BUILDSYSROOT/usr/share/pkgconfig

在本示例中,交叉编译工具位于 /opt/toolchains/aarch64--glibc--stable-2022.03-1/bin 目录下,将该目录配置到 PATH 环境变量,让系统能够正确搜索到。同时在配置 CCCXXCPPLD 环境变量时指定 --sysroot=<dir> 参数让交叉编译器搜索 dir 目录下的头文件与库文件,而不是 /usr/include/usr/lib

source aarch64-environment-setup
cmake -Bbuild -Hiceoryx_meta -DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX=/usr
cmake --build build
cmake --build build --target install DESTDIR=$BUILDSYSROOT
  • 在源码目录下创建环境配置文件并调用 source 命令让环境变量生效;
  • cmake 使用 -B 参数指定构建目录为 build,如果 build 目录不存在则自动创建;使用 -H 参数指定 CMakeLists.txt 文件所在路径,指定 -DBUILD_SHARED_LIBS=ON 编译出动态链接库,并使用 -DCMAKE_INSTALL_PREFIX=/usr 配置安装的目录前缀为 /usr
  • 执行 cmake --build build 命令在 build 目录编译源码;
  • 使用 --target install 进行安装,带上 DESTDIR 参数作为安装目标文件的前缀变量,后面带上你希望安装到的文件夹路径,在本示例中,BUILDSYSROOT 指的是交叉编译工具链的 sysroot 目录,此环境变量在 aarch64-environment-setup 中已定义。更详细介绍可以参考 DESTDIR 官方关于 DESTDIR 的用法说明。

最终你就可以在 $BUILDSYSROOT/usr 文件夹中找到交叉编译好的 iceoryx 头文件及库文件。如果需要以软件包的形式发布,可以指定 DESTDIR 为其他目录,比如 DESTDIR=/tmp/sysroot 则最终交叉编译出来的产物会在 /tmp/sysroot 文件夹下。Good luck.

欢迎关注我的公众号:飞翔的小黄鸭
也许会发现不一样的风景


△ \triangle 交叉编译 acl文章来源地址https://www.toymoban.com/news/detail-743351.html

到了这里,关于交叉编译 iceoryx的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ARM交叉编译入门及交叉编译第三方库常见问题解析

    交叉编译简单说来,就是编译成果物的地儿不是你运行这个成果物的地儿。最常见的场景,就是我们要编译一个 ARM版本 的可执行程序,但我们编译这个 ARM版本 可执行程序的地方,是在一个 x86_x64 的平台上。 绝大部分的原因,是目标平台不具备编译成果物的算力。具体说来

    2023年04月26日
    浏览(88)
  • 【交叉编译环境】安装arm-linux交叉编译环境到虚拟机教程(简洁版本)

    就是看到了好些教程有些繁琐,我就写了一个 我这个解压安装的交叉编译环境是Linaro GCC的一个版本,可以用于在x86_64的主机上编译arm-linux-gnueabihf的目标代码 步骤来了 在你的Ubuntu系统中 创建一个目录 ,例如/usr/local/arm,然后将下载好的gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueab

    2024年02月03日
    浏览(43)
  • 编译opencv-3.4.5 [交叉编译]

    在unbuntu20.04环境下编译opencv3.4.5, cmake 版本:3.27.4 gcc 版本:11.4.0 g++版本:11.4.0 在此环境下编译opencv4.5.4正常。 1. 编译时遇到的问题 (1) Built target libprotobuf make: *** [Makefile:163:all] 错误 2 make时用suod:     sudo make -j4 (2) [ 30%] Linking CXX static library ../../lib/libopencv_core.a [ 30

    2024年02月07日
    浏览(39)
  • OpenHarmonyllvm交叉编译工具链编译介绍

    1.1 工具链下载 1.2 环境配置 下载 clang+llvm-10.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz 为 github 网址,当前已经下载了,可以直接使用 1.3 安装依赖 1.3.1 基础组件安装 1.4 工具链编译 1.4.1 clang15.0.4 版本全量编译 1.4.2 clang15.0.4 版本不编译 windows 平台 1.4.3 clang12.0.1 版本全量编译 【Note】 :该

    2024年01月25日
    浏览(39)
  • 跨平台编译go(交叉编译)

    以将一个简单的go http 部署到docker为例! Dockerfile文件 docker build . -t goweb_app docker run -p 8888:8888 goweb_app 在最终的镜像中是不需要go编译器的,也就是说只需要一个运行最终二进制文件的容器即可。 Golang 支持交叉编译,在一个平台上生成另一个平台的可执行程序。 golang中跨平台

    2024年02月07日
    浏览(86)
  • 音视频开发之旅——音频基础概念、交叉编译原理和实践(LAME的交叉编译)(Android)

    本文章已授权微信公众号郭霖(guolin_blog)转载。 本文主要讲解的是 音频基础概念 、 交叉编译原理和实践(LAME的交叉编译) ,是基于 Android平台 ,示例代码如下所示: AndroidAudioDemo 另外, iOS平台 也有相关的文章,如下所示: 音视频开发之旅——音频基础概念、交叉编译

    2024年04月25日
    浏览(86)
  • iTOP-RK3588开发板Ubuntu 系统交叉编译 Qt 工程-命令行交叉编译

    使用源码 rk3588_linux/buildroot/output/rockchip_rk3588/host/bin/qmake 交叉编译 QT 工程。 最后烧写编译好的 buildroot 镜像,将编译好的 QT 工程可执行程序在 buildroot 系统上运行。 交叉编译 QT 工程如下所示,首先进入 QLed 的工程目录下。 然后使用以下命令交叉编译 QT 工程,如下图所示:

    2024年02月13日
    浏览(42)
  • 重新理解Linux交叉编译及编译流程

    参考书籍 1、编译原理 2、嵌入式Linux应用开发 当我们开发目标是一个嵌入式设备时,便需要在PC机上编译出能在该嵌入式设备上运行的可执行文件,这里编译主机与目标运行主机不是同一个设备,那么该过程就称为交叉编译;而编译是指一个源代码文件(这里指的是编译性程

    2023年04月08日
    浏览(35)
  • NDK交叉编译FFmpeg安卓编译ffmpeg

    编译工具下载 参考这个:https://blog.csdn.net/gaoliang0/article/details/81913291 或者官网 NDK编译工具下载: https://developer.android.google.cn/ndk/downloads?hl=zh-cn 官网老版本: https://github.com/android/ndk/wiki/Unsupported-Downloads 或者从我的百度网盘: 链接:https://pan.baidu.com/s/1FEtM6mVNgER_DvC2myHB5Q?pwd=28l9 提

    2024年02月08日
    浏览(41)
  • ARM_Linux的交叉开发以及交叉编译器

    目录 为什么要使用交叉开发 为什么要使用交叉编译 交叉编译器的安装 交叉编译器的使用 交叉开发是指在通用的电脑上吧程序编写,编译,调试好,再下载到嵌入式产品中去运行,对于一些简单的程序的话,直接在电脑上编译调试好即可,但是对于一些需要操作硬件的开发

    2024年01月23日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包