您当前的位置:首页 > 电脑百科 > 程序开发 > 语言 > C/C++/C#

搭建Linux C语言开发环境

时间:2022-11-10 15:05:30  来源:知乎  作者:嵌入式er

linux开发环境上学习C语言,对于一个从零开始学习嵌入式的门外汉来说,是一个很好的选择,学习了C语言,又熟悉了Linux 操作系统。

1. 开发工具下载及安装:

虚拟机 VMware 10

下载地址:https://download3.vmware.com/software/wkst/file/VMware-workstation-full-10.0.0-1295980.exe

Ubuntu 12.04

下载地址:http://releases.ubuntu.com/12.04/

VMware虚拟机上安装在windows中的一个虚拟电脑的软件。因为我们需要用到linux的真实环境,又不能完全脱离windows的一些文件操作,再在虚拟机中安装Ubuntu 12.04系统。

安装步骤

 

注册

后一步要求输入许可证密钥,本站提供亲测可用的注册密钥,授权形式为批量,并且永不过期,即永久激活,注册码地址:http://www.ihacksoft.com/vmware-workstation-10-0.html

 

VMware Workstation 10另外一个特点是内置了简体中文,

如上图:在虚拟机上安装了ubuntu, windows和Linux切换起来非常方便

2. GCC编译环境的安装

1、gcc

要进行C语言编程,首先得有个C语言的编译器,Linux下常用的是GNU C Compiler gcc。

比如cpp-4.1和gcc-4.1、cpp-3.3和gcc-3.4

2、cpp

gcc要进行程序编译,首先需要进行一个预编译过程。该过程对程序源代码进行预处理。

3、libgcc1

gcc还依赖于libgcc1这个软件包。libgcc1是用于gcc软件自身的必须组件。

4、libc6

C语言程序要能够运行,需要一些运行时库文件和一些库文件操作命令。libc6这个软件包就是用来提供这些的。这个软件包几乎是Linux系统自带的,因为所有C程序的运行都离不开此软件包。

5、binutils

程序从源代码到可执行程序的过程中,必然需要一些工具来辅助完成。binutils软件包就是提供一些工具的,这个软件包提供下面这些非常有用的命令:

6、locales

这个软件包提供本地语言环境支持

虽然上面列了这么多必需的软件包,但实际上因为他们之间有依赖关系,所以在安装完系统后我们只需要输入下面一个命令:

apt-get install gcc

系统就会自动帮忙把这些软件包安装上。

2.在Ubuntu配置VIM配置编辑环境

编译和调试环境安装好了,该装编辑器了,VIM是个入门难,但用熟了会极大提高编辑效率的工具,其实入门也不算难,用一周基本长常用的20%的功能就都熟悉了,老样子用apt-get install vim安装,装好后运行vim命令,确保版本是7.1以上。装好后为了编辑方便,先启用语法高亮显示,自动缩进,显示行号等,用VIM编辑VIM的配置文件vim /etc/vim/vimrc,在末尾加上如下设置

1. syntax on

2. set autoindent

3. set cindent

4. set nu

先简单设置这些,以后再设置配色方案,自动提示,文件列表等功能,VI的使用,大家可以看看VI的中文手册

编写简单的C程序

我们先写一个统计字符个数的程序

 

然后编程程序,执行程序

 

3. vi编辑器的命令

(1)强制退出

底行命令:

:q!

(2)打开其他文件

底行命令:

:e 文件路径

:e! 文件路径 ---- 忽略修改

(3)读取其他文件内容到光标所在的下一行

底行命令:

:r 文件路径

(3)保存vi编辑器中的内容到另外的文件

底行命令:

:w 文件路径

(4)移动光标

h j k l ----- 左 下 上 右

(5)翻页

ctrl+u ------- 向前翻半页

ctrl+d -------- 向后翻半页

ctrl+b ------- 向前翻一页

ctrl+f -------- 向后翻一页

(6)移动光标

^:移动到光标所在的行的第一个非空格字符

Home键:移动到光标所在的行的第一个字符

$/End键:移动到光标所在的行的后一个字符

w:移动光标到下一个单词的首字母

b:移动光标到前一个单词的首字母

e:移动光标到下一个单词的尾字母

注:以上3个命令前加数字表示移动多少个单词

G:前面加数字移动到指定的行,不加数字移动到后一行

(7)设置行号

底行命令:

:set nu

(8)进入编辑模式

A:移动到本行末进入编辑模式

cw:删除光标所在位置到所在单词末尾的字符,进入编辑模式

c$:删除光标所在位置到本行行尾的字符,进入编辑模式

c^:删除本行行首到光标所在位置(不包括)的字符,进入编辑模式

(9)编辑模式下的按键操作

方向键移动光标

Home键:移动到本行第一个字符

End:移动到本行后一个字符

PageUp/PageDown:向上/向下翻页

退格键/del键:删除光标前一个/所在的字符

(10)删除(剪切)命令

dw:删除光标到所在单词尾的所有字符,包括单词后的空格键

de:删除光标到所在单词尾的所有字符,不包括单词后的空格键

d$:删除光标到所在行行尾的所有字符,包括光标

d^:删除光标所在行行首到光标的所有字符,不包括光标

dG:删除光标所在行到文件尾

dgg:删除文件开头到光标所在行

J:删除本行的后换行符,相当于将下一行合并到本行末尾

注:把上述命令的d改成c就会在完成操作后进入编辑模式

(11)撤销操作

u:撤销上一次的操作

U:撤销对当前行的上一次操作

ctrl+r:u的反操作

(12)拷贝命令

yw:拷贝光标到所在单词尾的所有字符,包括单词后的空格键

ye:拷贝光标到所在单词尾的所有字符,不包括单词后的空格键

y$:拷贝光标到所在行行尾的所有字符,包括光标

y^:拷贝光标所在行行首到光标的所有字符,不包括光标

yG:拷贝光标所在行到文件尾

ygg:拷贝文件开头到光标所在行

(13)查找文件内容

底行命令:

/word ---------- 在文件中向下查找word内容

?word ----------- 在文件中向上查找word内容

n/N:定位前一个/后一个查找到的内容

注:*可以快速查找光标所在的单词

查找的时候可以只查找单词开头部分或者结尾部分

the> ------- 以the结尾的单词

.可以代表一个任意字符

(14)替换文件内容

底行命令:

:s/old/new ----------- 将本行第一个old替换成new

:s/old/new/g ----------- 将本行所有old替换成new

:#,#s/old/new/g ------ 将(#,#)行所有old替换成new

:%s/old/new/g ------ 将文件中的所有old替换成new

可以在命令后加c让用户对每一次替换进行确认

(15)补充命令

% --------- 移动光标到配对的括号

. --------- 重复上一个命令

v ---------- 进入可视模式,选择的文本会被高亮,可以对选中的部分进行d(剪切),y(拷贝)操作

底行命令:

:vs 路径 ----------- 水平显示打开的文件

:sp 路径 ----------- 垂直显示打开的文件

ctrl+ww来在不同的文件之间切换

(16)打开多个文件的操作

vi 路径1 路径2 路径3 ...........

相关底行命令

:args ------------- 显示打开的所有文件

:next ------------- 切换到后一个文件

:prev ------------- 切换到前一个文件

:first ------------ 切换到第一个文件

:last ------------- 切换到后一个文件

ctrl+^可以立即切换到前一个操作的文件

4.总结:

其实编辑器除了用vi 还可以用gedit, dwrite, kate图形化编辑器,自己选择一个习惯的就行了,只是vi编辑工具在今后的终端上会经常用到,所以一般要求掌握它的用法。



Tags:C语言   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
C语言中的volatile:变量的易变性和内存访问的优化
概念:在C语言中,volatile是一个关键字,用于告诉编译器变量的值是易变的,可能会在意料之外的情况下发生改变,从而防止编译器对该变量的优化和缓存。volatile关键字用于修饰那些可...【详细内容】
2023-12-31  Search: C语言  点击:(67)  评论:(0)  加入收藏
C语言中的静态变量解析
一、引言在C语言中,变量的存储类别决定了变量在程序中的生命周期和可见性。静态变量是其中一种具有特殊属性的变量,它们在程序的执行过程中具有持久的生命周期,并且仅在其定义...【详细内容】
2023-12-29  Search: C语言  点击:(140)  评论:(0)  加入收藏
C语言变长参数及其陷阱
C 工具变长参数列表这部分解释了旧的 C 风格变长参数列表。了解这些内容很重要,因为你可能会在遗留代码中遇到它们。然而,在新代码中,你应该使用变参模板来实现类型安全的变长...【详细内容】
2023-12-15  Search: C语言  点击:(142)  评论:(0)  加入收藏
C语言代码:数字雨
在我们的日常生活中,雨水是我们经常遇到的一种自然现象。有时候,我们会在雨中漫步,欣赏那美丽的雨景。然而,在计算机世界里,我们如何用代码来模拟这种美丽的雨景呢?本文将通过一个...【详细内容】
2023-11-23  Search: C语言  点击:(160)  评论:(0)  加入收藏
拿捏C语言,就看这一篇!
嵌入式系统是我们日常生活中无处不在的一部分。从智能手机到家用电器,从汽车到医疗设备,嵌入式系统的应用范围广泛且不断增长。C语言是一种高效、简洁、灵活的编程语言,是嵌入...【详细内容】
2023-11-14  Search: C语言  点击:(223)  评论:(0)  加入收藏
Java为什么比C语言更加的受青睐?
Java和C语言都是广泛应用于软件开发领域的编程语言,然而Java在近年来越来越受到开发者的青睐。这主要归因于Java在以下几个方面的优势。跨平台性Java的跨平台性是其最显著的...【详细内容】
2023-11-09  Search: C语言  点击:(337)  评论:(0)  加入收藏
自学C语言,其最恐怖的地方是什么?
今天我们来聊聊关于自学C语言的事。首先得承认,这条路并不容易。学会C语言自学对很多人来说都是个不小的考验。这门编程语言的复杂性和一堆晦涩难懂的概念,让学习过程变得相当...【详细内容】
2023-11-03  Search: C语言  点击:(197)  评论:(0)  加入收藏
比C语言还快20%!Mojo首个大模型开放下载,性能达Python版250倍
明敏 发自 凹非寺量子位 公众号 | QbitAI专为AI而来的新语言Mojo,推理LLaMA2性能比Python提升250倍!比C语言也要快上20%。上周五才开放下载,Mojo这么快就自证实力了。要知道,之...【详细内容】
2023-09-13  Search: C语言  点击:(365)  评论:(0)  加入收藏
为什么C++无法彻底替代C语言?
随着时间的推移,编程语言的发展不断演进,新的工具和技术层出不穷。然而,在这个瞬息万变的编程世界中,有一对老朋友一直在默默地坚守着自己的位置:C 和 C++。这两门编程语言都拥有...【详细内容】
2023-09-11  Search: C语言  点击:(286)  评论:(0)  加入收藏
c语言中的预处理、宏、条件编译
在C程序中,以 # 开头的命令就是预处理命令,这些命令都是放在函数之外,而且一般都放在源文件的前面,如下面的两条命令:#include <stdio.h> #define PI 3.1415926宏可以看做是一些...【详细内容】
2023-09-08  Search: C语言  点击:(327)  评论:(0)  加入收藏
▌简易百科推荐
C++中的外部模板及其在当前编译文件中的实例化
在C++中,模板是一种泛型编程的工具,它允许程序员以一种类型无关的方式编写代码。然而,模板的一个常见问题是它们会导致编译时间增加,特别是在大型项目中,当多个源文件包含相同的...【详细内容】
2024-04-11  鲨鱼编程  微信公众号  Tags:C++   点击:(3)  评论:(0)  加入收藏
C++常见避坑指南
C++ 从入门到放弃?本文主要总结了在C++开发或review过程中常见易出错点做了归纳总结,希望借此能增进大家对C++的了解,减少编程出错,提升工作效率,也可以作为C++开发的避坑攻略。...【详细内容】
2024-04-03  腾讯技术工程    Tags:C++   点击:(6)  评论:(0)  加入收藏
C++ 之父反驳白宫警告:自诞生第一天起,C++ 的目标就一直是提高安全性
整理 | 郑丽媛上个月,美国白宫国家网络主任办公室(ONCD)在一份主题为《回到基础构件:通往安全软件之路》的 19 页 PDF 报告中,呼吁开发人员停止使用容易出现内存安全漏洞的编程语...【详细内容】
2024-03-25    CSDN  Tags:C++   点击:(5)  评论:(0)  加入收藏
八个 C++ 开源项目,帮助初学者进阶成长
通过参与或阅读开源项目的源代码,你可以获得丰富的实践机会。实际的项目代码比简单的教程更具挑战性,可以帮助你深入理解 C++ 的各种概念和技术。1.ThreadPool一个简单的 C++1...【详细内容】
2024-03-22  AI让生活更美好  微信公众号  Tags:C++   点击:(24)  评论:(0)  加入收藏
C# 中15个值得收藏的开源项目推荐
在开源的世界里,C# 编程语言也占有一席之地。这些开源项目涵盖了多个领域,从框架、库到工具,它们为C#开发者提供了丰富的资源和工具,帮助他们更高效地开发、测试和部署应用程序...【详细内容】
2024-03-20  程序员编程日记  微信公众号  Tags:C#   点击:(31)  评论:(0)  加入收藏
C#异步编程:Task.Run vs. async-await,掌握基础与高级用法
概述:C#中的异步编程有两主要方式:Task.Run用于在后台线程执行同步操作,而async-await更适用于清晰表达异步流程。基础用法展示了它们的简单应用,高级用法则演示了它们的结合使...【详细内容】
2024-03-09  架构师老卢  今日头条  Tags:C#   点击:(28)  评论:(0)  加入收藏
C++多线程编程:解锁性能与并发的奥秘
今天我们将深入探讨C++中的多线程编程,揭示多线程如何解锁性能潜力,提高程序的并发性能。什么是多线程?在计算机科学中,多线程是指一个进程(程序的执行实例)中的多个线程同时执行...【详细内容】
2024-02-03     AI让生活更美好  Tags:C++   点击:(70)  评论:(0)  加入收藏
C++代码优化攻略
今天我们将深入探讨C++性能优化的世界。在当今软件开发的浪潮中,高性能的代码是必不可少的。无论是开发桌面应用、移动应用,还是嵌入式系统,性能都是关键。1. 选择合适的数据结...【详细内容】
2024-01-26  AI让生活更美好  微信公众号  Tags:C++   点击:(117)  评论:(0)  加入收藏
C# 线程本地存储为什么线程间值不一样
为什么用 ThreadStatic 标记的字段,只有第一个线程拿到了初始值,其他线程都是默认值,让我能不能帮他解答一下,尼玛,我也不是神仙什么都懂,既然问了,那我试着帮他解答一下,也给后面类...【详细内容】
2024-01-26  一线码农聊技术  微信公众号  Tags:C#   点击:(70)  评论:(0)  加入收藏
C++质数检测器的设计与实现​
质数,作为数学中的一个基本概念,一直以其独特的性质吸引着众多研究者和爱好者。质数是指大于1的自然数中,除了1和它本身以外不再有其他因数的数。在实际应用中,质数检测也扮演着...【详细内容】
2024-01-15  鲨鱼编程  微信公众号  Tags:C++   点击:(117)  评论:(0)  加入收藏
站内最新
站内热门
站内头条