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

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

Embed Size (px)

Citation preview

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

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

Page 2: Editing & Compiling: UNIX vs. IDE and 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

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

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

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

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

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

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

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

Compiling & LinkingCompiling & Linkingprog.c

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

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

cc prog.c -oprog

Transnslation

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

Linkprintf.o

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

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

sin.o

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

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

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

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!

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

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

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

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

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

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

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

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>

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

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

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

• 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