Mac基于Docker-ubuntu构建c/c++编译环境

编译环境安装和使用被充分验证,如有期望补充的内容欢迎留言评论。

目录

前言

Docker desktop下载安装

修改镜像源

选择ubuntu镜像

docker容器启动

参数说明:

 宿主机与docker容器文件共享

宿主机与docker容器拷贝文件

为 Ubuntu 配置 ssh、vim、make 相关工具

安装工具(如不需要ssh登录则可不安装)

Q1:ubuntu下以root用户的密码是多少?

Q2:编译过程出现Syntax error: "(" unexpected

前言

此文章期望帮助mac用户快速搭建c/c++的编译环境,快速准备软件开发环境,欢迎关注收藏加评论。

Docker desktop下载安装

Docker Desktop: The #1 Containerization Tool for Developers | Docker

修改镜像源

如图1->2->3操作步骤。

使用命令行确认是否安装成功。

macbook@MacbookdeMacBook-Pro /opt % docker --version
Docker version 26.0.0, build 2ae903e

选择ubuntu镜像

执行Pull再执行Run进行安装。

使用命令行确认是否安装成功。

macbook@MacbookdeMacBook-Pro /opt % docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
ubuntu       20.04     b2c9e106c9d9   11 days ago   72.8MB

docker容器启动

执行如下命令行启动

docker run -itd -p 3316:22 ubuntu:20.04

参数说明:

  1. -i: 交互式模式开启;-t: 分配 tty 伪终端;-it 通常同时使用
  2. -d: 后台运行容器
  3. -p: 指定端口映射,3316:22 表示将宿主机器的 3316 端口映射到容器内部的 22 端口(sshd 端口)
  • 使用命令行确认镜像启动状态。

  • 进入容器终端
//启动具体某个容器
docker start <container_id_or_name> 
//启动名为my_container的容器
docker start my_container
//进入某个具体容器
docker exec -it <container_id> /bin/bash
//根据镜像创建一个新容器
docker run <image_name>
//如果my_container不存在,你需要首先使用docker run来创建它。
//例如,使用ubuntu镜像创建并启动一个名为my_container的容器:
//在这个例子中,-d标志意味着容器将在守护进程模式下运行(即在后台运行),
//而ubuntu是你想要启动的Docker镜像的名称。
docker run --name my_container -d ubuntu

此处可执行启动容器,再进入容器即可,其余命令只做介绍和理解。

docker exec 和 docker attach 都能达成我们进入终端的目的,但是使用 attach 后在终端 exit 会导致容器的停止,所以这边采用 docker exec <container-id> 的用法。

 宿主机与docker容器文件共享

  • 在宿主机执行如下命令共享文件,此处会直接新建一个容器,后续操作会在新容器中进行。
docker run -it -v /Users/macbook/{path}:/opt ubuntu:20.04 /bin/bash

宿主机与docker容器拷贝文件

将宿主机下载的gcc编译器至docker容器。

docker cp /path/to/local/file container_id:/path/in/container/

为 Ubuntu 配置 ssh、vim、make 相关工具

安装工具(如不需要ssh登录则可不安装)

进入 Ubuntu 伪终端之后,接下来我们需要安装一些工具如 ssh、vim

  • ssh 相关:openssh-client(ssh 客户端)、openssh-server(ssh 服务端)
  • vim 文字编辑工具
apt update
apt install openssh-client openssh-server vim make

具体配置ssh参考文档:

Docker: Mac 上的 Ubuntu 环境搭建_mac m芯片 通过doker安装ubuntu-CSDN博客

Q1:ubuntu下以root用户的密码是多少?

A1:以root身份登录,请使用passwd命令设置根密码。

Q2:编译过程出现Syntax error: "(" unexpected

A2:需要切换dash为bash。参考如下链接。

ubuntu修改dash为bash_ubunutu dash无法修改-CSDN博客

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

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

相关文章

Flyway使用教程

Flyway使用教程 背景&#xff1a; 在开发环境对多个不同版本的分支进行开发&#xff0c;如果此时涉及到多张表结构修改&#xff08;比如新增字段&#xff09;&#xff0c;而在测试环境时却忘了整理SQL 脚本给测试人员执行&#xff0c;就会导致出现 bug&#xff0c;从而影响测试…

Android selinux权限

一.SE 概述 SELinux 是由美国NSA&#xff08;国安局&#xff09;和 SCC 开发的 Linux的一个扩张强制访问控制安全模块。原先是在Fluke上开发的&#xff0c;2000年以 GNU GPL 发布。从 fedora core 2开始&#xff0c; 2.6内核的版本都支持SELinux。 在 SELinux 出现之前&#…

PHP ASCII码的字符串用mb_convert_encoding 转utf-8之后不生效

检测数据类型是ascii,转码之后再检测还是utf-8没生效 private function toUTF8($str){$encode mb_detect_encoding($str, array("ASCII",UTF-8,"GB2312","GBK",BIG5,LATIN1));if ($encode ! UTF-8) {$str1 mb_convert_encoding($str, UTF-8, …

抓包证书安装到安卓7.0+手机

前言: 首先理解一下,这个不只是证书到浏览器,而是抓包证书到安卓7.0+手机上的文章; 还有一点区分,在浏览器上装的证书,只是让抓包工具可以抓取手机浏览器的包,而不是抓取手机app上的包; 如果你的证书只是简单的在浏览器下进行安装,那么你的手机app是走不了代理网络的…

【微服务】服务保护(通过Sentinel解决雪崩问题)

Sentinel解决雪崩问题 雪崩问题服务保护方案服务降级保护 服务保护技术SentinelFallback服务熔断 雪崩问题 在微服务调用链中如果有一个服务的问题导致整条链上的服务都不可用&#xff0c;称为雪崩 原因 微服务之间的相互调用&#xff0c;服务提供者出现故障服务的消费者没有…

【微服务】配置管理

Nacos配置管理 配置管理配置共享配置热更新 配置管理 将微服务集群中常用&#xff0c;经常变化的配置都写到一个独立的配置文件微服务中进行统一管理 配置共享 在Nacos的界面当中进行配置管理&#xff0c;在配置列表中添加配置 比如各个服务中的jdbc的连接配置&#xff1a; …

HTML/CSS1

1.前置说明 请点这里 2.img元素 格式&#xff1a; <img src"图片地址" alt"占位文字" width"图片宽度" height"图片高度">其中alt是当图片加载失败时显示的文字 而且不同内核的浏览器显示出来的占位文字的效果也是不尽相同的…

【Android学习】简单的登录页面和业务逻辑实现

实现功能 1 登录页&#xff1a;密码登录和验证码登录 2 忘记密码页&#xff1a;修改密码 3 页面基础逻辑 java代码 基础页面 XML login_main.xml <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.and…

Servlet_JSP

1.一些回顾 对于Tomcat部署中 我们有一些补充的点需要在此说明一下 1.如果我们想要查询MINEType的话 可以到TOMCAT_HOME/conf/web.xml中进行查询 里面记录了不同类型对应的MINEType 2.我们客户端发送请求数据给服务器之后 服务器会调用父类中的service方法 然后在内部决定调用…

CMakeLists.txt语法规则:while 循环

一. 简介 前面几篇文章学习了 CMakeLists.txt语法中的一种循环写法&#xff0c;文章如下&#xff1a; CMakeLists.txt语法规则&#xff1a;foreach 循环基本用法-CSDN博客 CMakeLists.txt语法规则&#xff1a;foreach循环的关键字-CSDN博客 本文学习 while循环写法。 二. …

Day08-JavaWeb开发-MySQL(多表查询内外连接子查询事务索引)Mybatis入门

1. MySQL多表查询 1.1 概述 1.2 内连接 -- 内连接 -- A. 查询员工的姓名, 及所属的部门名称(隐式内连接实现) select tb_emp.name, tb_dept.name from tb_emp,tb_dept where tb_emp.dept_id tb_dept.id;-- 起别名 select * from tb_emp e, tb_dept d where e.dept_id d.id…

tomcat+maven+java+mysql图书管理系统2-完善项目结构,添加相关依赖

1.创建java目录 接着选择java&#xff0c;回车&#xff0c;则创建成功&#xff0c;成功后在左侧栏能看见 2.修改pom.xml文件,(添加依赖) <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi…

vs 2022 Xamarin 生成 Android apk

再保存&#xff0c;如果没有生成apk就重启软件 再试一次

Windows内核开发:如何使用STL

前言 大家都知道应用层c的STL非常强大&#xff0c;非常好用&#xff0c;但是在内核下就没法用了。针对这个问题&#xff0c;经过我不懈的寻找&#xff0c;终于找到了解决内核无法使用STL的方法。 使用new/delete关键字 先说一下常用关键字如何在内核中使用。其实只需要在一个全…

上位机开发PyQt5(三)【布局、单选框和多选框、对话框】

目录 一、布局Layout 1. 布局简介 2. 水平布局QHBoxLayout 3. 竖直布局QVBoxLayout 4. 表单布局QFormLayout 5. 布局嵌套 二、单选框和复选框 1. 单选框 2. 复选框 三、对话框 1. QMessageBox 2. QIputDialog 一、布局Layout 1. 布局简介 一个pyqt窗口中可以有多…

百度文库可直接下载VIP文章

百度文库文件下载 百度文库是百度公司推出的一款在线文档分享平台&#xff0c;它可以让用户免费上传、分享、下载和浏览各类文档资源&#xff0c;包括但不限于文章、论文、报告、PPT、书籍等。 好了&#xff0c;废话不多说&#xff0c;这里推出的新生产的软件&#xff0c;可直…

机器学习的指标评价

之前在学校的小发明制作中&#xff0c;在终期答辩的时候&#xff0c;虽然整个项目的流程都答的很流畅。 在老师提问的过程中&#xff0c;当老师问我recall,precision,accuracy等指标是如何计算的&#xff0c;又能够表示模型的哪方面指标做得好。我听到这个问题的时候&#xff…

图片倾斜矫正处理(Hough Transform)

目录 倾斜矫正原理及实现方式Canny边缘检测非极大值抑制霍夫变换 倾斜矫正原理及实现方式 代码连接&#xff1a;https://github.com/shuyeah2356/Image-Angel-correction/tree/main 倾斜矫正的实现原理&#xff1a; 使用霍夫变换检测图片中的直线&#xff1b; 计算直线与水平方…

【与 Apollo 共创生态:展望自动驾驶全新未来】

1、引言 历经七年的不懈追求与创新&#xff0c;Apollo开放平台已陆续推出了13个版本&#xff0c;汇聚了来自全球170多个国家与地区的16万名开发者及220多家合作伙伴。随着Apollo开放平台的不断创新与发展&#xff0c;Apollo在2024年4月19日迎来了Apollo开放平台的七周年大会&a…

猿人学第七题-动态字体-随风漂移

前言&#xff1a;该题主要是考对fontTools.ttLib.TTFont的操作&#xff0c;另外就是对字典互相映射的操作 一、woff文件存储 from fontTools.ttLib import TTFont #pip install fontTools def save_woff(response):woff response[woff]woff_file base64.b64decode(woff.enc…