【Docker】 ubuntu18.04编译时内存不足需要使用临时交换分区解决“c++: internal compiler error“错误

news2024/11/24 8:39:29

【Docker】 ubuntu18.04编译时内存不足需要使用临时交换分区解决"c++: internal compiler error"错误

问题描述

安装独立功能包时编译不成功,出现 “c++: internal compiler error: Killed(program cciplus)” 错误。


解决方案

出现这个问题的原因大概率是因为编译时内存不足,可以使用临时交换分区来解决。正常的ubuntu18.04是可以按照以下步骤执行命令使用临时交换分区来解决问题,但是docker的ubuntu18.04容器会出现下图中的错误。

# 创建一个大小为 3GB 的交换文件 /home/3Gswapfile ,根据需要调整 bs 和 count 参数来创建不同大小的交换文件
sudo dd if=/dev/zero of=/home/3Gswapfile bs=1M count=512
sudo chmod 600 /home/3Gswapfile
# mkswap 命令将指定的文件 /home/3Gswapfile 标记为交换分区,并设置相应的文件系统标识
sudo mkswap /home/3Gswapfile
# swapon 命令将指定的文件 /home/3Gswapfile 作为交换空间启用,并将其添加到系统的交换空间列表中
sudo swapon /home/3Gswapfile
# 重新进行编译
# xxxxx编译命令
# swapoff 命令将指定的交换空间文件或设备从系统中移除,并停止使用它作为虚拟内存的一部分
sudo swapoff /home/3Gswapfile
# 删除 /swapfile 交换分区
sudo rm /home/3Gswapfile

因为 Docker 默认情况下不允许容器内的进程启用交换空间。

要在在 Docker 容器中以特权模式(privileged mode)运行,但是即使以特权模式下运行也会出现新的错误,因此博主在容器启动时就直接设置交换空间大小。

容器一旦启动,很多设置都改不了了,因此需要先将docker容器制作成镜像,然后再重新创建容器并作相应设置。

# 查找当前容器的ID或名称
docker ps
# 将容器制作成镜像
docker commit container_name image_name:tag
# eg: docker commit GCNv2_SLAM gcnv2_slam:1.0
# 查看制作好的镜像
docker images
# 删除旧版容器
docker stop container_name
docker rm container_name
# cg: docker stop GCNv2_SLAM
# 	  docker rm GCNv2_SLAM
# 启动gpu版本镜像,设置了特权模式,内存大小和交换区大小(设置必须内存大小>=交换区)
docker run -it --privileged=true --memory=4g --memory-swap=4g --shm-size 8g --gpus all --name container_name -p 5900:5900 -p 22:22 -d image_name:tag
# eg: docker run -it --privileged=true --memory=30g --memory-swap=60g --shm-size 8g --gpus all --name GCNv2_SLAM -p 5900:5900 -p 22:22 -d gcnv2_slam:1.0
# 显示容器的内存大小、交换分区大小信息
docker container inspect <container_id> --format "table {{.HostConfig.Memory}}\t{{.HostConfig.MemorySwap}}"
# eg: docker container inspect fcd4630822ac --format "table {{.HostConfig.Memory}}\t{{.HostConfig.MemorySwap}}"

容器的内存30g,交换分区60g。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[LeetCode][LCR174] 寻找二叉搜索树中的目标节点

题目 LCR 174. 寻找二叉搜索树中的目标节点 某公司组织架构以二叉搜索树形式记录&#xff0c;节点值为处于该职位的员工编号。请返回第 cnt 大的员工编号。 示例 1: 输入&#xff1a;root [7, 3, 9, 1, 5], cnt 27/ \3 9/ \ 1 5 输出&#xff1a;7示例 2: 输入: ro…

【Redis】-Redis实现高并发下秒杀系统

