免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: crazyhadoop
打印 上一主题 下一主题

[Linux] 编程入门系列之:Linux系统编程一二三 [复制链接]

论坛徽章:
1
天蝎座
日期:2013-12-06 18:23:58
71 [报告]
发表于 2014-11-24 12:22 |只看该作者
jieforest 发表于 2014-11-18 08:49
1. 你是怎么学习掌握 *nux系统的?
工作十余年了,早期一直是与Windows Server打交道的,在2006年开始接触 ...


赞,知识来源于实践

论坛徽章:
0
72 [报告]
发表于 2014-11-24 18:51 |只看该作者
是的,树莓派不错回复 67# 剑魂箫心


   

论坛徽章:
19
处女座
日期:2014-07-18 14:50:5415-16赛季CBA联赛之北京
日期:2019-09-16 15:39:1415-16赛季CBA联赛之上海
日期:2019-09-15 15:29:0415-16赛季CBA联赛之山西
日期:2017-03-09 10:58:232017金鸡报晓
日期:2017-02-08 10:33:212017金鸡报晓
日期:2017-01-10 15:13:2915-16赛季CBA联赛之深圳
日期:2016-12-15 17:55:53C
日期:2016-10-25 16:00:1515-16赛季CBA联赛之新疆
日期:2016-07-21 14:02:0415-16赛季CBA联赛之江苏
日期:2016-06-30 12:15:04shanzhi
日期:2016-06-17 17:59:31平安夜徽章
日期:2015-12-26 00:06:30
73 [报告]
发表于 2014-11-24 19:06 |只看该作者
本帖最后由 shenlanyouyu 于 2014-11-24 19:07 编辑

1.你是怎么学习掌握 *nux系统的?
     在大二时我接触到Linux,然后在自己的电脑上安装了Redhat 9.0,开始熟悉linux常用的命令,环境的配置,然后逐步在其环境下编写C程序,调试和运行程序。
     熟悉Linux下C程序编译和调试后,便直接尝试Linux内核学习和驱动开发。学习一段时间后,学习效果很很差,只是按部就班将Linux设备驱动程序的例子跑了,很多时候知其然不知其所以然。分析是自己基础比较薄弱,只有C语言基础,自学了单片机原理,没有学习微机原理。
     因此下决心恶补基础知识。
     (1) 学习计算机系统基础知识。学习微机原理、深入理解计算机系统等书籍。
     (2) 学习操作系统的基本知识。熟悉进度管理、内存管理等知识。
     (3) 在学习前面两个方面的内容时,配合熟悉Linux操作的使用,将Linux “玩”起来。掌握Linux系统的基础知识很重要。熟悉Linux下的shell、常用的命令。这个阶段里,主要在熟悉Linux操作系统下,软件安装、shell脚本,用户管理、网络配置等方面,主要看的是鸟哥的书。玩过很多版本的Linux,例如Redhat、RHEL、Centos、Ubuntu等,还在实验室中硬盘方式安装了RedFlag红旗。
     (4) 在Linux系统中编程练习,熟悉Linux环境中程序编译、调试的方法。主要熟悉GCC的使用,掌握程序编译、GDB调试,以及crash dump分析。学习了Linux程序设计、Unix环境高级编程等书籍。
     (5) 上机编程调试APUE中的code,编程实践很重要,一边学习实践,一边总结,建立自己的知识体系。然后过渡到Linux内核源代码情景分析、ULK就比较顺手了。
      如果没有项目实践的机会,只是学习和编程练习很难建立完整的体系。所以一直在寻觅项目实践的机会。在学习到一个程度后,自我感觉已经可以承担一个嵌入式Linux项目了,因此便主动向实验室老师提出做Linux移植和驱动开发的毕设。实验室导师提供了一个Linux的web服务器的毕设,实作一个类似路由器的配置功能,通过网络访问实现远程控制板上外设。
      整个过程中完成安装Centos Linux,搭建开发环境,安装交叉编译环境,学习open source的driver code,改写porting到系统中,配置Kernel并编译下载到开发板调试。完成后对于嵌入式项目开发的流程有了一定的了解。

