使用Mingw64在CLion中搭建Linux开发环境

news2024/10/7 7:26:53

1.前言:
博主本来一直是在Visual Studio 2017中使用C语言编写程序,但有个问题是Visual Studio 2017默认使用自带的Windows SDK和编译器,我想使用POSIX文件操作就不行(因为Windows中没有Linux SDK),虽然Windows SDK也有很多可以替代Linux SDK的库,但我还是想使用原汁原味的Linux SDK,但我又不想在虚拟机中进行开发,所以我尝试在Visual Studio 2017中配置Mingw64,并且将默认的编译器更换成gcc编译器,但是均失败了,而且网上几乎没有在Visual Studio 2017中配置Mingw64的教程,折腾了两天过后,我还是选择放弃Visual Studio 2017,选择了对配置Mingw64更友好的CLion.

2.Mingw64的下载和安装
通过在Windows中配置Mingw64,我们就可以在CLion中使用Linux SDK了。
2.1 下载
Mingw64的下载地址
在这里插入图片描述
各种版本的区别:
x86_64 表示64位x86架构,i686表示32位x86架构,其他区别可以自行百度。
下载后进行解压,记住这个解压地址,配置环境变量时要用:
在这里插入图片描述
2.2 安装:
然后在Windows中配置Mingw64的环境变量:右键桌面图标“此电脑”,选择属性->高级系统设置->高级->环境变量,再选择系统变量中的Path,点击编辑,然后在最后一行添加E:\mingw64\bin即可。

测试Mingw64在Windows中是否安装成功:
打开CMD,输入gcc -v,若显示了很多配置信息则表示你已经配置成功了,此时已经可以在Windows的记事本中编写C语言代码,再使用这里的gcc进行编译以及运行了,和在Linux中使用gcc没有区别,此时你的Windows已经有了Linux SDK、gcc、gdb了。

3.CLion的下载和安装
CLion的历史版本下载
博主使用的是CLion 2020.3 x64
安装过程请自行百度。不过在创建第一个项目的时候注意一下:
在这里插入图片描述

4.检查CLion是否已经自动载入了我们在Windows下配置的Mingw64:
点击菜单栏中的"File",选择"Settings":
在这里插入图片描述
此时就表示我们的开发环境已经搭建成功了。
然后就可以编写代码了。

5.要注意的几点:
5.1 要注意的是CLion默认使用了CMake,所以工程文件中会有一个叫CMakeLists.txt的配置文件:
在这里插入图片描述
这里表示我自定义了一个04.16的文件夹存放我写的test.c,但是现阶段我们编写的程序比较简单,完全可以不用管CMakeLists.txt这个配置文件,我们每次在项目中右键新建.c文件后,系统会自动在CMakeLists.txt中添加这个.c文件。

5.2 现在我的程序可以正常运行,那如果我故意将CMakeLists.txt改错会出现什么呢?此时,就会报CMake相关的错误:
在这里插入图片描述
尽管此时我的程序没问题,只是CMakeLists.txt配置文件有问题。然后我又将CMakeLists.txt改回来,又运行,但是现在还是报错:
在这里插入图片描述
所以我们要注意的是,修改CMakeLists.txt后一定要右键项目,点击Reload CMake Project:
在这里插入图片描述
此时再去运行程序就没问题了。

5.3 解决控制台输出中文乱码问题:
第一步:
在这里插入图片描述
第二步:
回到代码编辑页面,快捷键Ctrl+Shift+Alt+/,弹出如下界面:
在这里插入图片描述
选择Registry,然后去掉勾选:
在这里插入图片描述
注意,右下角的字符集编码我们并没有改成GBK,仍然是UTF-8:
在这里插入图片描述

5.4 还要注意一点的就是编写代码时的相对路径的问题,比如我现在的工程目录结构是:
在这里插入图片描述
我现在要在代码中使用test.txt,就应该这样写:
在这里插入图片描述
因为编译文件放在cmake-build-debug这个文件夹中,所以应该先回到和cmake-build-debug同一级的目录,再去找test.c.

6.最后我们再来看看我们是否真的把Linux SDK引入到了我们的项目中,将鼠标箭头放在库文件上:
在这里插入图片描述
可以看到现在我们并没有使用Windows的SDK,而是使用的自己安装的Linux SDK.

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

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

相关文章

【Kafka-架构及基本原理】Kafka生产者、消费者、Broker原理解析 Kafka原理流程图

【Kafka-架构及基本原理】Kafka生产者、消费者、Broker原理解析 & Kafka原理流程图1)Kafka原理1.1.生产者流程细节1.2.Broker 的存储流程细节1.3.消费者流程细节2)Kafka读写流程图1)Kafka原理 1.1.生产者流程细节 1、生产者发送消息到 …

计算机毕业设计源码整合大全_kaic

以下为具体单个列表(单个下载在我主页搜索即可): 1:计算机专业-ASP(499套) ASP学生公寓管理系统的设计与实现(源代码论文).rar 1:计算机专业-ASP(499套) ASP学科建设设计(源代码论文).ra…

Clickhouse 引擎之MergeTree详解

分区详解 数据存储底层分布 # 数据在这个位置 rootfjj001:~# cd /var/lib/clickhouse/data rootfjj001:/var/lib/clickhouse/data# ls # 数据库 default system rootfjj001:/var/lib/clickhouse/data# cd default/ rootfjj001:/var/lib/clickhouse/data/default# ls #表 enu…

ASEMI代理AD8400ARZ10-REEL原装ADI车规级AD8226ARZ-R7

编辑:ll ASEMI代理AD8400ARZ10-REEL原装ADI车规级AD8226ARZ-R7 型号:AD8400ARZ10-REEL 品牌:ADI/亚德诺 封装:SOIC-8 批号:2023 引脚数量:8 安装类型:表面贴装型 AD8400ARZ10-REEL汽车芯…

Zabbix监控系统——附详细步骤和图解

文章目录一、Zabbix概述1、使用zabbix的原因2、zabbix的概念和构成3、zabbix 监控原理:4、zabbix的程序组件二、安装 zabbix 5.01、部署 zabbix 服务端的操作步骤2、实例操作:部署 zabbix 服务端3、部署 zabbix 客户端4、实例操作:部署 zabbi…

【Linux】揭开套接字编程的神秘面纱(下)

​🌠 作者:阿亮joy. 🎆专栏:《学会Linux》 🎇 座右铭:每个优秀的人都有一段沉默的时光,那段时光是付出了很多努力却得不到结果的日子,我们把它叫做扎根 目录👉前言&…

(二十三)槽函数的书写规则导致槽函数触发2次的问题

在创建QT的信号和槽时,经常无意间保留着QT书写槽函数的习惯,或者在QT设计界面直接右键【转到槽】去创建槽函数,但是后期需要用到disconnect时,又重新写了一遍connect函数,那么你会发现实际槽函数执行了2遍。 首先来看…

要在Ubuntu中查找进程的PID,可以使用pgrep或pidof命令。

一 查找进程 1.pgrep命令 pgrep命令可以根据进程名或其他属性查找进程的PID。例如,要查找名为"firefox"的进程的PID,可以在终端中输入以下命令: pgrep firefox如果有多个名为"firefox"的进程,pgrep命令将返…

互联网一个赛道只剩下几家,真要爆品

互联网一个赛道剩下几家,真要爆品 2017年的书,案例基本上是马后炮总结 趣讲大白话:说起来容易,做起来难 【趣讲信息科技136期】 **************************** 书中讲的范冰冰翻车了 书中不看好的线下渠道,现在成香饽饽…

面试篇-Java并发之CAS:掌握原理、优缺点和应用场景分析,避免竞态问题

1、CAS介绍及原理 多线程中的CAS(Compare-and-Swap)操作是一种常见的并发控制方法,用于实现原子性更新共享变量的值。其核心思想是通过比较内存地址上的值和期望值是否相等来确定是否可以进行更新操作,从而避免多线程条件下的竞态…

HMI实时显示网络摄像机监控画面——以海康威视网络摄像机为例

随着IOT技术的快速发展,网络摄像机快速应用于工业领域,结合其他智能设备建立一个智能系统,提高用户与机器设备之间的交互体验,帮助企业优化人员配置。 作为重要的可视化设备,HMI不仅可以采集现场设备数据,…

uniapp系列-使用uniapp携带收件人信息调用手机邮件应用发邮件的2种方案

背景描述 我们使用uniapp打包之后,某些情况下,需要使用uniapp打开手机其他应用去发邮件,携带对方email 信息以及主题信息等,那我们应该怎么处理呢? 方案一:使用uniapp标签-uni-link,注意这种方…

BGP实验(一)

实验要求: 1、As1存在两个环回,一个地址为192.168.1.0/24,该地址不能在任何协议中宣告, As3存在两个环回,.一个地址为192.168.2.0/24,该地址不能在任何协议中宣告, As1还有一个环回地址为10.1.1.0/24&…

研读Rust圣经解析——Rust learn-8(match,if-let简洁控制流,包管理)

研读Rust圣经解析——Rust learn-8(match,if-let简洁控制流,包管理)matchother和占位符_区别easy matchenum matchno valuematch innerOption matchmore better wayif-let整洁控制包管理模块(mod)拆分声明modpub公开use展开引用拆解模块结构m…

docker cmd

sudo docker run --gpus all --name uavrl1 themvs/uav_swarm_reinforcement_learning sudo docker p s-a 86850d5a9dc3 sudo docker run --gpus all --name uavrl12 uavrl:v1.2 ---------- 共享屏幕输入类似指令,实测可行 sudo docker run -it --nethost --ipc…

Leetcode每日一题——“轮转数组”

各位CSDN的uu们你们好呀,今天,小雅兰的内容是轮转数组,下面,让我们进入轮转数组的世界吧 小雅兰之前其实就已经写过了字符串旋转的问题了: C语言刷题(7)(字符串旋转问题&#xff09…

优化 Kafka 的生产者和消费者

背景 如今,分布式架构已经成为事实上的架构模范,这使得通过 REST API 和 消息中间件来降低微服务之间的耦合变得必然。就消息中间件而言,Apache Kafka 已经普遍存在于如今的分布式系统中。Apache Kafka 是一个强大的、分布式的、备份的消息服…

HBase高手之路5—HBase的JavaAPI编程

文章目录Hbase高手之路5—Hbase的JavaAPI编程一、需求与数据集二、准备工作1.下载安装Java2.下载安装Idea3.下载安装maven4.Maven配置国内的镜像库5.Idea使用自定义的maven配置6.创建一个maven测试项目7.创建所需要的包8.创建类文件,输入代码9.运行项目三、创建HBas…

【2023 年第十三届 MathorCup 高校数学建模挑战赛】A 题 量子计算机在信用评分卡组合优化中的应用 详细建模过程解析及代码实现

更新信息:2023-4-15 更新了代码 【2023 年第十三届 MathorCup 高校数学建模挑战赛】A 题 量子计算机在信用评分卡组合优化中的应用 更新信息:2023-4-15 更新了代码 1 题目 在银行信用卡或相关的贷款等业务中,对客户授信之前,需…

Linux程序的内存

要研究程序的运行环境,首先要弄明白程序与内存的关系。程序与内存的关系,好比鱼和水一般密不可分。内存是承载程序运行的介质,也是程序进行各种运算和表达的场所。了解程序如何使用内存,对程序本身的理解,以及后续章节…