文章目录 前言 一、场景二、商品超卖的场景三、使用分布式锁解决超卖四、使用Redis事务乐观锁解决超卖 ** 前言 Redis事务   Redis事务是一种将多个命令打包执行的机制&#xff0c;确保这些命令要么全部执行成功&#xff0c;要么全部执行失败。Redis事务通过MULTI、EXEC、D…

机器视觉检测设备的组成要素

机器视觉检测设备是一种先进的自动化检测技术工具&#xff0c;它利用光学、图像处理和计算机硬件及软件技术模拟并扩展人类的视觉功能&#xff0c;以实现对产品或目标物体进行自动化的尺寸测量、缺陷检测、表面质量评估、颜色识别、形状匹配以及位置判断等功能。这种设备通常包…

【Rockchip android7.1 平台rtl8821cs wifi移植调试】

Rockchip 平台rtl8821cs wifi移植调试 问题描述解决方法 郑重声明:本人原创博文&#xff0c;都是实战&#xff0c;均经过实际项目验证出货的 转载请标明出处:攻城狮2015 Platform: Rockchip rk3128 OS:Android 7.1.2 Kernel: 3.10 问题描述 客户需要在现在的板子上调一款RTL882…

【惠友精术】你见过给膝关节“打补丁”吗?单髁置换术,微创保膝真有一套

有什么方法可以让“换膝盖”既没那么痛&#xff0c;苦头又吃得少呢&#xff1f;你别说&#xff0c;还真有&#xff01; 近日&#xff0c;关节外科团队顺利为一例膝关节退变的患者完成了“膝关节单髁置换术”&#xff0c;实施了微小切口下对膝关节病变部位的精准治疗。该手术的成…

SV-7045网络草坪音箱安装说明 景区园区背景音乐广播石头音箱

SV-7045网络草坪音箱安装说明 景区园区背景音乐广播石头音箱 在做室外公共广播/背景音乐系统时&#xff0c;对于草坪音箱的安装方法,大家可能不甚了解&#xff0c;所以将具体安装方法作简要说明。 音箱安装步骤如下&#xff1a; 1.测量草地音箱的底座尺寸大小&#xff0c;最…

07-java基础-锁之AQSReentrantLockBlockingQueueCountDownLatchSemapho

文章目录 0&#xff1a;AQS简介-常见面试题AQS具备特性state表示资源的可用状态AQS定义两种资源共享方式AQS定义两种队列自定义同步器实现时主要实现以下几种方法&#xff1a;同步等待队列条件等待队列 1&#xff1a;AQS应用之ReentrantLockReentrantLock如何实现synchronized不…

【数据结构C++】线性表/顺序表-数组与vector

系列文章目录 第一章 线性表/顺序表-数组与vector 文章目录 系列文章目录前言一、数据结构主要研究的内容&#xff1f;二、数据结构三要素三、数组1.C中数组基本语法1.1 数组的声明、初始化1.2 vector的底层结构 2.数据结构之数组详解2.1 数据结构之数组操作——增、删、改、查…

55寸oled曲面拼接屏的特性

55寸OLED曲面拼接屏具有一系列引人注目的特性&#xff0c;使其在高端展示、商业广告、会议室和舞台演出等场合具有广泛的应用价值。以下是关于55寸OLED曲面拼接屏特性的详细解析&#xff1a; 高亮度与高对比度&#xff1a;OLED技术使得屏幕能够在各种光线条件下呈现出明亮且清晰…

【构建部署_Docker介绍与安装】

构建部署_Docker介绍与安装 构建部署_Docker介绍与安装Docker介绍Docker安装CentOS安装DockerCompose 构建部署_Docker介绍与安装 Docker介绍 Docker 是一个基于go语言开发的开源的应用容器引擎&#xff0c;让开发者可以打包他们的应用以及依赖包到一个可移植的容器中&#x…

算法---滑动窗口练习-2(无重复字符的最长子串)

无重复字符的最长子串 1. 题目解析2. 讲解算法原理3. 编写代码 1. 题目解析 题目地址&#xff1a;无重复字符的最长子串 2. 讲解算法原理 首先定义了变量 left、right 和 len&#xff0c;分别表示当前无重复子串的左边界、右边界和最大长度。 获取输入字符串 s 的长度 n。 定…

nginx有几种启动方式

Nginx 通常可以以两种主要的方式启动&#xff1a;作为前台进程运行或作为守护进程&#xff08;后台&#xff09;运行。 前台运行&#xff1a; 当Nginx以前台模式运行时&#xff0c;它会在命令行保持活动状态&#xff0c;所有的日志输出都会直接显示在命令行上。这种模式通常用于…

2022-6 青少年软件编程(图形化) 等级考试试卷(一级)

第1题:【 单选题】 广场中有声控喷泉, 当声音的音量大于 60 的时候, 喷泉就会喷出水, 现在的音量为30,下列哪个选项可以让喷泉喷出水? ( ) A: B: C: D: 【正确答案】: B 【试题解析】 : 当前声音的音量为 30, 需要将声音增加到 60 以上就可以让喷泉喷出水, …

Unity开发中Partial 详细使用案例

文章目录 **1. 分割大型类****2. 与 Unity 自动生成代码协同工作****3. 团队协作****4. 共享通用逻辑****5. 自定义编辑器相关代码****6. 配合 Unity 的 ScriptableObjects 使用****7. 多人协作与版本控制系统友好** 在 Unity 开发中&#xff0c; partial 关键字是 C# 语言提供…

STM32的GPIO初始化配置-学习笔记

简介&#xff1a; 由于刚开始没有学懂GPIO的配置原理&#xff0c;导致后面学习其它外设的时候总是产生阻碍&#xff0c;因为其它外设要使用前&#xff0c;大部分都要配置GPIO的初始化&#xff0c;因此这几天重新学习了一遍GPIO的配置&#xff0c;记录如下。 首先我们要知道芯片…

ideaSSM教师评价管理系统springMVC开发mysql数据库web结构java编程计算机网页源码

一、源码特点 SSM 教师评价管理系统是一套完善的完整信息系统&#xff0c;结合SSM框架和bootstrap完成本系统SpringMVC spring mybatis &#xff0c;对理解JSP java编程开发语言有帮助系统采用SSM框架&#xff08;MVC模式开发 &#xff09;&#xff0c;系统具有完整的源代码和…

Yakit爆破模块应用

yakit介绍 一款集成了各种渗透测试功能的集成软件。&#xff08;类似于burp&#xff0c;但我感觉他功能挺强大&#xff09; 爆破模块位置 按照下面图标点击 界面就是如下。 左侧可以选择爆破的类型&#xff0c;各种数据库http&#xff0c;ssh等都支持。 爆破参数 可以选择…

基于可穿戴式多模态人机接口的机械臂运动控制方法

随着科技的不断进步&#xff0c;人机接口在机械臂等辅助设备中的应用不仅为上肢运动障碍人群带来了显著的生活质量提升&#xff0c;同时也揭示出传统人机接口系统存在的一系列问题。这些问题包括指令较少、操作困难等方面&#xff0c;限制了机械臂等辅助设备在运动控制方面的多…

RocketMQ 面试题及答案整理,最新面试题

RocketMQ的消息存储机制是如何设计的&#xff1f; RocketMQ消息存储机制的设计原理&#xff1a; 1、CommitLog文件&#xff1a; 所有的消息都存储在一个连续的CommitLog文件中&#xff0c;保证了消息的顺序写入&#xff0c;提高写入性能。 2、消费队列&#xff1a; 为每个主…

3915A/B/C/D/E/F/G/H EMI测试接收机

3915A/B/C/D/E/F/G/H EMI测试接收机 产品综述 <<<<频率范围&#xff1a;10MHz~50GHz>>> 3915 系列EMI测试接收机是针对国家及国家电磁兼容标准测试需求推出的一款高性能接收机产品。它具有高灵敏度、高精度、大动态范围、低相位噪声等特点&#xff0c;支…