docker构建arm编译环境

news/发布时间2024/8/24 13:15:05

利用docker快速搭建arm环境进行源码编译及代码测试

  • 准备

    • 安装好docker环境。
  • 启动multiarch/qemu-user-static跨平台模拟窗口

    sudo docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
    
  • 编写Dockerfile构建arm镜像

    # 第一阶段:准备编译环境和源码
    # 构建ptp4l,基于arm64v8/centos:7 
    FROM arm64v8/centos:7 as ptp-biluder# 安装编译 LinuxPTP 所需的依赖
    RUN yum update -y && yum install -y gcc make# 复制 LinuxPTP 源代码压缩包到镜像中
    COPY ./linuxptp-4.2.tgz /tmp/linuxptp.tgz# 创建目录结构并解压源码压缩包
    RUN mkdir -p /linuxptp/src \&& tar -xzvf /tmp/linuxptp.tgz -C /linuxptp/src --strip-components=1# 设置工作目录为 LinuxPTP 源码目录
    WORKDIR /linuxptp/src# 编译 LinuxPTP
    RUN make && \make install#构建libpacp
    FROM arm64v8/centos:7 as libpcap-biluder# 安装编译 libpcap 所需的依赖
    RUN yum update -y && yum install -y gcc make flex bison byacc libpcap-devel
    # 将 libpcap 的源代码拷贝到镜像中(假设你已经将 libpcap 源码放在和 Dockerfile 同一目录下)
    COPY ./libpcap-1.10.4.tar.gz /tmp/libpcap.tar.gz# 解压源代码并编译安装
    RUN cd /tmp && \tar -xvf libpcap.tar.gz && \cd libpcap-1.10.4 && \./configure && \make && \make install# 第二阶段:创建最终镜像
    FROM arm64v8/centos:7# 将 OpenJDK 安装包拷贝进容器
    COPY ./OpenJDK8U_aarch64_linux.tar.gz /tmp/openjdk.tar.gz# 解压安装 OpenJDK
    RUN mkdir -p /usr/lib/jvm && \tar -xzf /tmp/openjdk.tar.gz -C /usr/lib/jvm && \rm /tmp/openjdk.tar.gz# 设置 JAVA_HOME 环境变量
    ENV JAVA_HOME /usr/lib/jvm/jdk8u402-b06
    ENV PATH $PATH:$JAVA_HOME/bin# 从第一阶段复制编译好的 LinuxPTP 可执行文件到最终镜像中
    COPY --from=ptp-biluder /usr/local/sbin/ /usr/local/bin/
    COPY --from=libpcap-biluder /usr/local/lib/libpcap* /usr/lib64/
    

  • 生成镜像

    sudo docker build -t ptp4l .
    
  • 运行容器

    sudo docker run -it --name ptp4l ptp4l /bin/bash
    
  • 容器内运行命令

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.liansuoyi.cn/news/32274201.html

如若内容造成侵权/违法违规/事实不符,请联系连锁易网进行投诉反馈email:xxxxxxxx@qq.com,一经查实,立即删除!

相关文章

19_W25Q64简介

W25Q64简介 介绍硬件电路W25Q64框图Flash操作注意事项最小擦除单元->一个扇区软件SPI读写W25Q64 接线图代码 MySPI.c #include "stm32f10x.h" // Device headervoid MySPI_W_SS(uint8_t BitValue) {GPIO_WriteBit(GPIOA,GPIO_Pin_4,(BitAction)B…

Elasticsearch 本地单机生产配置

本地安装 创建启动用户elasticsearch不能由root用户启动 安全性:以root用户身份启动Elasticsearch会增加系统受到攻击的风险。Elasticsearch的进程可能会受到来自外部的恶意攻击,如果以root用户身份启动,攻击者可能会获取到root权限,从而对系统造成严重的损害。 最小权限原…

linux 中避免脚本重复执行的方法

001、在特定的情况下,为了防止脚本重复执行,造成混乱,可以在末尾追加如下语句避免脚本重复执行[root@pc1 test1]# ls a.sh [root@pc1 test1]# cat a.sh ## 测试脚本 #!/bin/bashseq 2 seq 2 sed -i s/^/#/ $0 ## 在脚本的最后一行增加该句,实际上是在脚本的所有…

软件工程第一次作业

这个作业属于哪个课程 https://edu.cnblogs.com/campus/gdgy/SoftwareEngineering2024/这个作业要求在哪里 https://edu.cnblogs.com/campus/gdgy/SoftwareEngineering2024/homework/13135这个作业的目标 介绍自己的兴趣爱好,分享自己的生活趣事,以及在阅读书本后提出自己的问…

读算法的陷阱:超级平台、算法垄断与场景欺骗笔记02_大数据

读算法的陷阱:超级平台、算法垄断与场景欺骗笔记02_大数据1. 大数据分析 1.1. 随着“大数据军备竞赛”与定价算法的广泛应用,线上购物平台与实体商铺的界限也变得越来越模糊 1.2. 在沃尔玛疯狂扩张的时代,它给地区性商业带来的伤害不亚于一场地震 1.2…

MacTeX 使用指南

MacTeX 发行版包含了一整套的 TeX/LaTeX 工具和程序。MacTeX 基本上是 TeX Live 的一个 macOS 版本。 安装 brew install --cask mactex使用 安装好 MacTeX 后,你会获得下列 5 款 GUI 工具:TeXShop: TeX/LaTeX 编辑器 BibDesk: 参考文献管理工具 LaTeXiT: 一种小巧的公式编辑…

debian记录

安装问题解决方法: 1.打开文件 vi ~/.bashrc 2.在末尾添加如下 export PATH=/usr/loca/sbin:/usr/sbin:/sbin:$PATH 3.使其生效 source ~/.bashrc

软工作业1:自我介绍+软工五问

这个作业属于哪个课程 软件工程2024这个作业要求在哪里 自我介绍+软工5问这个作业的目标 1.向老师介绍自己2.熟悉博客和GitHub的使用3.熟悉合理排版的需求一、自我介绍 我是李慧娣,从小在广东惠州长大。由于三分钟热度,我的爱好很广泛,喜欢音乐、手工、电影、滑板、羽毛球、…

Codeforces Round 720 (Div. 2) A-D

A. Entertainment in MAC 这道没细看题意,挺困的,猜了一下.. 观察到n是偶数且很大,但是样例的长度却没有很长。 而且长度越长对字典序容易越大,所以猜测只复制一次。 从样例找规律:如果字符串s比翻转后的字符串s小,则原样输出;否则进行翻转,再复制一次。 代码:#includ…

java-Excel导入导出数据-方法

一、Excel导入导出的应用场景 1、数据导入 减轻录入工作量 2、数据导出 统计信息归档 3、数据传输 异构系统之间数据传输 二、EasyExcel简介 Java解析、生成Excel比较有名的框架有Apache poi、jxl。但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定…

Mapbox实战项目(1)-栅格图片图层实现地图方位展示

需求背景 需要实现地图上展示一个类似于罗盘的标记,随着地图的缩放、切换、旋转等,能够在地图的中央指示出地图的方位。 系统自带的方位控件太小,在特殊业务场景下不够醒目。 技术选型 Mapbox 实现分析官网已经有地图上展示图片矢量图层的demo,“Add a raster image to a m…

21. 实现洗牌逻辑

洗牌方法洗牌的时候,会把弃牌堆清除,牌堆中的每张牌都会和随机的牌进行交换 一共有两个地方会进行洗牌操作,第一个是初始化牌堆的时候第二个是抽牌堆为空的时候项目相关代码 代码仓库:https://gitee.com/nbda1121440/DreamOfTheKingdom.git 标签:20240305_1905

Nuxt3-pinia环境下实现数据持久化

Nuxt3-pinia环境下实现数据持久化 1、安装yarn add pinia @pinia/nuxt然后进行配置,修改nuxt.config.tsexport default defineNuxtConfig({devtools: { enabled: false },typescript: {shim: false},modules: [@pinia/nuxt, // +@pinia-plugin-persistedstate/nuxt, // +],pi…

K8S部署MySQL5.7主从集群

参考 https://blog.csdn.net/qq_43114229/article/details/124078914 https://kubernetes.io/zh-cn/docs/tasks/run-application/run-replicated-stateful-application/ MySQL主从同步架构图mysql-0是master mysql-1和mysql-2是两个备份 当mysql写的时候,找headless service中…

《Document-level Relation Extraction as Semantic Segmentation》论文阅读笔记

《Document-level Relation Extraction as Semantic Segmentation》论文阅读笔记原文 代码 摘要 本文研究的是文档级关系抽取,即从文档中抽取出多个实体之间的关系。现有的方法主要是基于图或基于Transformer的模型,它们只考虑实体自身的信息,而忽略了关系三元组之间的全局信…

Python 生成随机字符串

0x00 吐槽最近让项目坑的没办法,老写一些脚本来协助工作,刚好在测试python生成word的时候遇到需要随机字符串来命名文档名,简单写点东西记录一下0x01 一班的童靴 其实随机字符串这个东西在任何语言里都经常会用到,而且解决方法也简单 首先定义一个字符串,随机字符串就从这…

【触想智能】工业一体机刷卡应用知识分享

工业一体机刷卡技术是一种高效、稳定、安全的身份认证方式,具有广泛的应用场景和优势。在工业自动化控制、生产过程监测等领域,它已成为必不可少的设备之一。一、工业一体机刷卡的原理:工业一体机刷卡的原理和普通的刷卡设备类似,都是通过读取磁条或芯片内嵌的信息,从而实现…

基于蓝鲸saas的业务配置同步管理平台设计与实现

业务背景该平台设计的初衷,本是源于另外一个环境治理项目的一部分,主要是负责跨环境的业务配置修改与同步,同时考虑到这块能力除了在该项目中可以应用到外,也可以独立作为一个单点能力提供给其他用户使用,故考虑设计为一个saas应用模式,既支持用户在管理端界面进行操作,…

06、HSMS协议介绍

本章的内容主要参考了 SECS半导体设备通讯-2 HSMS通信标准 ,外加上自己看的一些其他的文档。也加上了一些自己的理解,特此记录。若有侵权,请联系删除,谢谢。 再次特别感谢 SECS半导体设备通讯-2 HSMS通信标准 的作者。1、HSMS通信标准概述 HSMS 定义了使用 TCP/IP 作为物…
推荐文章