【Linux】Ubuntu下进行C语言编程

前言

需要您会使用Windows下cd切换目录的基本命令,否则请先自学相关知识,之后再阅读本文。

0 基础命令

介绍最基础的Linux终端命令。

  • su - root:切换到root用户(不用也可以)
  • ls:查看当前目录位置
  • cd:切换目录

利用这几个命令,我们先切换到某个文件夹

  1. su - rootls

输入以下指令序列

su - root
// 输入root密码

如果您是第一次安装Ubuntu系统,没有初始的root账户,请输入

sudo passwd

然后设置密码,再输入su - root进入root账户下。

ls指令,能够查看当前目录下的文件,当然,您可能什么都得不到,这代表该目录下没有文件或目录。

以下是我的演示截图:
在这里插入图片描述
2. cd切换目录命令,这与Windows下是一样的,比如..代表上级目录,.代表当前目录,这些知识不再说明。

上一步我们进入了root用户的根目录,现在我们切换到一个别的目录,输入

cd /   

再输入

ls

你可以查看当前路径下的文件或文件夹,应该会有home目录,我们再输入

cd home/

进入到了家目录,之后再使用ls,你会看见一个与你的账户名一样的目录,进入它,依然使用cd命令。

以下是我的演示截图:
在这里插入图片描述
其中jht是我的个人账户名,你的和我的应该不一样,因为我们的账户名不一样。

  1. 创建一个文件夹(名称为test)mkdir test

现在我们进入到了你自己的目录下了,输入

mkdir test

创建一个名字为test的文件夹,再输入ls,你会发现创建成功了。

以下是我的演示截图:
在这里插入图片描述
3. 使用cd test/进入文件夹,创建一个C语言文件touch p1.c

接下来,进入这个文件夹,创建一个C语言文件,名称为p1.c,可以依次输入下面两条指令。

cd test/
touch p1.c

然后使用ls查看结果。

以下是我的演示截图:
在这里插入图片描述

1 Vim的基础命令

之前我们创建好了一个C语言文件p1.c,现在,我们要学会使用vim编辑器进行编辑。

  1. 输入vim,按回车
    在这里插入图片描述

如果你得到的不是这个界面,应该会提示vim没有安装,按照Linux的提示安装vim就好。
例如使用以下指令安装vim编辑器,中途可能需要你输入y进行确认。

apt install vim  

事实上,Linux会提示你使用这条指令的,它也可能是sudo apt install <……>

安装完成vim,你就能看见上面的界面了,之后我们继续进行。

  1. i,就可以进入插入模式,你就可以编辑文件了。

