First, the use of tools
1, learn to use Vim/emacs,vim/emacs Linux is the most common source code editing tools, not only to learn to use them to edit the source, but also to learn to use them to find, locate, replace and so on. It is recommended to use VIM for beginners, which is also the text editor I am currently using.
2, learn to write rules makefile files, and combine the use of tools aclocal, autoconf and automake to generate makefile files.
3, master the basic usage of GCC and gdb. Mastering the use of GCC is good for building a package, and when the package contains more files, you can manually compile it with GCC and you will have a clear understanding of the dependencies between the files in the package.
4, master the basic usage of SVN/CVS. This is Linux and is the most commonly used version management system in the open source community. You can try to participate in some open source projects on SourceForge.
Second, Linux/unix system call and Standard C library
The system calls the application software and the operating system interface, its importance naturally needless to say, must grasp. The recommended learning materials are advanced programming for Mr. Steven's UNIX Environment (abbreviated as APUE).
Third, the study of the library
No matter in which platform does the software development, for the library study is very important, the Linux development library Many, I mainly introduce some of the libraries which I often use.
1. GLib Library
The glib library is the base library for GTK + and GNOME and is cross-platform and can be used under Linux, UNIX, and Windows. The impact of the glib library on the development of Linux platforms is like MFC's impact on Windows platform development, and many open source projects use a large number of glib libraries, including cluster software heartbeat under GIMP, GNOME, Gaim, Evolution, and Linux. Because the glib library comes with a basic data structure implementation, you can learn the basic structure (including linked lists, trees, queues, and hash tables) by the way when you learn the glib library.
2. Libxml Library
Libxml is a basic library of parsing XML files under Linux, and now many utility softwares are in XML format, so it is necessary to study them.
3. ReadLine Library
ReadLine Library is the Bash Shell library, if you want to develop a command-line program, then use the ReadLine Library can reduce a lot of work, such as Bash command line auto-completion, in the ReadLine has been implemented, of course, you can also use their own implementation of the behavior of the library. ReadLine Library has a lot of website introduced, as long as Google ReadLine can find a bunch of.
4. Curses Library
The curses library was previously part of the VI program and was later extracted from VI to become a separate library. The curses library is especially useful for writing terminal-related programs, such as locating output in a row of a terminal, changing the color of the terminal font and terminal mode. The curses library under Linux is used by the GNU-implemented ncurses (new curses meaning).
5. GTK + and KDE libraries
These two libraries are the basic libraries for developing GUI applications, and now most GUI programs under Linux are based on these two libraries, which are necessary for their learning.
Iv. Learning in the Web
Network this thing is too wide, recommended learning materials Mr. Steven's UNIX Network programming (UNP) and TCP/IP protocol, further words can learn to write network programs using Libnet.
LINUXC Development Learning Route