Current location - Training Enrollment Network - Books and materials - Books about LINUX programming
Books about LINUX programming
Suppose you are in a computer science class and have studied all the basic courses of the computer department, such as data structure, operating system, architecture, compilation principle and computer network.

I think it can be divided into four stages, from low to high.

Use = >Linux Common Commands from Installation = & gtLinux System Programming => Kernel Development Read Kernel Source Code.

When learning common linux commands, you should learn to compile the kernel, optimize the system and adjust the parameters.

There are too many installation and common command books. Just find a slightly more detailed one, and you need to learn regular expressions.

System programming recommends advanced unix environment programming, which is called APUE in slang.

And "unix network programming"

At this time, you probably need to look at the information and understand the elf file format, connector and loader. A Chinese textbook called "Deep Understanding of Computer Systems" is better.

The kernel source code is read in the kernel development stage, and the linux kernel development is gradually deepened from the writing of drivers.

The reference books are as follows: linux device driver, called ldd in slang.

Linux kernel development, slang is called lkd.

Understand the linux kernel, or utlk in slang.

Scenario analysis of linux source code

These four books are required reading for kernel.

Finally, in the third and fourth stages, it is most important to start work, and empty words are useless. You can't understand those things without reading a book.

Suggestions on learning linux/unix programming methods

Suggested learning path:

First learn editors, vim, emacs and so on.

Then learn the make file file, as long as you know a little, so that you can prepare for programming.

Then look at the C programming language K &;; R, in this case, you can basically do general programming. By the way, find a book about data structure.

If you want to learn UNIX/LINUX programming, "APUE" is an absolute classic textbook, deepen the foundation and learn the second volume of "UNP". So you can basically master the system.

Then read the first volume of "Internet Interconnection with TCP/IP" by Douglus E. Comer to understand the network, and then read the first volume of UNP. Not only learning network programming, but also familiar with some common skills of system programming. If you continue network programming, I suggest reading the third volume of Internet Interconnection of TCP/IP, which contains many application protocols such as telnet and ftp.

If you want to write a device driver, you must first be familiar with the interfaces of your system programming, such as files and IPC, and then learn LDD》2.

Comments on several classic textbooks;

"C Programming Language" K & ampr classic C programming textbook, the author is the inventor of C language, and the content of the textbook is simple. It's a bit old, but it's a necessary manual, and I often look through it now. The space is relatively small, but every time you read it, you will gain something. In addition, Tan Haoqiang's C language programming can be used instead.

"Advanced Programming in UNIX Environment" W. Richard Stevens: It is also a very classic book (nonsense, Stevens' book is not classic! ), although beginners can understand it, it is actually an auxiliary material for Unix network programming. The domestic translation level of advanced programming in UNIX environment is not so good. There are photocopies now, so it is easier to read English directly than Chinese.

"UNIX network programming" W. Richard Stevens: The first volume talked about the BSD Socket network programming interface and another network programming interface, but now BSD Socket is widely used, so you only need to read about half of this book. The second volume has no design for the network, mainly focusing on inter-process communication and Posix threads. So you can watch it after watching APUE. Basically, everything about the system is summarized by APUE and UNP Vol 2. After reading UNP, you will know most of the programming skills of system programming, even if the first book is about network programming. Unix network programming was translated by Tsinghua in China. The translator's basic skills are relatively high, and the translation is relatively good. So I suggest reading the Chinese version.

There are three volumes of TCP/IP solution, one is about protocol, the other is about implementation, and the third is about programming application. I haven't seen it much. But some people say it is classic, because there is no time to read the second book, which is not convenient for evaluation.

"Internet interconnection using TCP/IP" Douglus. E.Comer has three volumes, one is about principles, the other is about implementation, and the third is about high-level protocols. I feel that this set is better than Stevens', and even Stevens has to admit that its first volume is classic. In fact, even if you don't have any network knowledge in the first book, you will know the ins and outs of the network like the back of your hand after reading it. There are many exercises in the first volume, which are also classic and practical, because the author himself is a teacher, and the first volume is a textbook for foreign graduate students. There is no answer to the exercise, so leave it to the reader to think, because the answer to the question can make you an intermediate hacker. The answers to these questions can be obtained like Douglus, but only he gave the teacher the second book, and I didn't read it much. Book 3 can be used as a reference manual, and the examples are also very classic. If you have read the source code of Qterm, you will know that most of the telnet implementations of Qterm come from the source code of this book. For the book Network Principles, I recommend it instead of Stevens' TCP/IP solution.

Operating System-Design and Implementation This is a book about operating system, taking Minix as an example. The author's mother tongue is not English, so English looks obscure. The domestic translation is "design and implementation of operating system". I haven't seen the Chinese version, because the translator is You Jinyuan, and his translation of Apu has disappointed me. After reading this book, I understand how the bottom of the operating system works.

Have a clear understanding.

Linux device driver 2e is one of the few good books about Linux device drivers. But the content is a bit messy. If you don't have some experience in writing drivers, you will be a little confused at first glance. I have deep contact with the translators of the second edition, the first edition and the second edition of Linux device driver translated in China, but generally speaking, although the translation of the second edition is somewhat unsatisfactory, it has surpassed the first edition. To read this book, you should at least find some books on computer principles and computer architecture to read so-so, and at least know something about the working process of hardware and computers.