Editing & Compiling: UNIX vs. IDE and an Intro to Architecture

Preview:

Citation preview

Editing & Compiling: UNIX vs. IDE Editing & Compiling: UNIX vs. IDE and an Intro to Architectureand an Intro to Architecture

OutlineOutline

• Announcements:– Homework I on web, due Fri., 5PM by e-mail

• Basic computer architecture• Creating code• Compiling code• Integrated Development Environments

Development ProcessDevelopment Process

1. Design2. Specification3. Build Prototype4. Implementation: write the code5. Build: Get it to compile and run

a) Debug I: find and fix syntax errorsb) Debug II: find and fix semantic errors (testing)

6. Improve performance through tuning or re-design

Build ProcessBuild Process

• Write code• Pass to compiler

– Compiler creates an “executable”--a binary file with low-level instructions equivalent to your high-level program

• Run the executable

prog.cfor (j=0;j<5){ :}

prog#($**@)@__!({ø∆˜ß√ˆœπ˚Œ¨Ω√≈˜¡£¢∞

cc prog.c -oprog

Compiling & LinkingCompiling & Linking

• Compiling consists of two steps:– Translating high-level language to machine code

• Many ways to translate same commands• Some ways may have better performance

– Linking bits of machine code together to form an executable

• Even simple programs are not self contained– You can call routines like “sin,” “printf”, or “write;” but you

don’t have to include code for these functions in your program

• Rather, “built-in” functions have already been translated and are stored in object files somewhere on the system

• Compiler must get the machine code and bundle with your executable

Compiling & LinkingCompiling & Linkingprog.c

for (j=0;j<5){ sin(x[j]);}

prog#($**@)@__!({ø∆˜ß√ˆœπ˚Œ¨Ω√≈˜¡£¢∞

cc prog.c -oprog

Transnslation

prog.o#($**@)@__!(Œ¨Ω√≈˜¡£¢∞

Linkprintf.o

#($**@)@__!(Œ¨Ω√≈˜¡£¢∞

#($**@)@__!(Œ¨Ω√≈˜¡£¢∞

sin.o

Basic Development on UNIXBasic Development on UNIX

• A note on UNIX:– UNIX is a powerful, elegant, and simple OS– For many years, UNIX systems were THE systems for

scientific work– Windows is eating away, but UNIX systems are still

common– I will typically discuss UNIX tools first and then

examine analogous tools on Windows– The UNIX tools are typically more general and were

the inspiration for the Windows analogs

Basic Development on UNIXBasic Development on UNIX

• First thing we need is a text editor– vi--terminal editor. Very basic editor that you control solely

through the keyboard (no mousing)• useful for fixing small bugs, editing input files• I wouldn’t want to write more than a few lines, though

– Emacs--classic UNIX word processor. Lots of people love emacs, but I’m not one of them

– NEdit--world’s greatest text editor• Mac/PC like interface,• good syntax highlighting (can be easily modified and

customized)• Efficient searching/replace (possible to use regular

expressions)• column cut and paste!

Basic Development on UNIXBasic Development on UNIX

• Next, we need to compile– Compilers are specific to

• programming languages (sort of)• Operating Systems/processors (definitely)

– For a given language/system combination there are often several compilers

• differ by price: GNU vs. commercial• differ by performance

Basic Development on UNIXBasic Development on UNIX

• Compiling on UNIX– cc <options> <code files> -o<executable name>– compiler name might change (gcc, cc, f77, f90), but

the format is usually the same– typical options:

• -o : name the executable (otherwise, a.out)• -O : perform some basic performance optimizations• -O2: perform some more dramatic optimizations• -c: compile to object code (don’t link)• -g: enable debugging• -l <name>: link to library lib<name>.a• -w: inhibit warnings

Basic Development on UNIXBasic Development on UNIX

• Running the program– just type the name (assumes . is in path)– if that doesn’t work, type ./name

Basic Development on Basic Development on WindowsWindows

• Editors– Free stuff like Notepad, Wordpad– NEdit– MSWord (but why?)

• Compilers– most will work from a DOS prompt in a UNIX-like

fashion– key difference is that you use /<option rather than -

<option>

Basic Development on Basic Development on WindowsWindows

• Although you can do things from a DOS prompt, most Windows programming is done in an Integrated Development Environment (IDE)– CodeWarrior– VisualStudio– Also ProjectBuilder (Mac), KDev (Linux)

• What are they integrating?– combine editor, compiler, and debugger

• Much easier to use, just edit and push a button to compile and run– can often click on compiler error messages and go

right to the line– set compiler options through menus

• Main disadvantage: disconnected from compiler– often, finding compiler options is hard and usually

just like the command line– documentation can be poor

IDEsIDEs

Recommended