基于LLVM的C编译器--lcc——以CLion用SSH连接WSL Ubuntu22.04为例

news2025/4/8 13:37:05
  • Windows 10 22H2
  • CLion 2022.3.1
  • Ubuntu 20.04 (Microsoft Store内的WSL发行版)

一、下载WSL,换源,切换到WSL2

1.1 保证windows版本

在设置->系统->关于中查看
在这里插入图片描述

  • 必须是win10及以上
  • 对于x64系统:版本1903或更高版本,以及内部版本18362或更高版本
  • 对于ARM64系统:2004或更高版本,内部版本19041或更高
  • 低于18362的内部版本不支持WSL2

1.2 开启必要设置

依次点击
控制面板–>程序–>程序和功能–>启用或关闭Windows功能

在这里插入图片描述
然后勾选
√ Hyper-V
√ 适用于Windows的Linux子系统
√ 虚拟机平台
(docker也是需要开启这些选项)
在这里插入图片描述
在这里插入图片描述


1.3 下载WSL Ubuntu22.04

直接在Microsoft Store搜索Ubuntu,下载这个版本即可。
在这里插入图片描述
然后可以在开始界面->最近添加里面找到,点开后,设置好用户名和密码,就可以使用Ubuntu命令行了。
在这里插入图片描述


1.4 操作文件

更推荐使用Linux命令行操作,但是如果想要界面化一点,windows文件管理器进去操作也未尝不可(不过可能会有权限不足的情况)
在这里插入图片描述


1.4 换国内源

注意下载什么版本的Ubuntu就要用对应的国内源,有的博文没有说自己是什么版本的,注意甄别。

正确的做法是:
在清华大学开源软件镜像站的Ubuntu镜像中选择自己的Ubuntu版本
在这里插入图片描述

1.4.1 命令替换(未亲测)

直接在命令行输入命令执行即可

1.4.2 手动替换

Ubuntu命令行中

cd ~
cd /etc/apt
sudo cp sources.list sources.list.bak	# 备份一下源文件
vim sources.list

进入编辑界面后,按下gg,会跳转到文本的开头。再按下dG会删光光标后的所有行的内容。这样所有内容都被清空了。

复制手动替换部分的内容,鼠标移动到命令行界面后右键点一下,就可以粘贴上去。(或者按i、a、o也可。)
然后按ESC,再按下:wq!就可以退出啦。

当然,你也可以尝试一下在windows文件管理器中,在 /etc/apt中找到sources.list,直接用记事本打开写入,虽然保存时可能会遇到权限错误。


1.5 更新镜像源列表sources.list

更新仓库和软件,使用apt或者apt-get都行

sudo apt update
sudo apt upgrade
sudo apt-get update
sudo apt-get upgrade

1.6 切换WSL2

wsl2的设计与wsl1有很大的不同。它包括一个真正的Linux内核,而不仅仅是一个兼容层。但是你wsl1和wsl2是互通的,

win+R打开cmdwsl -l -v会显示你的各wsl版本。
在这里插入图片描述
注意到VERSION列,我这里已经是2,你的如果是1,可以通过wsl --set-version <你的用的发行版> 2升级为wsl2,这需要几分钟的时间

wsl --set-version Ubuntu-22.04 2

如果要将WSL 2设置为默认体系结构,则可以使用以下命令

wsl --set-default-version 2


二、下载构建必须的库,下载基于LLVM的C编译器–lcc,进行构建

2.1 安装cmake、gcc、clang(以及可选的build-essentials软件包)

sudo apt-get install cmake gcc clang gdb build-essential

2.2 基于LLVM的C编译器–lcc编译步骤

2.2.1 安装llvm14。(注意,ubuntu22.04应该自带llvm14了,所以该语句不会再装一遍)
sudo apt-get -y install llvm-14

但是这样还不行,没有llvm-config等工具
在这里插入图片描述
所以再装一个llvm工具,项目的readme没有说这点

sudo apt-get -y install llvm

在这里插入图片描述

2.2.2 Clone仓库,进行构建

对readme的内容做了些修改:

git clone https://github.com/iiicp/lcc.git

# CMake进行构建
cd lcc
mkdir build
cd build 
cmake .. -DLLVM_DIR="Path to Your LLVM CMake dir"
# eg: cmake .. -DLLVM_DIR=/usr/lib/llvm-14/lib/cmake/llvm

在这里插入图片描述
注意如果你遇到像我这样的missing错误,需要再下载一个zlib库(参考:《Ubuntu20.04编译安装Opencv4.5.5安装包报错:Could NOT find ZLIB (missing: ZLIB_LIBRARY ZLIB_INCLUDE_DIR)》)。

sudo apt install zlib1g-dev

在这里插入图片描述
最后大功告成!

make
./lcc ../tests/c/stmt.c	# 使用lcc

在这里插入图片描述


三、CLion用SSH连接WSL

主要参考:《Windows 10 配置Clion+WSL2环境》的第二步-配置WSL(Ubuntu)
也参考了一点点《Clion使用:在windows下结合wsl进行linux开发》,但似乎没啥用。

然后要注意的一点是CLion2022还没有对Ubuntu22.04优化好,导致现在只能用SSH远程连接,而不是直接识别出WSL。

CLion SSH远程连接后的文件会在/tmp中有个缓存。


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

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

相关文章

ArcGIS基础实验操作100例--实验63由图片创建点符号

本实验专栏参考自汤国安教授《地理信息系统基础实验操作100例》一书 实验平台&#xff1a;ArcGIS 10.6 实验数据&#xff1a;请访问实验1&#xff08;传送门&#xff09; 高级编辑篇--实验63 由图片创建点符号 目录 一、实验背景 二、实验数据 三、实验步骤 &#xff08;1&…

Java设计模式中代理模式是什么/JDK动态代理分为哪些,静态代理又怎么实现,又适合哪些场景

继续整理记录这段时间来的收获&#xff0c;详细代码可在我的Gitee仓库SpringBoot克隆下载学习使用&#xff01; 5.结构型模式 5.1 概述 根据如何将类或对象按某种布局组成更大的结构&#xff0c;分为类结构模式和对象结构模式&#xff0c;前者采用继承机制来组织接口和类&am…

视频序列对比学习

前言 视频embedding化也即表征有很多实际的应用场景&#xff0c;比如文本-视频 pair的检索等等。由于视频一般来说较长&#xff0c;所以对于给定的一段话&#xff0c;其中的某些sentence句子一般对应着视频中某几个clip片段&#xff0c;之前常规的做法都是去匹配所有的sentence…

人工服务、人工智能和分析是联络中心的主要趋势

数字联络中心提供商 IPI 宣布了其对 2023 年的预测。IPI 非常重视提供卓越的客户联系&#xff0c;认为未来一年将由以下趋势定义&#xff1a;专注于人工服务&#xff1b;增加对人工智能和自动化的采用&#xff1b;以及更多地使用数据和分析。 关注人性化服务 据 IPI 称&#…

实现QTreeView、QTableView子项中的复选框勾选/取消勾选功能

1.前言本博文所说的技术点适用于同时满足下面条件的所有视图类&#xff1a;模型类从 QAbstractItemModel派生。代理类从QStyledItemDelegate派生。故本博文所说的技术点也适用于QTableView。2.需求提出基于Qt的model/view framework技术&#xff0c;利用QTreeView树视图实现业务…

【异常】SpringSecurity登录失败:Full authentication is required to access this resource

一、报错提示 SpringSecurity提示如下内容&#xff1a; 2023-01-07 06:08:51.843 [cdi-ids-commonprovider] [http-nio-9092-exec-14] WARN com.desaysv.tsp.logic.ids.config.MyAuthenticationEntryPoint - 登录失败&#xff1a;Full authentication is required to acces…

基于Java+Jsp+SpringMVC漫威手办商城系统设计和实现

基于JavaJspSpringMVC漫威手办商城系统设计和实现 博主介绍&#xff1a;5年java开发经验&#xff0c;专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java毕设项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言 文末获取源码联…

2023 年值得关注的 7 大人工智能 (AI) 技术趋势

&#x1f482; 个人网站:【海拥】【摸鱼游戏】【神级源码资源网】&#x1f91f; 前端学习课程&#xff1a;&#x1f449;【28个案例趣学前端】【400个JS面试题】&#x1f485; 想寻找共同学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼学习交流群】 人工智能 (AI) 已经接…

图数据库Neo4j实战(全网最详细教程)

1.图数据库Neo4j介绍 1.1 什么是图数据库&#xff08;graph database&#xff09; 随着社交、电商、金融、零售、物联网等行业的快速发展&#xff0c;现实社会织起了了一张庞大而复杂的关系网&#xff0c;传统数据库很难处理关系运算。大数据行业需要处理的数据之间的关系随数…

《Go 并发数据结构和算法实践》学习笔记 Day 1

极客时间21天打卡活动&#xff1a;2023.1.16-2.5 链表的接口&#xff1a; 插入元素删除元素读取元素 并发化改造&#xff1a; 并发插入元素并发删除元素并发读取元素 锁&#xff0c;每个节点都定义一把锁。 并发插入 区域猜想&#xff1a;如果某个CPU 锁定了某个节点&…

U3D客户端框架(资源管理篇)之资源热更新管理器 ResourceManager

一、资源热更新管理器模块设计 1.热更新是什么&#xff1f; 游戏或者软件内的 美术/脚本代码等资源 发生变化时&#xff0c;无需下载客户端重新进行安装&#xff0c;而是在应用程序启动的情况下&#xff0c;通过比对本地资源与CDN资源的MD5码&#xff0c;如果本地资源与CDN中…

Visual Code 打开方式添加到右键菜单

一、配置右键打开 文件 注册表找到分支&#xff1a; 计算机\HKEY_CLASSES_ROOT\*\shell 在这个里面 shell 分支里右键添加项 VisualCode&#xff08;这个可以随便起&#xff0c;便于识别就行&#xff09; 在 VisualCode 分支里右键添加项 Command&#xff08;必须这个名&am…

【C++】双指针用法

快慢指针/同向指针 [0,i)的数据代表处理好的数据[i,j)的数据是那些处理过但不需要的数据[j,array.length)区间的数据为接下来待处理的数据。 以上三个区间的开和闭需要根据题目要求定义&#xff0c;但是要保持一致。 用此方法处理过的数组&#xff0c;处理好的数据相对位置会保…

(mysql)Waiting for table metadata lock

MySQL5.5 中引入了 metadata lock. 顾名思义&#xff0c;metadata lock 不是为了保护表中的数据的&#xff0c;而是保护 database objects(元数据)的。包括表结构、schema、存储过程、函数、触发器、mysql的调度事件(events). 要理解 metadata lock 最重要的一点就是&#xff1…

python连接mysql之PyMySQL的基本使用

一、PyMySQL的基本使用使用pymysql 直接连接mysqlPyMySQL安装pip3 install pymysqlimport pymysql# 连接数据库&#xff0c;创建连接对象connection # 连接对象作用是&#xff1a;连接数据库、发送数据库信息、处理回滚操作&#xff08;查询中断时&#xff0c;数据库回到最初状…

关于Docker如何安装nginx

目录 1.Nginx 1.2. 安装nginx 2.容器之间相互通信 2.1.两个容器在同一网段 2.2.两个容器在不同网段 1.Nginx Nginx也是一款服务器&#xff0c;我们常用它做如&#xff1a;反向代理、负载均衡、动态与静态资源的分离的工作 反向代理&#xff1a;反向代理&#xff08;Revers…

java spring下载步骤

首先 我们要下载一下 spring 我们访问spring的官网 地址非常的好记 spring.io project进入官网我们选择 project>Spring Framework 进入界面 我们选择 Learn 下面就会给我们列举出版本 这边建议大家下5.3.24 首先 要下GA的 因为这表示它比较稳定 其次 版本比较适中 大部分…

黑客动态播报 | 2023年网络攻击趋势

今天是跨入2023年大门的第一个工作日,作为开年的第一篇内容,我们从安全说起。      自2020年勒索软件攻击呈爆发式增长以来,全球企业都经历了“噩梦”般的三年,层出不穷的手段和无孔不入的方式,都让我们绷紧了每一条神经。      而在这三年里,我们并不是疲于应对,通过不…

过年了,怎么样批量爬取某东商品信息,并做可视化

前言 马上就要过年了&#xff0c;大家都在屯年货了网络上商品信息太多&#xff0c;不知道如何选择&#xff0c;今天&#xff0c;我们就用python爬取商品信息&#xff0c;并做可视化。 环境使用 python 3.9pycharm 模块使用 requestsseleniumtime谷歌驱动 说明 一、谷歌驱动…

前端学习之BootStrap

前言 Bootstrap 最初是由 mdo 和 fat 于 2010 年中旬创造就职于 Twitter 时创造的。在成为开源框架之前&#xff0c;Bootstrap 被称为 Twitter Blueprint。经过几个月的开发&#xff0c;Twitter 举办了首届黑客周&#xff08;Hack Week&#xff09;&#xff0c;该项目获得了爆…