`
flyzonemu
  • 浏览: 35031 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

学习linux/unix编程方法的建议,学习Linux的四个步骤

阅读更多
    假设你是计算机科班出身,计算机系的基本课程如数据结构、操作系统、体系结构、编译原理、计算机网络你全修过
我想大概可以分为4个阶段,水平从低到高
从安装使用=>linux常用命令=>linux系统编程=>内核开发阅读内核源码
其中学习linux常用命令时就要学会自己编译内核,优化系统,调整参数
安装和常用命令书太多了,找本稍微详细点的就ok,其间需要学会正则表达式
系统编程推荐《高级unix环境编程》,黑话叫APUE
还有《unix网络编程》
这时候大概还需要看资料理解elf文件格式,连接器和加载器,cmu的一本教材中文名为《深入理解计算机系统》比较好
内核开发阅读内核源码阶段,从写驱动入手逐渐深入linux内核开发
参考书如下《linux device drivers》,黑话叫ldd
《linux kernel development》,黑话叫lkd
《understading the linux kernel》,黑话叫utlk
《linux源码情景分析》
这四本书为搞内核的必读书籍
最后,第三阶段和第四阶段最重动手,空言无益,光看书也不罩,不动手那些东西理解不了
学习linux/unix编程方法的建议
建议学习路径:
  首先先学学编辑器,vim, emacs什么的都行。
然后学make file文件,只要知道一点就行,这样就可以准备编程序了。
  然后看看《C程序设计语言》K&R,这样呢,基本上就可以进行一般的编程了,顺便找本数据结构的书来看。
  如果想学习UNIX/LINUX的编程,《APUE》绝对经典的教材,加深一下功底,学习《UNP》的第二卷。这样基本上系统方面的就可以掌握了。
  然后再看Douglus E. Comer的《用TCP/IP进行网际互连》第一卷,学习一下网络的知识,再看《UNP》的第一卷,不仅学习网络编程,而且对系统编程的一些常用的技巧就很熟悉了,如果继续网络编程,建议看《TCP/IP进行网际互连》的第三卷,里面有很多关于应用协议telnet、ftp等协议的编程。
如果想写设备驱动程序,首先您的系统编程的接口比如文件、IPC等必须要熟知了,再学习《LDD》2。
  对于几本经典教材的评价:
  《The C Programing Language》K&R 经典的C语言程序设计教材,作者是C语言的发明者,教材内容深入浅出。虽然有点老,但是必备的一本手册,现在有时候我还常翻翻。篇幅比较小,但是每看一遍,就有一遍的收获。另外也可用谭浩强的《C语言程序设计》代替。
  《Advanced Programing in Unix Envirement》 W.Richard Stevens:也是非常经典的书(废话,Stevens的书哪有不经典的!),虽然初学者就可以看,但是事实上它是《Unix Network Programing》的一本辅助资料。国内的翻译的《UNIX环境高级编程》的水平不怎么样,现在有影印版,直接读英文比读中文来得容易。
  《Unix Network Programing》W.Richard Stevens:第一卷讲BSD Socket网络编程接口和另外一种网络编程接口的,不过现在一般都用BSD Socket,所以这本书只要看大约一半多就可以了。第二卷没有设计到网络的东西,主要讲进程间通讯和Posix线程。所以看了《APUE》以后,就可以看它了,基本上系统的东西就由《APUE》和《UNP》vol2概括了。看过《UNP》以后,您就会知道系统编程的绝大部分编程技巧,即使卷一是讲网络编程的。国内是清华翻译得《Unix网络编程》,翻译者得功底也比较高,翻译地比较好。所以建议还是看中文版。
  《TCP/IP祥解》一共三卷,卷一讲协议,卷二讲实现,卷三讲编程应用。我没有怎么看过。,但是据说也很经典的,因为我没有时间看卷二,所以不便评价。
  《用TCP/IP进行网际互连》Douglus.E.Comer 一共三卷,卷一讲原理,卷二讲实现,卷三讲高级协议。感觉上这一套要比Stevens的那一套要好,就连Stevens也不得不承认它的第一卷非常经典。事实上,第一卷即使你没有一点网络的知识,看完以后也会对网络的来龙去脉了如指掌。第一卷中还有很多习题也设计得经典和实用,因为作者本身就是一位教师,并且卷一是国外研究生的教材。习题并没有答案,留给读者思考,因为问题得答案可以让你成为一个中级的Hacker,这些问题的答案可以象Douglus索取,不过只有他只给教师卷二我没有怎么看,卷三可以作为参考手册,其中地例子也很经典。如果您看过Qterm的源代码,就会知道Qterm的telnet 实现部分大多数就是从这本书的源代码过来的。对于网络原理的书,我推荐它,而不是Stevens的《TCP/IP祥解》。
  《Operating System - Design and Implement》这个是讲操作系统的书,用Minix做的例子。作者母语不是英文,所以英文看起来比较晦涩。国内翻译的是《操作系统设计与实现》,我没看过中文版,因为翻译者是尤晋元,他翻译的《APUE》已经让我失望头顶了。读了这本书,对操作系统的底层怎么工作的就会
有一个清晰的认识。
  《Linux Device Driver》2e ,为数不多的关于Linux设备驱动程序的好书。不过内容有些杂乱,如果您没有一些写驱动的经验,初次看会有些摸不着南北。国内翻译的是《Linux设备驱动程序》第二版,第一版,第二版的译者我都有很深的接触,不过总体上来说,虽然第二版翻译的有些不尽人意,但是相比第一版来说已经超出了一大截。要读这一本书,至少应该先找一些《计算机原理》《计算机体系结构》的书来马马虎虎读读,至少应该对硬件和计算机的工作过程有一些了解。

分享到:
评论

相关推荐

    LINUX/UNIX Shell编程大作业

    在Linux系统的/etc目录下有这样一个文件passwd,该文件里... 你必须提交一份硬拷贝(有一个写上名字的装订好的封面)和一份含下面四个文件的电子拷贝(三份SHELL脚本和一份文本文件)。  menu、add、delete、passwd

    Linux/Unix下ODBC的安装、配置与编程

    源码编译通常涉及解压源码、配置、编译和安装四个步骤,而使用RPM包则更为简便,可以直接通过`rpm`命令进行安装。 在完成unixODBC的安装后,还需要配置ODBC数据源,这通常涉及到编辑`/etc/odbc.ini`和`/etc/...

    AnIntroductiontoGCC.zip_Linux/Unix编程_Unix_Linux_

    1. **编译过程**:GCC的编译过程包括预处理、编译、汇编和链接四个步骤。理解每个步骤的作用对于优化代码和调试至关重要。 2. **命令行选项**:GCC支持丰富的命令行选项,如`-Wall`用于开启所有警告,`-O2`用于开启...

    AES.rar_Linux/Unix编程_Unix_Linux_

    AES算法的核心在于其加密过程,包括四个主要步骤:字节替换(SubBytes)、行移位(ShiftRows)、列混淆(MixColumns)和加轮密钥(AddRoundKey)。这些步骤在多个轮次中重复执行,以确保数据的高度安全性。AES支持...

    icp-native.rar_Linux/Unix编程_Unix_Linux_

    在Linux/Unix编程中,理解系统调用、进程管理、文件I/O、网络编程等基础知识至关重要。"icp-native.c"可能包含了与特定的“icp”(可能是“Inter-Computer Protocol”或某种自定义协议)相关的本地实现,这通常涉及...

    sioseis-2010.2.11.rar_Linux/Unix编程_Fortran_

    《Linux/Unix编程与Fortran在海上地震资料处理中的应用》 在当今的地球科学领域,尤其是地质勘探和地震学中,数据处理是一项至关重要的任务。"sioseis-2010.2.11.rar" 是一个专为海洋地震资料处理设计的软件包,它...

    Linux与Unix shell编程指南(完整高清版)

    ### Linux与Unix Shell编程指南知识点概述 #### 一、文件安全与权限 **知识点1:文件权限** - 文件权限用于管理文件的访问控制,确保只有授权用户能够读取、写入或执行文件。 - 权限分为三组:文件属主、同组用户...

    MPlayer_porting.rar_Linux/Unix编程_Unix_Linux_

    本文将详细探讨如何在Linux平台上进行MPlayer的移植工作,帮助开发者深入理解Linux/Unix编程,并掌握实际的项目移植技巧。 一、MPlayer概述 MPlayer是一款功能强大的多媒体播放器,支持众多音频和视频格式,通过其...

    read_bb_file.rar_Linux/Unix编程_Unix_Linux_

    一、Linux/Unix编程基础 Linux和Unix是两种广泛使用的类Unix操作系统,它们都基于POSIX标准,提供命令行接口(CLI)和丰富的API(应用程序编程接口),支持多用户和多任务环境。对于开发者来说,掌握C语言和Shell...

    FileZilla FTP Client.zip_Linux/Unix编程_C/C++_

    编译过程通常包括预处理、编译、汇编和链接四个步骤。 **C/C++ 编程语言** C++是在C语言基础上发展起来的面向对象编程语言,它保留了C的效率和灵活性,并引入了类、对象、继承、多态和模板等面向对象特性。C语言则...

    debian31-8187(110).z.zip_Linux/Unix编程_Unix_Linux_

    标题中的"debian31-8187(110).z.zip_Linux/Unix编程_Unix_Linux_"提到了几个关键元素,首先,"debian31"指的是Debian操作系统的一个版本,Debian是一个自由软件的Linux发行版,以其稳定性和广泛支持的软件包而闻名。...

    zyjy_yk1.rar_Linux/Unix编程_PPT_

    【Linux/Unix编程_PPT_】卓越教程培训的内部资料主要涵盖了Linux系统的基本操作和C语言开发环境的配置,以及一些常用的辅助工具的使用。以下是这些主题的详细讲解: **第一章:虚拟机构建及Linux安装** 虚拟机是...

    Linux-net.zip_Linux/Unix编程_Windows_Unix_

    "Linux-net.zip"这个压缩包,显然是一份专注于Linux环境下网络编程的学习资料,旨在帮助程序员理解和实践相关技术。 Linux网络编程主要涉及以下几个核心知识点: 1. **套接字(Sockets)编程**:在Linux中,网络...

    Video4Linux-Programming.rar_Linux/Unix编程_Unix_Linux_

    本文将详细探讨Video4Linux的编程概念、架构以及如何在Linux/Unix环境下进行V4L驱动的开发。 一、Video4Linux概述 Video4Linux是Linux内核的一部分,由Jozsef Kado于1999年发起。它提供了一个统一的API,使得应用...

    Linux.Unix下ODBC的编程

    在编程中,我们需要完成以下四个步骤: 第一步:设定 ODBC 环境句柄并设置参数 我们需要声明一个 ODBC 环境句柄(SQLHENV),它可以用来获得有关的 ODBC 环境信息,我们需要调用 SQLAllocHandle ( SQL_HANDLE_ENV,...

    prime.rar_Linux/Unix编程_Unix_Linux_

    这个函数需要四个参数:线程ID指针、线程属性(可选)、线程入口函数和传递给该函数的参数。例如: ```c pthread_t thread_id; pthread_create(&thread_id, NULL, is_prime_thread, (void*) start_num); ``` ...

    UNIX&Linux操作系统编程-操作系统基本知识.ppt

    在Linux环境下,程序编译通常涉及预处理、编译、汇编和链接四个步骤。预处理器cpp处理宏定义和#include指令,编译器cc将源代码转换为汇编代码,汇编器as将汇编代码转化为机器码,最后链接器ld将多个目标文件合并并...

    irda.rar_Linux/Unix编程_Unix_Linux_

    在Linux/Unix操作系统环境下,irda(Infrared Data Association)技术是一种用于短距离无线通信的协议,常用于红外遥控器。本压缩包“irda.rar”包含了一个与GPIO(General Purpose Input/Output)相关的红外遥控器...

Global site tag (gtag.js) - Google Analytics