Guide to Unix/Commands/SW Development

From Wikibooks, open books for an open world
Jump to navigation Jump to search

adb[edit | edit source]

A debugger. A GNU alternative is gdb.


ar[edit | edit source]

Creates an archive from files. The usual use is to create an archive from compiled object files, where the archive is fed to a linker.


as[edit | edit source]

Compiles assembly source code.


cc[edit | edit source]

Compiles C language source code. A GNU alternative is gcc. Another alternative is clang.


cflow[edit | edit source]

Outputs call graph for C language source code.


ctags[edit | edit source]

Creates a tags file from source code. The tags file is a text index to object definitions and object uses where objects include variables, functions and the like. The file helps users and tools such as text editors navigate source code. Emacs uses its own variant called etags; alternatively, you can use Exuberant ctags with option -e to generated Emacs-format tags file.


cxref[edit | edit source]

Outputs cross referencing information on C language source code files.


f77[edit | edit source]

Compiles Fortran 77 source code. GNU Fortran compiler used to be invoked via g77, and now is invoked via gfortran.


gcc[edit | edit source]

GNU Compiler Collection is a compiler suite for C, C++ and some other languages. The C language can be compiled using gcc command:

  • gcc test.c
    • Compiles test.c, links it with requisite libraries, and creates a resulting executable, which is a.out or a.exe.
  • gcc test.c -o test
    • Compiles test.c, links it with requisite libraries, and creates test executable.
  • gcc -c mod.c -o mod.o
    • Compiles mod.c into mod.o object file. Linking is prevented by -c option.
  • gcc test.c -o test mod.o
    • Compiles test.c, links it with mod.o, and creates test executable as a result.
  • g++ test.cpp -o test
    • Compiles and links C++ source code.


gdb[edit | edit source]

Part of the GNU project, helps debug C/C++ programs and those in some other languages. A program to be debugged needs to be compiled with -g flag. Then you can start gdb like gdb myprog, which enters gdb shell without running the program. Once in the gdb shell, you can control gdb by typing commands:

  • break main
    • Sets a breakpoint at function main.
  • b main
    • Shorthand for the above. In general, prefixes of commands can be used as long as they are unambiguous.
  • break MySource.c:145
    • Sets a breakpoint at line 145 of source code MySource.c.
  • break MySource.c:145 if myvar > 3
    • Sets a conditional breakpoint.
  • watch myvar
    • Creates a watchpoint, which stops the execution when the variable or expression is changed.
  • watch myvar if myvar > 3
    • Creates a conditional watchpoint.
  • info break
    • Lists breakpoints.
  • info watch
    • Lists watchpoints.
  • run
    • Runs the program. Initially, the program is not running. A program can be run multiple times from the same gdb session.
  • continue
    • Continues execution until the next breakpoint or until the end.
  • step
    • Executes one step of the program, entering into function calls if applicable-
  • next
    • Executes one step of the program without nesting into function calls.
  • quit
    • Quits the debugger.
  • print myvar
    • Outputs the value of the variable.
  • print (myvar * 3) << 4
    • Outputs the value of an expression that it calculates.
  • disp myvar
    • Adds the variable to a list of expressions to be output on each step.
  • set myvar = 1
    • Changes the value of a variable.
  • set myvar = 1 << 4
    • Changes the value of a variable, supporting evaluation of an expression.
  • where
    • Outputs the call stack.
  • help breakpoints
    • Outputs help on the subject of breakpoints, including commands that deal with breakpoints.

Elsewhere in Wikibooks: GCC Debugging/gdb, Linux Applications Debugging Techniques/The debugger.


ld[edit | edit source]

Links object files into an executable.


lex[edit | edit source]

Generates C language source code for a lexical analyzer based on provided lexical rules.


lint[edit | edit source]

Outputs suspect things in C language source code.


make[edit | edit source]

Drives a file production process based on a specification of dependencies between production input files and output files. The file production process so driven is usually compilation and linking.


nm[edit | edit source]

Outputs symbol names found in an object file or a similar file having symbols in it.


  • nm,
  • nm man page,
  • nm,
  • nm in GNU Binary Utilities,

objdump[edit | edit source]

Outputs information from object files, such as disassembly. Not covered by POSIX. A similar tool for macOS is or used to be otool.


  • objdump,
  • objdump in GNU Binary Utilities,
  • otool source code,

prof[edit | edit source]

Profiles a program, identifying code locations that cost most time.


strip[edit | edit source]

Removes certain information from executable and similar files resulting from compilation, unnecessary for certain purposes.


yacc[edit | edit source]

Generates C language source code for a parser based on a provided grammar specification. Stands for yet another compiler compiler. A GNU alternative is bison, compatible with yacc.