比如我随意输入一些字符:
在这里插入图片描述
3. 编辑好文件后,按Esc退出插入模式,再按:(英文冒号),进入命令模式
在这里插入图片描述
4. 输入wq <文件名>,可以保存,例如:wq aaa
在这里插入图片描述
然后就可以看到生成了文件aaa
在这里插入图片描述
这个过程,我们创建了一个名字为aaa的文件,我们也在里面编辑了一些内容,这就像在Windows使用记事本一样。

  1. 使用vim <文件名>,可以进入当前文件进行编辑,例如vim aaa,按回车
    在这里插入图片描述
  2. 退出vim编辑器,使用:q(注意,不能在插入模式下使用,如果当前是插入模式,需要esc退出再输入:q
    在这里插入图片描述
    另外,你打开了aaa文件后,如果进行编辑之后想保存,再使用:wq即可。

2 C语言编程

之前创建了p1.c文件,也学会了Vim编辑器的基本使用,现在我们编写一个C语言程序并运行它。

  1. 输入vim p1.c打开vim编辑器,再输入i进入编辑模式

  2. 编辑一些C代码,Esc退出插入模式
    在这里插入图片描述

  3. 输入:wq保存文件

  4. 编译C语言文件,gcc p1.c -o <可执行文件名>,例如你可以输入gcc p1.c -o p1
    在这里插入图片描述
    可以看到生成了绿色显示的可执行文件p1

如果提示没有gcc,请自行搜索如何安装。

  1. 运行p1,输入命令./p1
    在这里插入图片描述
    可以看到,输出了Hello!,也就是说我们成功了!

3 C Language Auto complete

以下内容是进阶,不适合初学者,初次接触Linux请不要尝试以下内容!

我们需要安装一些vim插件,实现自动补全,以提高开发效率。

参考以下内容安装即可:

【Linux】Ubuntu 18下安装Vim自动补全插件YouCompleteMe

即便如此,依然会有很多问题出现,例如:

若提示Searching Python 3.6 libraries... ERROR: Python headers are missing in /usr/include/python3.6m,应该使用命令sudo apt-get install python3.6-dev解决。

Python版本和环境变量的设置,也请读者根据Linux提示信息,自行查阅资料。

重点关注:本文基于Ubuntu 18.04,默认python3版本就是3.6,这会省很多麻烦,修改默认python3版本会造成很多麻烦的……

更多的Linux和Vim命令,请自行查阅相关的Documentation学习。

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

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

相关文章

【Linux】Ubuntu 18下安装Vim自动补全插件YouCompleteMe(可高速下载安装)

前言 本文写于2020年10月&#xff0c;如果你多年后看见这篇文章&#xff0c;方法可能已经失效&#xff0c;但是请牢记&#xff0c;尽量下载你所处时代的最新版本的软件&#xff0c;会减少很多麻烦。 摆正心态 即便按照本文操作&#xff0c;由于你的系统状态和我的不一样&…

【操作系统】进程调度(1):FIFO(先进先出)算法 原理与实践

0 前言 本文基于书籍《Operating System&#xff1a;Three Easy Pieces》。 中译本&#xff1a;《操作系统导论》&#xff0c;中译本质量还可以&#xff0c;但是英文版后来的更新&#xff0c;中文版目前没有进行同步更新&#xff08;写下此文的时间是2020年10月&#xff09; 1…

【操作系统】进程调度(2a):SJF(短任务优先) 算法 原理与实践

0 前言 接上一篇文章&#xff1a;进程调度&#xff08;1&#xff09;&#xff1a;FIFO&#xff08;先进先出&#xff09;算法 原理与实践 1 前提铺垫 请参考上一篇文章的前提铺垫部分&#xff0c;本文与之完全一致。 2 SJF 原理 SJF&#xff08;Shortest Job First&#x…

【操作系统】进程调度(2b):STCF(最短完成时间优先) 算法 原理与实践

0 前言 接上一篇文章&#xff1a;进程调度&#xff08;2a&#xff09;&#xff1a;SJF&#xff08;短任务优先&#xff09; 算法 原理与实践 1 前提铺垫 与上一篇同。 2 STCF 原理 STCF&#xff08;Shortest Time-to-Completion First&#xff09;最短完成时间优先。 2.1…

【操作系统】进程调度(3):RR(轮转) 算法 原理与实践

0 前言 接上一篇文章&#xff1a;进程调度&#xff08;2b&#xff09;&#xff1a;STCF&#xff08;最短完成时间优先&#xff09; 算法 原理与实践 1 前提铺垫 除了与上一篇相同的&#xff0c;这里介绍新的基础知识。 1.1 三种类型的程序 计算密集型&#xff08;CPU导向&…

【操作系统】进程调度(4):I/O、不可预测的运行时间

0 前言 上一篇文章&#xff1a;进程调度&#xff08;3&#xff09;&#xff1a;RR&#xff08;轮转&#xff09; 算法 原理与实践 1 前提铺垫 与上一篇同。 2 引入I/O操作 之前我们一直提及的是计算密集型程序&#xff0c;现在我们的程序可以进行I/O交互了&#xff0c;它会…

【计算机系统设计】重点 · 学习笔记(0)

HDL等硬件描述语言&#xff0c;例如Verilog&#xff0c;是并行的&#xff0c;而不像软件一样的顺序执行的&#xff0c;例如很多的always块&#xff0c;initial块&#xff0c;都是并行的&#xff0c;他们会转换为硬件电路&#xff0c;而在仿真的时候&#xff0c;他们也是并发执行…

【计算机系统设计】学习笔记(1)03,04

疑问&#xff1a;sw和lw指令&#xff0c;获取的地址不是4的整倍数&#xff08;字节不对齐&#xff09;的时候&#xff0c;应该如何处理&#xff1f; 东南大学MOCC 计算机系统综合设计 03 03-1 寄存器 介绍了MIPS寄存器&#xff0c;32个寄存器的基本功能和使用&#xff0c;注…

【期末考试】计算机网络、网络及其计算 考试重点

个人简介&#xff1a;Java领域新星创作者&#xff1b;阿里云技术博主、星级博主、专家博主&#xff1b;正在Java学习的路上摸爬滚打&#xff0c;记录学习的过程~ 个人主页&#xff1a;.29.的博客 学习社区&#xff1a;进去逛一逛~ 计算机网络及其计算 期末考点 &#x1f680;数…

【计算机系统设计】学习笔记(2)

5.1 对于CPU与外界的读写&#xff0c;只有load和store指令能够做&#xff0c;所以很多情况下&#xff0c;直接通过bypass跳过去了&#xff0c;或者闲置&#xff0c;尤其对于流水线&#xff0c;更应该直接跳过而不是闲置&#xff08;如何设计?&#xff09;。 另一方面&#xf…

【计算机系统设计】重点 · 学习笔记(1)(资源消耗)

这一点先浅显理解&#xff0c;就好比我要造一个楼 我是用现成的材料造节省?还是需要用XX材料&#xff0c;但是XX材料还需要现成材料造呢&#xff1f; 这也不一定&#xff0c;但是基本来说&#xff0c;如果使用现有资源&#xff0c;能够直接用&#xff0c;那其实是最好不过的…

【计算机系统设计】重点 · 学习笔记(0)(数据通路设计思想)

重点1&#xff1a;05.1 设计思想 设计思想至关重要&#xff0c;这决定了你能不能自己根据ISA设计出来CPU架构&#xff0c;而不是只是抄别人的&#xff0c;也决定你能不能完成自己的设计更优化的架构。 描述方式约定 6 数据通路 ≠ Verilog代码 我们构建的数据通路&#…

【计算机系统设计】实践笔记(1)数据通路构建:取指部件分析

0 核心思想 根据指令功能&#xff0c;分析出需求&#xff0c;从而得出需要的部件、控制信号以及其他设计。 1. 针对的指令 取指阶段&#xff0c;针对所有指令&#xff0c;任何指令都需要进行取指。 2 功能&#xff08;需求&#xff09;分析 CPU的内部采用的是字节编址&…

【计算机系统设计】实践笔记(2)数据通路构建:第一类R型指令分析(1)

0 回顾 上一次实践笔记&#xff08;0&#xff09;我们实现了一个最简单的&#xff0c;能够每个上升沿4的PC。 我们最需要关注的就是器件功能的独立性&#xff0c;避免内外功能混杂&#xff0c;同时一定要注意脑中有电路&#xff08;RTL级描述的抽象电路而不是实际的门级电路&…

接口的抽象与实现(概述)

概述 我们先建立一个整体的接口格局观&#xff0c;建立知识地图&#xff0c;了解接口的大概面貌。 整体来说&#xff0c;就这点事儿&#xff0c;4个箭头代表了所有&#xff01; 三个器件4个箭头 把这几个都想明白&#xff0c;就完事儿了。 第一层&#xff08;顶层&#xf…

从功能层次,阐述CPU、接口和外设之间的交互

我们从功能抽象层次&#xff0c;阐述一下CPU、接口芯片和外设之间的交互情况&#xff1a; 三个器件4个箭头 我们依次将其描述清楚。 数据 箭头①和③ CPU给接口可以发送数据&#xff0c;然后接口暂存数据&#xff0c;之后再发给外设&#xff0c;这就是数据缓冲。 发送的数…

Vivado工程文件分类

只需要在创建的时候&#xff0c;选择自定义路径即可&#xff0c;最好在原有的new文件夹下新建文件夹。 至于路径的匹配&#xff0c;可以自己试试&#xff0c;在原有默认new下创建文件夹&#xff0c;选中新的文件夹后&#xff0c;内部的Verilog文件可以访问外部new文件夹的文件&…

【微机原理与接口技术】具体芯片(1)并行接口8255A(1):全局观

并行接口8255A 首先&#xff0c;它是传输并行数据的&#xff0c;与CPU一样&#xff0c;然后&#xff0c;它是可编程的&#xff0c;也是多功能的&#xff0c;CPU可以对其进行一些控制。 管脚 先从最宏观层面分类 一部分引脚与外设相连一部分引脚与CPU相连GND和Vcc 注意&…

【算法】【殊途同归】搜索算法之(深度优先 || 广度优先) (约束条件 || 限界函数)

对于所谓的分支限界法和回溯法&#xff0c;我们完全可以更加灵活&#xff0c;请看表格。 深度优先广度优先约束条件限界函数算法策略√√回溯法局部判定√√√分支限界法局部判定√√√加限界的回溯法局部判定√枚举法全局判定√枚举法全局判定 前两种是我们常见的&#xff0c…