Linux

  1. Home
  2. Computing & Technology
  3. Linux

From Authors, for About.com

inches (-1 -1 to exit): ";

cin >> dGap >> dDiameter;


if ((dGap == -1) && (dDiameter == -1))

break;

else if (dGap < dDiameter) { //do calculations

dDrop = wheeldrop (dGap, dDiameter) ;

printf ("The wheel will drop %f inches.\n\n", dDrop) ;

}

else {

printf ("Error, your train is going to crash.\n Gap bigger then wheel!\n\n") ;

}

}

}

I save the source to the file "train.c", and then invoke the GNU C++ compiler to compile the file "train.c" to an executable called "traincalc":

g++ -o traincalc train.c

I can then run the executable by typing:

./traincalc


kdevelop

(type in X-terminal) Integrated development environment for K. It is really worth downloading (if it does not come with your distribution).


glade

(type in X-terminal) A graphical builder of user interfaces.

"Glade is an interface builder developed by Damon Chaplin. It allows graphical and interactive construction of Gnome/Gtk graphical user interfaces. From Glade, the generated interface can be saved in a xml file or directly exported to C code to be included in a C source tree. Glade also allows to define the name of the handlers - functions - to be attached to the various event of the interface. For example the function (name) to be called when a specific menu item is pressed." (From: http://linuxtoday.com/news_story.php3?ltsn=2000-07-16-013-04-PS-GN)

What "C" functions are available for programming under Linux?

Too many for a newbie like myself. I started by studying the header files (*.h) in the directory /usr/include and all its subdirectories. To find a header file that contains a prototype for a given function (e.g., cosh) I would do something like:

cd /usr/include

grep -H "cosh" *.h

There are also many interesting libraries that are not a part of a typical distribution, e.g., GNU libraries for scientific computing (GSL): http://sources.redhat.com/gsl/. Also check: http://www.phy.duke.edu/~hsg/sci-computing.html.

8.2.7 Assembler

as

nasm

ndisasm

(3 commands). Assembler, an alternative "native assembler" and a disassembler. Send in your newbie examples how to use those :) E.g.: ndisasm /bin/sh |more produces a long output of "assembler mnemonics" from a binary on my system (/bin/sh in this example) but I cannot understand it anyway :( To learn more about nasm, you may want to see: file:///usr/share/doc/nasm-doc-0.98/html/nasmdoc0.html

Example Intel assembly for Linux 2.2.17 or higher:

;; hello.asm: Copyright (C) 2001 by Brian Raiter, under the GNU

;; General Public License (version 2 or later). No warranty.


BITS 32


org 0x05936000


db 0x7F, "ELF"

dd 1

dd 0

dd $$

dw 2

dw 3

_start: inc eax ; 1 == exit syscall no.

mov dl, 13 ; set edx to length of message

cmp al, _start - $$

pusha ; save eax and ebx

xchg eax, ebx ; set ebx to 1 (stdout)

add eax, dword 4 ; 4 == write syscall no.

mov ecx, msg ; point ecx at message

int 0x80 ; eax = write(ebx, ecx, edx)

popa ; set eax to 1 and ebx to 0

int 0x80 ; exit(bl)

dw 0x20

dw 1

msg: db 'hello, world', 10

After saving this to a plain-text file hello.asm, I can build it to an output file "hello" and make the output executable using the command:

nasm -f bin -o hello hello.asm && chmod +x hello

and execute it using:

./hello

The example above is borrowed from http://www.muppetlabs.com/~breadbox/software/tiny/.

Why would somebody use assembler? After building from

Explore Linux

About.com Special Features

Build Your Own Website

Step-by-step advice on how to do everything from choosing a Web host to promoting your content. More >

Connect Your Home Computers

Easy ways to connect two computers for networking purposes. More >

Linux

  1. Home
  2. Computing & Technology
  3. Linux

©2009 About.com, a part of The New York Times Company.

All rights reserved.