怎样在Linux下编程?需要什么技术?
怎样在Linux下编程?需要什么技术?
-
前言
分享好玩科技,探索未知世界。大家好,我是drinkingcode。针对如何学习Linux编程,分享一下作为过来人的经验,希望可以帮助到大家。
环境搭建
如果要在Linux下进行编程,那么首先我们需要有Linux操作系统的环境。通常的做法是下载并安装VMware,然后在VMware下安装Linux操作系统的发行版,比如Ubuntu,CentOS等。当一切安装就绪后,你就拥有一个Linux的编程环境了。如果大家需要相关资料,可以关注私信我,百度网盘分享给大家。(仅供个人参考学习)

入门
掌握C语言
环境搭建好之后,接下来我们需要掌握一门编程语言。由于在Linux下提供的系统API都是针对C语言的,所以想要进行Linux编程,就需要掌握C语言的基本使用。针对C语言的学习,给推荐大家一本《C和指针》

熟悉Linux命令
在Linux下编程,很多时候都是通过命令来进行操作的,ls命令,cd命令等。所以掌握常用 的Linux命令之后,你就能更方便地去使用Linux系统。对于Linux命令的掌握,大家只需要选择一些常用的命令来进行学习就可以,至于平时不常见的命令,到时遇到再去选择性学习。在这里推荐一本学习Linux命令的书籍《鸟哥的Linux私房菜》基础学习篇

熟悉vim
有了前三步的基础,接下来,我们就可以手动来写C语言了。在Linux下,C语言的编辑器为vim。但是想要在vim上编写代码,就需要了解vim基本命令的使用,因为vim的使用使用vim命令来进行交互的。当我们熟悉了vim命令的使用后,我们就可以自由自在地在Linux下编写我们的C语言代码啦,然后用gcc编译器编译我们写好C语言代码的文件,就可以得到可执行程序,运行可执行程序,就可以看到输出结果。

进阶
熟悉系统API
在入门阶段,我们掌握基本开发Linux程序的流程。但是在入门阶段中,我们编写的应用还不具备太大的实用意义,因为我们编写的程序并没有借助系统的API。所以在进阶阶段,我们需要做的就是借助Linux系统API,以便我们编写的应用发挥更大的威力,更具有实用的价值。
在Linux系统中,比如读取一个文件的内容或者把服务器建立一个连接等,都需要调用Linux系统API才能实现。如何掌握这些API呢?在这里,推荐搭建阅读《UNIX环境高级编程》,里边介绍了文件I/O,进程间通信等知识。这样我们就可以借助系统API让应用发挥更大的价值。

掌握Makefile
当我们编写一个程序的时候,为了让其层次更清晰,通常会把不同部分的程序放在不同的文件或文件夹中,但这些文件之后又是有相互依赖关系的,如何在gcc编译时告知他们之间的顺序呢?此时,就需要我们掌握Makefile的基本语法,然后用Makefile来告知gcc如何编译。在这里推荐一本《GNU make》。

总结
以上就是我说认为在Linux编程学习中几个比较重要的节点,予以罗列出来,希望对于想要学习Linux编程的同学有一定的借鉴作用。如果你喜欢我的文章或对你有帮助,欢迎点赞转发!
关注我,我是drinkingcode,分享好玩科技,探索未知世界!
2019-10-25 21:47:26 -
在Linux下编程那么必定要使用Linux的命令行终端vim了,要熟练掌握各种vim命令。
Linux终端命令
在Linux下打开命令行终端:Ctrl +Alt + T
浏览目录或者文件:ls 后面可以加很多参数,-l 、-a、-h等
进入某个目录:cd + 路径
返回到上层目录:cd ..
切换到上次cd 进入的目录:cd -
创建一个文件:touch
a.c
创建一个目录:mkdir mydir
创建和删除目录
- mkdir 目录名 创建一个目录
- rm -r 目录名 删除一个目录
创建一个文件
- touch filename.txt 创建一个文件
- echo "string" >> filename.txt 向文件中写入字符串
- cat filename 查看文件的内容
复制 cp
- cp srcfile.txt dstfile.txt 文件的复制
- cp srcfile dstfile -r 文件夹的复制
移动文件或修改名字(mv)
- mv srcfile dstname 修改名字
- mv filename 路径名 移动文件或文件夹
vim 编辑器的使用
创建一个文本文件并进入编辑模式:vi
filename.txt
vim三种模式之间的转换
1) 命令行模式
esc: 进入命令行模式
yy:复制当前一行
nyy:从当前行开始复制n行
:3, 6yy:从第三行复制到第六行
dd:删除当前行到剪切板
ndd: 删除n行到剪切板
p:在光标的下一行粘贴
P:在光标的上一行粘贴
u:撤销
Ctrl +r:反撤销
2) 插入模式(编辑模式)
i :进入插入模式光标之前插入
a:光标之后插入
I :行首插入
A:行尾插入
o:光标下一行插入
O : 光标上一行插入
s:删除光标所在字符并进入插入模式
S:删除光标所在行并进入插入模式
r:修改光标所在字符
R:替换光标所在行,直到按下esc键结束
0:光标移动到行首
$:光标移动到行尾
gg: 光标移动到文件开头
G: 光标移动到文件结尾
cc:删除当前行并进入插入模式(删除的内容放在剪贴板中)
yw:将光标所在单词copy到剪贴板
3) 底行模式
Shift +::进入底行模式
:wp:保存并退出
:q:不保存退出
:q!:强制退出
学习Linux需要掌握的知识
c语言基础
要熟悉基本的C语法,数据类型、函数、指针等。
文件IO
要掌握文件IO相关的系统调用函数,对文件进行打开、关闭、读写等操作。
数据结构
熟练掌握顺序存储与链式存储等存储结构:链表、队列、栈、二叉树等。
进程和线程
理清进程和线程的区别,掌握进程和线程的创建方法,熟练运用线程和进程相关的系统调用函数。
网络编程
理清TCP/IP协议,会使用socket创建网络套接字,掌握网络通信的方法,熟悉各种服务器模型。
2019-06-06 22:44:01 -
在Linux下编程那么必定要使用Linux的命令行终端vim了,要熟练掌握各种vim命令。
Linux终端命令
在Linux下打开命令行终端:Ctrl +Alt + T
浏览目录或者文件:ls 后面可以加很多参数,-l 、-a、-h等
进入某个目录:cd + 路径
返回到上层目录:cd ..
切换到上次cd 进入的目录:cd -
创建一个文件:touch
a.c
创建一个目录:mkdir mydir
创建和删除目录
mkdir 目录名 创建一个目录
rm -r 目录名 删除一个目录
创建一个文件
touch filename.txt 创建一个文件
echo \"string\" \u003e\u003e filename.txt 向文件中写入字符串
cat filename 查看文件的内容
复制 cp
cp srcfile.txt dstfile.txt 文件的复制
cp srcfile dstfile -r 文件夹的复制
移动文件或修改名字(mv)
mv srcfile dstname 修改名字
mv filename 路径名 移动文件或文件夹
vim 编辑器的使用
创建一个文本文件并进入编辑模式:vi
filename.txt
vim三种模式之间的转换
1) 命令行模式
esc: 进入命令行模式
yy:复制当前一行
nyy:从当前行开始复制n行
:3, 6yy:从第三行复制到第六行
dd:删除当前行到剪切板
ndd: 删除n行到剪切板
p:在光标的下一行粘贴
P:在光标的上一行粘贴
u:撤销
Ctrl +r:反撤销
2) 插入模式(编辑模式)
i :进入插入模式光标之前插入
a:光标之后插入
I :行首插入
A:行尾插入
o:光标下一行插入
O : 光标上一行插入
s:删除光标所在字符并进入插入模式
S:删除光标所在行并进入插入模式
r:修改光标所在字符
R:替换光标所在行,直到按下esc键结束
0:光标移动到行首
$:光标移动到行尾
gg: 光标移动到文件开头
G: 光标移动到文件结尾
cc:删除当前行并进入插入模式(删除的内容放在剪贴板中)
yw:将光标所在单词copy到剪贴板
3) 底行模式
Shift +::进入底行模式
:wp:保存并退出
:q:不保存退出
:q!:强制退出
学习Linux需要掌握的知识
c语言基础
要熟悉基本的C语法,数据类型、函数、指针等。
文件IO
要掌握文件IO相关的系统调用函数,对文件进行打开、关闭、读写等操作。
数据结构
熟练掌握顺序存储与链式存储等存储结构:链表、队列、栈、二叉树等。
进程和线程
理清进程和线程的区别,掌握进程和线程的创建方法,熟练运用线程和进程相关的系统调用函数。
网络编程
理清TCP/IP协议,会使用socket创建网络套接字,掌握网络通信的方法,熟悉各种服务器模型。
2019-06-06 22:44:01 -
Linux是一个开源的操作系统,它最初仅仅只是芬兰Helsinki大学的一位年轻学生Linux Torvalds作为爱好开发的。Linus对Minix(一个小型的UNIX系统)很感兴趣,并且决定开发一个比Minix更好的系统。
Linux下编程可分为Linux C语言编程和Linux底层内核编程
Linux C语言编程需要掌握技术
1.Linux之io系统编程
2.Linux
进程间通信
3.Linux
多线程编程
4.Linux
网络编程
Linux底层内核编程需要掌握技术
1.Uboot原理和编程
2.Kernel
启动流程和移植
3.Linux
驱动编程
以上就是Linux下的编程和所需学习的技术,这只是其中的一个大纲,具体还包括很多模块的技术,希望对你了解有帮助!
2019-03-17 23:09:16 -
一、熟悉Linux基本操作和系统管理;
二、熟悉vim基本操作和man命令;
三、找一本厚点的C语言教材(比如\u003cc语言程序设计第二版\u003e),精读+实现每一个例子,做每一个习题;
四、熟悉计算机基础
1.买一本二手\u003c深入理解计算机系统(csapp)\u003e(影印或原版),精读+实现每一个例子,做每一个习题;
2.看网课cmu的15-213,做每一个作业,完成全部六个lab;
五、补课数学课
微积分、线性代数、概率和数理统计
离散数学
六、算法
1.买一本clrs\u003c算法导论intro algorithms\u003e(影印或原版),精读+实现每一个例题+做每一个习题
2.上网课,cs61b或Princeton的algorithms I\u0026II
七、操作系统
1.买二手书\u003c操作系统概念\u003e\u003c现代操作系统\u003e\u003c操作系统:原理和实现\u003e(影印或原版),粗读前两本,最后一本精读+做每一个例子和习题。
2.上网课MIT6.828,做每一个作业,完成全部6个lab。
八、数据库
参照七。
九、网络
参照七。
十、云计算
1.直接上网课分布式系统
2.直接上网课cloud computing(以及advanced)。
----
十一大数据方向(线性代数和统计高分)
上网课
十二machine learning方向(线代和统计高分)
网课(推荐Stanford cs229+230,Andrew Ng吴恩达)
2018-12-14 09:50:42 -
编程不局限某个系统,方法基本一致
编程很多技术,技能基本类似,不完全依赖于操作系统,比如WEB编程。局部区别在于工具,不过工具很多也跨平台了。差别更多是系统调用层面,这个层面如果准寻POSIX也是兼容的。
目的不同,需要学习内容会有差异
要做什么如,运维:Shell,Python;WEB开发:HTML,CSS,JavaScript,数据库(MySQL,MongoDB);服务端:Java,Python;游戏:unity,C++,Javascript等等。
要熟练掌握某些工具
如类似编辑工具:vim/vi vscode,Atom,Sublime text 其中一种,还有一些测试、性能分析工具等等。
2018-12-03 11:48:08 -
在Linux下进行编程需要什么技术?看来你是没有接触过Linux操作系统啊。
很多人想到Linux就想到什么呢?想到黑乎乎的命令行?一堆自己完全没有接触过的命令,然后想到自己一脸懵逼的样子?
哈哈哈哈,你实在是想得太多了。
首先你需要选择一个正确的发行版,或者说选择一个比较好用的Linux发行版。我个人推荐初次接触Linux操作系统的人,使用深度开发的深度Linux操作系统。
当你进入到深度Linux操作系统的桌面之后,你就会发现原来是这样的一个系统啊,和windows有什么区别呀?
然后你该用什么编辑器就用什么编辑器,该用什么就用什么,没有任何的关系的。
至于编程本身需要的技术和操作系统没有关系。
当然如果你对Linux操作系统有了更进一步的研究,你还需要去尝试一下不同的发行版本,比如说由红帽公司推出的cent OS操作系统。这是一个非常常见的运行在服务器上的操作系统,当然你接触这样的操作系统的话是必须使用命令行了。
还有ubuntu的Linux操作系统,也是需要去尝试一下的。因为现在有很多的服务器上开始使用ubuntu的操作系统了。
如果你的Linux水平达到了一定的境界,你一定要尝试一下arch Linux操作系统。当你能够顺利的在虚拟机上把它给安装上,说明你的Linux操作系统已经达到一定的境界了。
当你使用的发行版足够多之后,你就会发现其实各种各样的Linux操作系统都是差不多的。只不过在自带的环境方面各有特色而已。
总之不要害怕,也不要胆怯,放手去干 just do it。
各位看官,你们是怎么接触到Linux操作系统并使用它的呢?欢迎在评论区中讨论。
喜欢我的话给我点赞并关注哦。
2018-11-29 20:52:25 -
Linux下编程,除了需要掌握编程语言之外,需要的技术大概就是构建编程环境了。和搞开发工作一样,你要先搞清楚自己的需求。比如你要搞清楚自己要使用哪些语言、面向什么场景(web、分布式或者是嵌入式),如果有团队的话,要考虑工程文件的互用性(就是你编写的代码和生成的中间文件,别人拿过来就可以直接用),然后就是你自己的使用习惯问题了。
因为我不从事嵌入式开发,所以我就但从应用软件开发的角度描述一下,构建Linux下编程的工作环境大概有这么几个方面:
选择集成开发环境IDE
Linux下最常见的IDE,针对Java的有Eclipse和IntelliJ IDEA,针对Web的有WebStorm等等。它们的特点是将编辑、调试、执行等功能全部集成到一个大的软件里,一次安装好,一般不需要过多折腾。比较适合编程的新手入门使用。但是IDE的缺点就是过于笨重,占用资源太多,用起来总感觉不是那么的流畅。
或者选择文本编辑器+插件组合
Linux平台下的优秀的文本编辑器太多了,有秒天秒地的Emacs、Vim,还有小巧的nano,图形化的编辑器有Gedit、Mousepad以及微软的VS Code。不想使用IDE的朋友可以在这些编辑器内编辑源码,再利用插件进行编译、调试。在这里我用到的是VS Code,它的插件极其丰富,支持多种语言编程,并且运行速度也很快。我自己为了方便编写Markdown时插入图片,还开发了一个粘贴图片到图床的小插件。使用code开发的优点是和Eclipse、IDEA一样,工程文件可以跨平台。
选择一个棒棒的代码托管平台做版本控制
Github可能是不二之选,但是一些不想开源的核心代码放到公网上可能会有泄露的风险。如果那天加班加的昏昏沉沉一个不小心把核心代码搞出去了就得不偿失了。除了Github之外,还可以自己搭建一个开源的Gitlab托管平台,把代码放到内网服务器上,这样在方便版本控制的同时也规避了代码泄露的风险。
选择一个灵巧的方案做产品部署
目前比较火的是使用Docker进行产品部署,不过这个已经快走出编程的范围了,我们是研发和产品各出一部分人来搞这一块。Docker的方便之处在于它的容器化机制,可以很方便的把所有部署文件从一个服务器转移到另一个服务器,迁移、升级、运维管理都比较方便。
总之,在Linux下编程需要的只有构建编程环境的技术。当然了,Linux的操作基本功还是要扎实的,不然怎么完成编程工作呢。编程环境的构建是在自己一步步摸索中不断磨合完善的,你可以先试着用一套方法,在这个基础上慢慢改进,以求得最适合自己的环境。
2019-07-11 23:39:42 -
如果懂c语言,就可以在LINUX下编程和编译,不过不如win下容易调试。
2018-11-29 17:08:40 -
直接写一下最重要。
技术是以后的事!
2018-11-29 17:52:10