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信息以及消费情…...
idea大量爆红问题解决
问题描述 在学习和工作中,idea是程序员不可缺少的一个工具,但是突然在有些时候就会出现大量爆红的问题,发现无法跳转,无论是关机重启或者是替换root都无法解决 就是如上所展示的问题,但是程序依然可以启动。 问题解决…...
基于大模型的 UI 自动化系统
基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...
Unity3D中Gfx.WaitForPresent优化方案
前言 在Unity中,Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染(即CPU被阻塞),这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案: 对惹,这里有一个游戏开发交流小组&…...
Leetcode 3577. Count the Number of Computer Unlocking Permutations
Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...
srs linux
下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935,SRS管理页面端口是8080,可…...
反射获取方法和属性
Java反射获取方法 在Java中,反射(Reflection)是一种强大的机制,允许程序在运行时访问和操作类的内部属性和方法。通过反射,可以动态地创建对象、调用方法、改变属性值,这在很多Java框架中如Spring和Hiberna…...
浅谈不同二分算法的查找情况
二分算法原理比较简单,但是实际的算法模板却有很多,这一切都源于二分查找问题中的复杂情况和二分算法的边界处理,以下是博主对一些二分算法查找的情况分析。 需要说明的是,以下二分算法都是基于有序序列为升序有序的情况…...
ArcGIS Pro制作水平横向图例+多级标注
今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作:ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等(ArcGIS出图图例8大技巧),那这次我们看看ArcGIS Pro如何更加快捷的操作。…...
C++八股 —— 单例模式
文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全(Thread Safety) 线程安全是指在多线程环境下,某个函数、类或代码片段能够被多个线程同时调用时,仍能保证数据的一致性和逻辑的正确性…...
2025季度云服务器排行榜
在全球云服务器市场,各厂商的排名和地位并非一成不变,而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势,对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析: 一、全球“三巨头”…...
