Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>Read some good books, notably <a href="http://advancedlinuxprogramming.com/" rel="nofollow">Advanced Linux Programming</a> and <a href="http://basepath.com/aup/" rel="nofollow">Advanced Unix Programming</a>. Read also the <a href="http://www.tldp.org/LDP/abs/html/" rel="nofollow">advanced bash scripting guide</a> and other documentation from <a href="http://www.tldp.org/" rel="nofollow">Linux Documentation Project</a></p> <p>Obviously, install some Linux distribution on your laptop (not in some VM, but on real disk partitions). If you have a debian like distribution, run <code>aptitude build-dep gcc-4.6 gedit</code> on it to get a lot of interesting developers packages.</p> <p>Learn some command line skills. Learn to use the <code>man</code> command; after installing <code>manpages</code> and <code>manpages-dev</code> packages, type <code>man man</code> (use the space bar to "scroll text", the <code>q</code> key to quit). Read also the <a href="http://www.kernel.org/doc/man-pages/online/pages/man2/intro.2.html" rel="nofollow">intro(2)</a> man page. When you forgot how to use a command like <code>cp</code> try <code>cp --help</code>.</p> <p>Use a version control system like <a href="http://scm-git.com/" rel="nofollow">git</a>, even for one person tiny projects.</p> <p>Backup your files. </p> <p>Read several relevant Wikipedia pages on <a href="http://en.wikipedia.org/wiki/Linux" rel="nofollow">Linux</a>, <a href="http://en.wikipedia.org/wiki/Kernel_%28computing%29" rel="nofollow">kernels</a>, <a href="http://en.wikipedia.org/wiki/Syscall" rel="nofollow">syscalls</a>, <a href="http://en.wikipedia.org/wiki/Free_software" rel="nofollow">free software</a>, <a href="http://en.wikipedia.org/wiki/X_Window_System" rel="nofollow">X11</a>, <a href="http://en.wikipedia.org/wiki/Posix" rel="nofollow">Posix</a>, <a href="http://en.wikipedia.org/wiki/Unix" rel="nofollow">Unix</a></p> <p>Try hard to use the command line. For instance, try to do everything on the command line for a week or more. Avoid using your desktop, and possibly your mouse. Learn to use <code>emacs</code>.</p> <p>Read about builder programs like <a href="http://www.gnu.org/software/make/" rel="nofollow">GNU make</a></p> <p>Retrieve several free software from their source code (e.g. from <a href="http://sourceforge.net/" rel="nofollow">sourceforge</a> or <a href="http://freecode.com/" rel="nofollow">freecode</a> or <a href="http://github.com/" rel="nofollow">github</a>) and practice building and compiling them. Study their source code </p> <p>Basic tips to start (if a command is not found, you need to install the package providing it) in command line (in a terminal). </p> <ul> <li><p>run <code>emacs</code> ; there is a tutorial menu; practice it for half an hour.</p></li> <li><p>edit a <code>helloworld.c</code> program (with a <code>main</code> calling some <code>hello</code> function)</p></li> <li><p>compile it with <code>gcc -g -Wall helloworld.c -o helloworld</code>; improve your code till no warnings are given. Always pass <code>-Wall</code> to <code>gcc</code> or <code>g++</code> to get almost all warnings.</p></li> <li><p>run it with <code>./helloworld</code> </p></li> <li><p>debug it with <code>gdb ./helloworld</code>, then</p> <ol> <li>use the <code>help</code> command</li> <li>use the <code>b main</code> command to add a breakpoint in <code>main</code> and likewise for your <code>hello</code> function.</li> <li>run it under <code>gdb</code> using <code>r</code></li> <li>use <code>bt</code> to get a backtrace</li> <li>use <code>p</code> to print some variable</li> <li>use <code>c</code> to continue the execution of the debugged program.</li> </ol></li> <li><p>write a tiny <code>Makefile</code> to be able to build your <code>helloworld</code> program using <code>make</code></p></li> <li><p>learn how to call <code>make</code> (with <code>M-x compile</code>) and <code>gdb</code> (with <code>M-x gdb</code>) from inside Emacs</p></li> </ul> <p>Learn more about <a href="http://valgrind.org/" rel="nofollow">valgrind</a> (to detect most memory leaks). Perhaps consider using <a href="http://www.hpl.hp.com/personal/Hans_Boehm/gc/" rel="nofollow">Boehm's GC</a> in some of your applications.</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload