C++在线开发环境搭建(WEBIDE)
C++在线开发环境搭建
- 一、环境说明
- 1.1 系统基础环境说明
- 1.1 docker-ce社区版安装
- 二、codeserver构建
- 2.1 构建codeserver环境的docker容器
- 2.2 构建docker镜像
- 2.3 运行docker
- 2.4 运行展示
- 三、构建codeserver中的c++开发环境
- 3.1 插件下载
- 3.2 插件安装
- 四、其他知识
- 4.2 code-server配置config.yml
- 4.2.1 常用配置选项
- 4.2.2 示例配置文件
- 4.2.3 使用 `--config` 启动
- 4.1 交叉编译配置环境变量
- 4.3 CMAKE tools 启动参数传递
本文讲解在docker环境中构建codeserver服务器。搭建基于CMakeLists.txt的C++环境搭建。其中包括codeserver配置相关说明。Dockerfile的讲解等内容。开发者可以使用这个关键在线开发C++程序。
一、环境说明
1.1 系统基础环境说明
宿主机系统环境:ubuntu-24-server版本
系统镜像下载地址:
http://mirrors.163.com/ubuntu-releases/24.04.1/ubuntu-24.04.1-live-server-amd64.iso
docker社区版本
1.1 docker-ce社区版安装
- 安装必要的软件包以允许apt通过HTTPS使用仓库:
sudo apt update
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common -y
- 添加Docker的官方GPG密钥:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
- 添加Docker的APT仓库:
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
- 安装最新版本的Docker CE(社区版):
sudo apt update
sudo apt-get install docker-ce -y
- 验证Docker是否安装成功并运行:
sudo systemctl status docker

二、codeserver构建
2.1 构建codeserver环境的docker容器
新建Dockerfile文件内容如下:
from centos:latest
# 一、配置centos源环境
RUN cd /etc/yum.repos.d/ ; mkdir bak; mv *.repo /etc/yum.repos.d/bak
COPY aliyum.repo /etc/yum.repos.d/
# 二、安装code-server
ADD code-server-4.92.2.tar /opt/install/
RUN yum install -y curl automake make gcc gcc-c++ cmake unzip wget bzip2 libtool perl file diffutils bzip2-devel zlib-devel gdb && yum clean all
WORKDIR /opt/install/code-server-4.92.2/
COPY rpm/code-server-4.92.2-amd64.rpm /root/.cache/code-server/
RUN bash -x install.sh
# 三、安装code-server关于C++在线开发的插件
COPY install /opt/install
RUN code-server --install-extension /opt/install/MS-CEINTL.vscode-language-pack-zh-hans-1.92.2024081409.vsix
RUN code-server --install-extension /opt/install/ms-vscode.cmake-tools-1.20.6.vsix
RUN code-server --install-extension /opt/install/ms-vscode.cpptools-1.22.3@linux-x64.vsix
RUN code-server --install-extension /opt/install/twxs.cmake-0.0.17.vsix
RUN mkdir -p /root/workspace
EXPOSE 8080
CMD ["sh","-c" ,"code-server -w /root/workspace"]
镜像的构建一共分为三个步骤。
- 第一步:配置centos的源环境,为了方便使用yum在线安装必须的相关环境。
aliyum.repo的文件内容如下:
# CentOS-Base.repo
#
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client. You should use this for CentOS updates
# unless you are manually picking other mirrors.
#
# If the mirrorlist= does not work for you, as a fall back you can try the
# remarked out baseurl= line instead.
#
#[base]
name=CentOS-$releasever - Base - mirrors.aliyun.com
#failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/BaseOS/$basearch/os/http://mirrors.aliyuncs.com/centos/$releasever/BaseOS/$basearch/os/http://mirrors.cloud.aliyuncs.com/centos/$releasever/BaseOS/$basearch/os/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras - mirrors.aliyun.com
#failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/extras/$basearch/os/http://mirrors.aliyuncs.com/centos/$releasever/extras/$basearch/os/http://mirrors.cloud.aliyuncs.com/centos/$releasever/extras/$basearch/os/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus - mirrors.aliyun.com
#failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/centosplus/$basearch/os/http://mirrors.aliyuncs.com/centos/$releasever/centosplus/$basearch/os/http://mirrors.cloud.aliyuncs.com/centos/$releasever/centosplus/$basearch/os/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official[PowerTools]
name=CentOS-$releasever - PowerTools - mirrors.aliyun.com
#failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/PowerTools/$basearch/os/http://mirrors.aliyuncs.com/centos/$releasever/PowerTools/$basearch/os/http://mirrors.cloud.aliyuncs.com/centos/$releasever/PowerTools/$basearch/os/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official[AppStream]
name=CentOS-$releasever - AppStream - mirrors.aliyun.com
#failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/AppStream/$basearch/os/http://mirrors.aliyuncs.com/centos/$releasever/AppStream/$basearch/os/http://mirrors.cloud.aliyuncs.com/centos/$releasever/AppStream/$basearch/os/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official
- 第二步:安装code-server由于code-server安装需要下载rpm包,我提前下载在code-server安装的时候就不需要在下载了。
下载地址:https://github.com/coder/code-server/releases
下载:code-server-4.92.2-amd64.rpm和code-server-4.92.2-linux-amd64.tar.gz

第三步:安装关于C++开发的常用插件,这里的开发环境主要是针对CMakeLists.txt的环境。并且使用默认系统的研发环境进行研发,如果使用其他的版本的G++和gcc需要自己更新版本。
插件下载请第三章,
安装以下插件。

第四步:配置环境。
2.2 构建docker镜像
docker build -t code-server:0.1 .
2.3 运行docker
说明–privileged参数在使用gdb调试的时候使用,否则会报错。
-v 映射开发空间,是因为开发的时候如果主机重启,开发的内容会清空,所以这两个参数一定需要设置。
code-server的密码是通过环境变量PASSWORD设置的。所以在启动docker时候我们可以设置PASSWORD的值作为进入code-server服务的密码。
docker run -d -p 8080:8080 -v [宿主机地址]:/root/workspace -E PASSWROD=123456 --privileged code-server:0.1
注意有一些版本的code-server的绑定的端口以及绑定地址参数会不同,因此需要自己注意看看文档。
2.4 运行展示
在地址栏中输入http://xxxx.xxx.xxx.xxx:8080 输入登录密码就可以使用codeserver了。

三、构建codeserver中的c++开发环境
3.1 插件下载
- vscode插件市场地址
https://marketplace.visualstudio.com/vscode

- Chinese (Simplified) (简体中文) Language Pack for Visual Studio Code
https://marketplace.visualstudio.com/items?itemName=MS-CEINTL.vscode-language-pack-zh-hans

- C/C++
https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools

- cmake
https://marketplace.visualstudio.com/items?itemName=twxs.cmake

- cmake tools
https://marketplace.visualstudio.com/items?itemName=ms-vscode.cmake-tools

3.2 插件安装
codeserver的插件安装命令如下
code-server --install-extension codelldb-x86_64-linux.vsix
四、其他知识
4.2 code-server配置config.yml
code-server 的 --config 选项允许你指定一个配置文件(通常是 config.yml),用于自定义 code-server 的各种行为。以下是 config.yml 配置文件的常用选项和说明:
4.2.1 常用配置选项
-
bind-addr: 指定
code-server监听的地址和端口。bind-addr: 0.0.0.0:80800.0.0.0表示监听所有网络接口,可以改为特定的 IP 地址。8080是端口号,你可以根据需要更改。
-
auth: 配置访问的认证方式。
auth: passwordpassword: 使用密码认证。none: 不使用认证(不建议在生产环境中使用)。
-
password: 在使用密码认证时,设置访问密码。
password: mypassword -
cert 和 cert-key: 配置 SSL/TLS 证书,用于 HTTPS 连接。
cert: /path/to/your/cert.pem cert-key: /path/to/your/key.pem -
disable-telemetry: 禁用
code-server的遥测数据收集。disable-telemetry: true -
disable-update-check: 禁用自动更新检查。
disable-update-check: true -
proxy-domain: 配置代理域名,用于反向代理设置。
proxy-domain: my.domain.com -
working-directory: 指定启动时的工作目录。
working-directory: /path/to/directory
4.2.2 示例配置文件
以下是一个完整的 config.yml 示例:
bind-addr: 0.0.0.0:8080
auth: password
password: mypassword
cert: /path/to/your/cert.pem
cert-key: /path/to/your/key.pem
disable-telemetry: true
disable-update-check: true
working-directory: /home/user/projects
4.2.3 使用 --config 启动
启动 code-server 时使用 --config 选项指定配置文件:
code-server --config /path/to/config.yml
通过这个配置文件,你可以灵活地控制 code-server 的行为,包括监听地址、认证方式、证书配置等。
4.1 交叉编译配置环境变量
CROSS_COMPILE = arm-linux-
AS = $(CROSS_COMPILE)as
LD = $(CROSS_COMPILE)ld
CC = $(CROSS_COMPILE)gcc
CPP = $(CC) -E
AR = $(CROSS_COMPILE)ar
NM = $(CROSS_COMPILE)nm
/etc/sysconfig/docker
4.3 CMAKE tools 启动参数传递
在~/.local/share/code-server/User/setting.json
中设置
{
........ "cmake.debugConfig":{"args":["参数"]}
......
}
相关文章:
C++在线开发环境搭建(WEBIDE)
C在线开发环境搭建 一、环境说明1.1 系统基础环境说明1.1 docker-ce社区版安装 二、codeserver构建2.1 构建codeserver环境的docker容器2.2 构建docker镜像2.3 运行docker2.4 运行展示 三、构建codeserver中的c开发环境3.1 插件下载3.2 插件安装 四、其他知识4.2 code-server配…...
重磅首发!大语言模型LLM学习路线图来了!
ChatGPT的出现在全球掀起了AI大模型的浪潮,2023年可以被称为AI元年,AI大模型以一种野蛮的方式,闯入你我的生活之中。 从问答对话到辅助编程,从图画解析到自主创作,AI所展现出来的能力,超出了多数人的预料&…...
neo4j关系的创建删除 图的删除
关系的创建和删除 关系创建 CREATE (:Person {name:"jack"})-[:LOVE]->(:Person {name:"Rose"})已有这个关系时,merge不起效果 MERGE (:Person {name:"Jack" })-[:LOVE]->(:Person {name:"Rose"})关系兼顾节点和关…...
【WRF运行第三期】服务器上运行WRF模型(官网案例-Hurricane Matthew)
【WRF运行第三期】运行WRF模型(官网案例-Hurricane Matthew) 官网案例-Hurricane Matthew介绍0 创建DATA文件夹1 WPS预处理1.1 解压GRIB数据(ungrib.exe)1.1.1 解压GRIB数据---GFS(Matthew案例研究数据)1.1…...
基于springboot的书店图书销售管理系统的设计与实现 (含源码+sql+视频导入教程)
👉文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1 、功能描述 基于springboot的书店图书销售管理系统拥有三个角色 管理员:用户管理、角色管理、权限管理、店铺管理等商家:图书管理、上架图书、访问量统计、销售总额统计、订单…...
Spring MVC 基本配置步骤 总结
1.简介 本文记录Spring MVC基本项目拉起配置步骤。 2.步骤 在pom.xml中导入依赖: <dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>6.0.6</version><scope>…...
HCIP--以太网交换安全(一)
以太网交换安全概述:以太网交换安全是一系列技术和策略的集合,旨在保护以太网交换机免受各种网络攻击和威胁。 端口隔离 一、端口隔离概述: 作用:可以实现同一个VLAN内端口的隔离 优势: 端口隔离功能为用户提供了更…...
PyQt5中关于QLineEdit的空输入报错的简单处理
PyQt5中关于QLineEdit的空输入报错的简单处理 前言分析原因解决办法总结 前言 在PyQt5的界面中对于数据的输入,最常用的就是QLineEdit控件,该控件作为基本的数据输入控件已经能满足我们的简单使用。在使用过程,出现闪退情况,发现…...
【前端】ES12:ES12新特性
文章目录 1 逻辑赋值操作符2 数字分隔符3 replaceAll4 Promise.any5 WeakRef6 FinalizationRegistry 1 逻辑赋值操作符 逻辑赋值操作符 ??、&&、 ||。 let a true let b false //a && b //false a || b ; //true console.log(a)let obj {name:"ker…...
语音识别(非实时)
1.环境 python :3.10.14 2.完整代码 import whisper #whisper import wave # 使用wave库可读、写wav类型的音频文件 import pyaudio # 使用pyaudio库可以进行录音,播放,生成wav文件 def record(time): # 录音程序# 定义数据流块CHUNK …...
【计算机网络】--URL统一资源定位符
一个网站地址实例 scheme://host.domain:port/path/filename scheme——定义因特网服务的类型,常见的类型是http host——定义域主机(http的默认主机是www) domain———定义因特网的域名,例如,jinyun.fun …...
在成都建“圈”五年,鲲鹏让智能化新风吹遍巴蜀大地
科技圈里流行着“互联网四大中心”的说法,即南边的深圳、东边的杭州、北边的北京和西边的成都。 深圳、杭州、北京几乎没有太大的争议,这里是国内著名的互联网公司聚集地,有着国内排行前三的互联网企业总部,单单一个北京西二旗就…...
Unity图形用户界面!*★,°*:.☆( ̄▽ ̄)/$:*.°★* 。(万字解析)
Unity 3D GUI 简介 游戏开发过程中,开发人员往往会通过制作大量的图形用户界面( Graphical User Interface,GUI )来增强游戏与玩家的交互性。 Unity 3D 中的图形系统分为 OnGUI、NGUI、UGUI等,这些类型的图形系统内容…...
【JAVA报错已解决】Java.lang.NullPointerException
🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 专栏介绍 在软件开发和日常使用中,BUG是不可避免的。本专栏致力于为广大开发者和技术爱好者提供一个关于BUG解决的经…...
JSON 教程
JSON 教程 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title> </head> …...
HBase 的基本架构 详解
HBase 是一个分布式的、面向列的数据库,构建在 HDFS(Hadoop Distributed File System)之上,提供高效的随机读写操作。为了全面理解 HBase 的基础架构,需要从逻辑架构、物理存储、组件之间的交互、数据管理和底层设计出…...
crypt.h:No such file or directory报错处理
crypt.h:No such file or directory 报错处理 前言:本文初编辑于2024年9月27日 CSDN主页:https://blog.csdn.net/rvdgdsva 博客园主页:https://www.cnblogs.com/hassle 博客园本文链接: 大!萌࿰…...
网络消费维权的9个常见法律问题
一、忘记付尾款,定金能否退还? 不能。消费者在网络提交订单后,合同即成立。合同成立后,消费者的义务为按时付款。若消费者在支付定金后未能支付尾款,即未能履行付款义务,会导致合同无法履行,构…...
detectron2是怎么建立模型的?以SparseInst代码为例
看SparseInst论文发现论文里有些地方没讲清楚;遂找SparseInst源码来看模型结构 我选择从推理代码来找模型结构: 经探索,在SparseInst代码里,推理需要执行代码 python demo.py --config-file configs/sparse_inst_r50_base.yaml …...
kafka监控平台Kafdrop:使用记录
背景 AI的发展真是太方便了,让它给我推荐一款轻量级,没有学习曲线的kafka监控平台,它就给我推荐这一款。用了一下果然没有一点学习曲线。 目前已经满足了我的需求,可视化界面,topic、消息、消费者group信息以及消费情…...
RTX5 | 消息队列实战 - 中断与线程间的数据桥梁
1. 消息队列在RTX5中的核心价值 第一次接触RTX5的消息队列功能时,我正被一个串口通信问题困扰:每次收到数据包都要在中断里完整解析,导致系统响应变慢。后来发现,消息队列就像快递柜——中断服务程序(ISR)是快递员,只需…...
革新性图表创作:Mermaid Live Editor如何重构技术可视化工作流
革新性图表创作:Mermaid Live Editor如何重构技术可视化工作流 【免费下载链接】mermaid-live-editor Edit, preview and share mermaid charts/diagrams. New implementation of the live editor. 项目地址: https://gitcode.com/GitHub_Trending/me/mermaid-liv…...
Qwen2.5-14B-Instruct开源大模型实战:像素剧本圣殿8-Bit UI部署详解
Qwen2.5-14B-Instruct开源大模型实战:像素剧本圣殿8-Bit UI部署详解 1. 项目概览 像素剧本圣殿(Pixel Script Temple)是一款基于Qwen2.5-14B-Instruct大模型深度微调的专业剧本创作工具。这个独特的创作环境将强大的AI推理能力与复古8-Bit视…...
ImageGlass:轻量级全能图像查看器的效率革命
ImageGlass:轻量级全能图像查看器的效率革命 【免费下载链接】ImageGlass 🏞 A lightweight, versatile image viewer 项目地址: https://gitcode.com/gh_mirrors/im/ImageGlass 价值定位:重新定义图像浏览体验 在数字内容爆炸的时代…...
电视盒子播放视频总出错?TVBoxOSC让所有格式文件流畅播放
电视盒子播放视频总出错?TVBoxOSC让所有格式文件流畅播放 【免费下载链接】TVBoxOSC TVBoxOSC - 一个基于第三方项目的代码库,用于电视盒子的控制和管理。 项目地址: https://gitcode.com/GitHub_Trending/tv/TVBoxOSC 你是否遇到过电视盒子播放视…...
【实战】从理论到代码:用Python实现相位一致性特征提取
1. 相位一致性特征提取的核心原理 相位一致性(Phase Congruency)是计算机视觉领域一种强大的特征提取方法,它从根本上改变了传统边缘检测的思路。我第一次接触这个概念是在处理一组光照条件差异很大的工业检测图像时,当时用Sobel和…...
从实验室到生活场景:近红外脑成像(fNIRS)如何重塑认知研究边界
1. 从实验室到客厅:fNIRS如何打破认知研究的围墙 十年前我第一次接触近红外脑成像设备时,它还是个需要固定在三脚架上的"庞然大物",被试必须像雕塑般保持静止。如今看着学生戴着LUMO设备在操场自由活动时采集数据,这种技…...
如何将 iPhone 实况照片传输到电脑:四种最佳方法
实况照片是一种有趣的拍摄形式,它不仅能捕捉静态画面,还能记录下带有动态和声音的短暂瞬间。轻按一张实况照片,它就会 “动起来”,还原拍摄时几秒的动态画面和现场声音。 如果你已经掌握了普通照片从 iPhone 传输到电脑的方法&…...
5大核心能力解析:YimMenu如何重塑GTA5游戏体验与安全防护
5大核心能力解析:YimMenu如何重塑GTA5游戏体验与安全防护 【免费下载链接】YimMenu YimMenu, a GTA V menu protecting against a wide ranges of the public crashes and improving the overall experience. 项目地址: https://gitcode.com/GitHub_Trending/yi/Y…...
JekyllNet .Net 版本的Jekyll , 你博客 文档的静态生成利器 。
若君只欲一篇而尽知 JekyllNet 今可如何用,此文即其总册。 项目入口 仓库地址:https://github.com/JekyllNet/JekyllNet文档网站:https://jekyllnet.helpGitHub Pages 站点入口(仓库 Pages):https://jekyllnet.github.io/JekyllNe…...
