Linux system programming

I wanted to get system programming for Linux and would like to know how to approach this and where to start. I came from web development background (Python, PHP), but I also know some C and C ++.

Essentially, I would like to know:

  • What language to learn and pursue (I think mainly C and C ++)?
  • How / Where to learn system-specific languages? Books, websites, blogs, textbooks, etc.
  • Any other good places where I can start this from the basics.
  • Let's start with some good libraries?
  • What environment setting (or approximately) do I need? Assuming linux should be there, but I have a linux box, which I rarely go into using the GUI (I always use SSH). Is the GUI much more useful, or is the VI editor enough? ( Please let me know if this part of the question should go to serverfault.com )

PS: Just to clarify, for system programming, I mean things like device driver records, system tools, records of native applications that are not present on the Linux platform, but are on others, play with the Linux kernel, etc.

+6
linux linux-kernel systems-programming
source share
5 answers

If you are playing with the kernel, you should use C. There are several books, such as Essential Linux Device Drivers, that give you the basics of structures where to run your code, etc.

In general, many servers are written in C, and sometimes in C ++. Popular libraries include Glib, libevent, boost (for C ++).

You can do everything from the command line in your editor of choice - there is no clear victory, choose what you like.

+6
source share

Your question is pretty broad. “Native applications that Linux doesn’t have” covers things like office suites that I don’t consider system programming. I would like to focus on one (e.g. device drivers) at a time. There are many existing questions about this, including the Linux Programming Book , Which IDE will be useful for developing the Linux kernel driver , Are training manuals for writing drivers for Gnu / Linux recommended? and Ubuntu Linux, which programming languages ​​should I learn? .

To learn C89, I definitely delved into the C programming language (second edition) .

+3
source share

To really get Linux system programming, I say build C and x86.

For applications, Linux supports many languages, python, C ++, fortran, perl, etc., so choose which one you want to use.

+2
source share

Nano is my favorite editor. Vi is also nice. I did not find the time to study it, but both of them can help in your programming experience. Onces, this boils down to complex code errors, mounting an SSH drive, and then opening files remotely using your favorite GUI program.

+1
source share

Most system programming is done in C, as mentioned here. Some of the good books you need to find in order to understand thinking, and the righteous way unix / Linux do it, will be Eric Raymond's “The Art of Unix Programming” and Richard Stevens “Unix Advanced Programming”. there are some new books on the market, such as the Robert Love Book "Linux System Programming", as well as the "Linux Programming Interface", they are up2date, however they do not discuss original principles and thoughts like the ones I mentioned earlier.

0
source share

All Articles