2. 学习 *nux基础命令以及编程有什么比较有效的方法?
     (1) 我觉得兴趣是最好的老师,强烈的好奇心和求知欲是不断学习前进的动力。首先你得对Linux拥有极大兴趣,不只是为了找一份工作而来学习。
     (2) 其次选择一本好书,学习Linux基础命令当然是选鸟哥的书了。通过看书,学习书中的例子code,带着问题学习,才能有收获,否则看了过一段时间也忘了。
     (3) 最重要的是实践。“实践是检验真理的唯一标准”。如果学习编程只是看书,效率不会很高。看书学习掌握了理论知识后,通过实践来加深对知识的理解。因此看书结合编程实践,完成书中的例子,并做一些扩展,加深对Linux的理解和掌握,提高学习的效率。
     (4) “学而不思则罔,思而不学则殆”。思考和总结,光做不思考也不行。经常写些Linux学习的总结文档到Blog或者论坛,分享心得的同时加深自己对所学知识的理解,逐步形成自己的知识体系。

3. 你使用 *nix系统做过什么好玩的事情?
     (1) 使用Linux来学习编译原理相关的知识。由于自己不是计算机科班出生,对于编译原理相关的知识不熟悉。在熟悉Linux系统后,使用GCC来学习程序编译链接的知识。
     (2) 使用过Centos Linux做嵌入式开发,移植Linux到Nios II处理器,编写设备驱动程序,移植Boa Web服务器,实现远程控制。

评分

参与人数 1可用积分 +2 收起 理由
crazyhadoop + 2 很给力!

查看全部评分

论坛徽章:
0
74 [报告]
发表于 2014-11-24 23:58 |只看该作者
针对上面的三个问题,我结合自己的经验分别罗嗦一下:
1,刚开始接触linux是因为比较好奇,后来发现鸟哥写的《linux私房菜》比较有名,就狠心买了一本,自己装系统,亲自跑命令,刚开始好奇心强,后来发现遇到不少困难,但还是咬牙坚持了下来,把整本书啃了两遍,这时候可以初步玩转linux了,然后继续进阶,继续鸟哥的《服务器篇》,自己架站,这次挑战就大了,且苦且坚持,攻克服务器后,这时候拥有了挑战unix界的至尊《unix环境高级编程》,可以这么说,没看过这本书就不算真正开始学unix,但有了前面的基础,这时候学的也就快多了,就像武侠中习武那样,内功学好后,学高级招式如同水到渠成。这本书看完后,能力已经比较高了,然后凭兴趣看《linux内核编程》,对linux的了解也就越来越多了,但linux是一个卓越的操作系统,不是仅仅看书就可以学深,所以现在一边继续学,一边动手写些项目等等。
2,实践是最好的老师,但实践之前最好先了解linux的一些基本知识,这样在实践过程中,遇到问题,起码知道怎么回事?就算不知道怎么回事,最起码知道怎么google吧。学习+实践+学习+实践......,学习指导实践,实践反馈学习,我觉得这样效果比较好。你们觉得呢?
3,在大家了解linux之前,有没有发现utorrent的p2p很神奇?有没有兴趣尝试知道QQ的通信是怎样实现的?有没有尝试过用网页跑一个linux系统?这些熟悉linux之后,就算不会做也会有思路。一年前,我写了一个类似utorrent的工具,然后测试可以正常使用,成就感比较大大的,然后了解了socket编程之后,开始写类似QQ的通信软件,制作一个linnx下的聊天工具,最后虽然功能简单,但对话神马的妥妥的,第三个是现在正在做的,做完之后,大家要用linux就不需要装linux了,直接用网页版的,是不是很方便啊?

论坛徽章:
13
午马
日期:2015-01-19 14:08:552017金鸡报晓
日期:2017-01-10 15:13:29黑曼巴
日期:2016-11-07 11:24:56PHP
日期:2016-10-25 16:06:46黄金圣斗士
日期:2015-11-24 10:43:13IT运维版块每日发帖之星
日期:2015-09-25 06:20:00IT运维版块每日发帖之星
日期:2015-09-14 06:20:002015亚冠之阿尔纳斯尔
日期:2015-07-27 11:17:582015亚冠之广州恒大
日期:2015-07-24 15:04:162015年亚洲杯之乌兹别克斯坦
日期:2015-04-01 13:28:012015年辞旧岁徽章
日期:2015-03-03 16:54:15处女座
日期:2015-01-22 16:09:16
75 [报告]
发表于 2014-11-25 10:24 |只看该作者
1. 你是怎么学习掌握 *nux系统的?
最初接触是实验室有个项目是在RHEL5上用c开发的,当时就会一点基本的命令,一点点摸索着来,后来学了一下makefile,再后来看CU shell版上的那些精华帖,边看边练,虽然练完之后水平跟那些高手没法比,但应对日常工作还是比较轻松的。

2. 学习 *nux基础命令以及编程有什么比较有效的方法?
基础命令基本是就是边看边练,用多了自然就会了,有什么记不准的看man和--help就行
编程的话,经典书籍还是很多的最长被提及的就是APUE和UNP

3. 你使用 *nix系统做过什么好玩的事情?
好玩的事、高端的事都没做过,现在就是从事centos上的c开发而已

个人觉得二、三线城市,用c做开发的公司很少,基本都是java和.net

论坛徽章:
0
76 [报告]
发表于 2014-11-26 08:33 |只看该作者
当然手中有本不错的教程是可以事倍功半的,我和大多数人一样一开始看鸟哥私房菜,我觉得学习最好的方法还是实践,多敲命令是根本。现在为止最好玩的还是通过KVM安装定制自己要的虚拟机~~

论坛徽章:
0
77 [报告]
发表于 2014-11-28 09:33 |只看该作者
1. 你是怎么学习掌握 *nux系统的?
看书,实践,看技术群聊天,问
2. 学习 *nux基础命令以及编程有什么比较有效的方法?
集中时间,反复的用,看书,时间长了就记住了
3. 你使用 *nix系统做过什么好玩的事情?
没有做过什么好玩的事情。

论坛徽章:
1
申猴
日期:2014-07-23 14:57:26
78 [报告]
发表于 2014-11-29 11:58 |只看该作者
1. 工作,培训,自学,马哥教育
2. 多操作,shell脚本就是一条条敲出来的,下一步就是python,转网络编程
3. 做过多个脚本工具,现在想拿出几个申请专利

论坛徽章:
0
79 [报告]
发表于 2014-11-30 19:20 |只看该作者
BBinch1n4
其实我觉得中文译本和英文原版区别不是特别的大,就如你所说的TCP详解卷一来说。中文译本英文原版斗只是在阐述TCP/IP协议而已,其实不必太在意语法之类的东西。说句实在话,找到更好的学习方法,其实不用看别人编著的书籍。拿TCP/IP详解卷一来说,其实你可以通过像wireshark这样的抓包软件区分析数据传输与封包的原理,通过GNS3、ENSP、VMware workstation等工具甚至可以模拟真个Internet的基础架构,在网络模拟器中模拟网络环境,虚拟机里面模拟操作系统,再通过wireshark抓取数据包……再说鸟哥私房菜,鸟哥私房菜分基础学习篇和服务器架设篇。基础学习篇介绍Linux操作系统的基本使用方法、文件系统管理、用户管理、引导流程、shell编程和一款强大的文本编辑器vim,都是一些操作系统使用最基本的东西
,也只停留在你所说的“应用层”,通俗了就是会使用,未涉及到底层开发……服务器架设篇一样,也是针对应用,如何架设一些在Internet intranet上用到的基本服务。鸟哥的书籍、TCP/IP详解卷一都是告诉读者怎么去使用而已。其实我个人更倾向于去某个应用的官方网站上去找指导手册,这样会来的更加详细和准确,其实Linux本身就已经提供了很详细的说明和示例配置。完全不用任何书籍,实在有看不明白的地方可以找搜索引擎。

论坛徽章:
1
天蝎座
日期:2013-12-06 18:23:58
80 [报告]
发表于 2014-12-01 19:04 |只看该作者
回复 44# beyondfly


    LFS 折腾的有啥体会哇?具体分享分享哇?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP