Navigation menu

新闻中心

怎样在Linux下编程?需要什么技术?

  

怎样在Linux下编程?需要什么技术?

  

怎样在Linux下编程?需要什么技术?

  

怎样在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,分享好玩科技,探索未知世界!

  其实和Windows下面编程流程差不多,唯一的区别就是你需要先熟悉一下Linux环境(毕竟没有Windows使用起来那么方便),其次,还有就是你需要熟悉一下常用的shell命令及vim等编辑器,下面我简单介绍一下:

  熟悉常用的Linux Shell命令:这个是使用Linux的基础,像常见的ls,cd,find,mdkir,rm,top,grep,sed,awk,su等,简化版的Linux就只Terminal终端而已,如果你连基本的命令都不会,就不要想着还能操作Linux:

  熟悉一下vim,emacs等编辑器的使用,可能在迷你版的Linux下,就只是一个vim编辑器,你所有的编程工作都只能在这个环境下进行,wq!命令,这个你会经常用到,如果是桌面版的,可能还有相关IDE可供使用:

  最后就是编程了,这个根据自己的编程语言安装对应的包或编译器就行(gcc,java,python等),无非就是vim编辑,命令行编译,调试运行而已(和windows平台可能会有差异),开始使用起来不舒服,后面熟悉后,也就没啥了,当然,有些IDE是跨平台的,也有Linux平台的版本,使用起来和windows的差异不会太大:

  在Linux下编程不需要什么特别的技术,你只需要掌握Linux操作系统的使用方法,然后在里面安装你所需要编程语言的IDE即可。

  Linux系统下是兼容大部分编译软件的,比如Java语言应用最广泛的是eclipse,它具备Linux版本,而且用起来和Windows下差别不大。

  Linux生态圈还有一款广为人知的可以写代码的软件,那就是vim,如果你在Linux下跑过C语言程序,那一定用过vi这个指令。它类似于Windows上的notepad,功能强大。

  Linux入门,个人推荐一本书:《Linux鸟叔的私房菜》。

  在Linux下编程那么必定要使用Linux的命令行终端vim了,要熟练掌握各种vim命令。

  在Linux下打开命令行终端:Ctrl +Alt + T

  浏览目录或者文件:ls 后面可以加很多参数,-l 、-a、-h等

  进入某个目录:cd + 路径

  返回到上层目录:cd ..

  切换到上次cd 进入的目录:cd -

  创建一个文件:touch

  a.c

  创建一个目录:mkdir mydir

  创建和删除目录

  创建一个文件

  复制 cp

  移动文件或修改名字(mv)

  创建一个文本文件并进入编辑模式: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!:强制退出

  c语言基础

  要熟悉基本的C语法,数据类型、函数、指针等。

  文件IO

  要掌握文件IO相关的系统调用函数,对文件进行打开、关闭、读写等操作。

  数据结构

  熟练掌握顺序存储与链式存储等存储结构:链表、队列、栈、二叉树等。

  进程和线程

  理清进程和线程的区别,掌握进程和线程的创建方法,熟练运用线程和进程相关的系统调用函数。

  网络编程

  理清TCP/IP协议,会使用socket创建网络套接字,掌握网络通信的方法,熟悉各种服务器模型。

  Linux下编程其实非常方便,Linux下了有完整的编辑、调试,编译,打包一栈式工具。

  当然需要有前提熟悉linux常用命令、熟悉shell环境、能适应纯命令行终端的使用(Xwindows环境不咋成熟,不建议)。然后虫虫给大家说说Linux编程的一些技术:

  Vim:vim是最常用的Linux编辑工具和linux IDE环境的母体,使用vim配合一些插件完全可以实现现代IDE环境下的绝大多数功能。

  主题:molokai(github:/tomasr/molokai),vim-colors-solarized

  插件:YouCompleteM自动补全(github:/Valloric/YouCompleteMe)

  浏览目录结构的插件nerdtree(github:/crooloose/nerdtree)

  其他有益插的vim工具推荐:

  vim-surround:删除、修改和添加 括号、引号、XML操作。

  matchit:用%在字符间跳转。

  tComment:快速注释、反注释代码。

  tabular:对齐。

  snipmate.vim:代码片段。

  vim-easymotion:定位。

  vim-instant-markdown: Markdown文档时预览。

  emacs是*unix体系最大强大的编辑器和操作系统(几乎可以做任何事情)

  emacs常用的插件推荐

  spacemacs vim和emacs功能的优势集合;

  dracula-theme 很靓的主题;

  更多的可以看github的这个仓库awesome-emacs(github :/emacs-tw/awesome-emacs)

  linux有强大的调试工具gdb。GDB可以让你调试一个程序,包括让程序在你希望的地方停下,此时 你可以查看变量,寄存器,内存及堆栈。更进一步你可以修改变量及内存值。原生支持c、c++、Fortran,rust、golang,通过插件可以支持其他语言。比如基于浏览器的扩展gdbgui(github:/cs01/gdbgui)

  make是*nix下最强大的链接和编译工具,基于Makefiles的配置可以实现对大规模项目的自动编译和编译,可以大家减轻开发人员的编译劳动。

  screen、Tmux和byobu等工具也是码农们必不可少的工具,这些虫虫文章中有过专门介绍,在此不再赘述。

  基于需求和码农的语言环境,Linux下也有大量的工具来满足需求,这也是虫虫文章涉猎的领域之一,关注虫虫可以学习并且接受虫虫最新文章介绍。

  由于某些特殊的历史原因,国内开发者还是以Windows系统为主,这跟国外在Unix哲学下成长起来的开发者群体不一样。

  不过这两年Linux在国内开发者群体中的欢迎程度越爱越高,要知道连Windows10都有了Ubuntu/Debian/fedora等Linux发行版作为Windows10的Linux子系统,那么想要在Linux下编程,需要掌握哪些知识呢?

  二十年前你在Linux上学习的编程知识,基本上现在还能用,不过五年前你在windows上学习的编程知识,也许大部分现在已经用不了了。

  绝大多数服务器环境都是运行Linux操作系统,大部分开发者写的程序,最终都是要在Linux服务器上运行的;绝大多数的开源软件会优先适配Linux平台;很大比例的第三方库只会登陆Linux平台。Linux开源、免费、高效,Linux能够给你最大的可能性,Linux给了你一大堆最为原始的工具,你可以用这些工具组合成专属于你自己的高效工具库。

  Linux下各种开源环境应有尽有,各种shell拿来就可以用,跟Unix保持了很好的血缘关系,Lisp/Python/Java/C/C++/PHP/Ruby等各种各样的环境拿来就可以用。

  visual studio是银河系最好的继承开发环境,但是Windows却没有因此成为最强的开发者生态。

  想要在Linux下熟练编程,你必须要学很多专业技能。

  熟悉Linux命令

  Linux的精华是命令行,你必须熟练使用命令行进行日常的工作、学习,Linux上有各种各样的shell命令,bash、sh等命令应有尽有。

  你还得熟悉在Linux上通过命令行安装软件、搭建开发环境、完成文件管理,对于代码调试、编译等等。

  熟练使用vim/emacs

  在Linux编程世界里,不会使用emacs和vim是可怕的。

  emacs号称是“神之编辑器”,vim则被称为“编辑器之神”,这两款文本编辑器都是Linux下开发者的重要编程工具,丰富的插件让这两款编辑器非常强大。

  看一些Linux的书籍

  《鸟哥Linux私房菜》、《深入理解Linux内核》、《Unix环境高级编程》、《Unix网络编程》、《Linux程序设计》、《深入理解Linux内核》等,这些都是Linux/Unix下的经典书籍。

  Linux下有个很好的c++语言框架,叫做qt,你可以了解下,基本上这个框架就可以完成大部分的开发需求,如果你有别的问题,可以私信联系我。

  一、熟悉Linux基本操作和系统管理;

  二、熟悉vim基本操作和man命令;

  三、找一本厚点的C语言教材(比如<c语言程序设计第二版>),精读+实现每一个例子,做每一个习题;

  四、熟悉计算机基础

  1.买一本二手<深入理解计算机系统(csapp)>(影印或原版),精读+实现每一个例子,做每一个习题;

  2.看网课cmu的15-213,做每一个作业,完成全部六个lab;

  五、补课数学课

  微积分、线性代数、概率和数理统计

  离散数学

  六、算法

  1.买一本clrs<算法导论intro algorithms>(影印或原版),精读+实现每一个例题+做每一个习题

  2.上网课,cs61b或Princeton的algorithms I&II

  七、操作系统

  1.买二手书<操作系统概念><现代操作系统><操作系统:原理和实现>(影印或原版),粗读前两本,最后一本精读+做每一个例子和习题。

  2.上网课MIT6.828,做每一个作业,完成全部6个lab。

  八、数据库

  参照七。

  九、网络

  参照七。

  十、云计算

  1.直接上网课分布式系统

  2.直接上网课cloud computing(以及advanced)。

  ----

  十一大数据方向(线性代数和统计高分)

  上网课

  十二machine learning方向(线代和统计高分)

  网课(推荐Stanford cs229+230,Andrew Ng吴恩达)

  Linux是一个开源的操作系统,它最初仅仅只是芬兰Helsinki大学的一位年轻学生Linux Torvalds作为爱好开发的。Linus对Minix(一个小型的UNIX系统)很感兴趣,并且决定开发一个比Minix更好的系统。

  Linux下编程可分为Linux C语言编程和Linux底层内核编程

  1.Linux之io系统编程

  2.Linux

  3.Linux

  4.Linux

  1.Uboot原理和编程

  2.Kernel

  3.Linux

  在Linux下进行编程需要什么技术?看来你是没有接触过Linux操作系统啊。

  很多人想到Linux就想到什么呢?想到黑乎乎的命令行?一堆自己完全没有接触过的命令,然后想到自己一脸懵逼的样子?

  哈哈哈哈,你实在是想得太多了。

  首先你需要选择一个正确的发行版,或者说选择一个比较好用的Linux发行版。我个人推荐初次接触Linux操作系统的人,使用深度开发的深度Linux操作系统。

  当你进入到深度Linux操作系统的桌面之后,你就会发现原来是这样的一个系统啊,和windows有什么区别呀?

  然后你该用什么编辑器就用什么编辑器,该用什么就用什么,没有任何的关系的。

  至于编程本身需要的技术和操作系统没有关系。

  当然如果你对Linux操作系统有了更进一步的研究,你还需要去尝试一下不同的发行版本,比如说由红帽公司推出的cent OS操作系统。这是一个非常常见的运行在服务器上的操作系统,当然你接触这样的操作系统的话是必须使用命令行了。

  还有ubuntu的Linux操作系统,也是需要去尝试一下的。因为现在有很多的服务器上开始使用ubuntu的操作系统了。

  如果你的Linux水平达到了一定的境界,你一定要尝试一下arch Linux操作系统。当你能够顺利的在虚拟机上把它给安装上,说明你的Linux操作系统已经达到一定的境界了。

  当你使用的发行版足够多之后,你就会发现其实各种各样的Linux操作系统都是差不多的。只不过在自带的环境方面各有特色而已。

  总之不要害怕,也不要胆怯,放手去干 just do it。

  各位看官,你们是怎么接触到Linux操作系统并使用它的呢?欢迎在评论区中讨论。

  喜欢我的话给我点赞并关注哦。