Download Basic Development on UNIX

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts

Go (programming language) wikipedia , lookup

Indentation style wikipedia , lookup

Comment (computer programming) wikipedia , lookup

Dynamic-link library wikipedia , lookup

C Sharp syntax wikipedia , lookup

BASIC wikipedia , lookup

C Sharp (programming language) wikipedia , lookup

Library (computing) wikipedia , lookup

GNU Compiler Collection wikipedia , lookup

Program optimization wikipedia , lookup

Name mangling wikipedia , lookup

Interpreter (computing) wikipedia , lookup

Compiler wikipedia , lookup

Cross compiler wikipedia , lookup

Transcript
Editing & Compiling: UNIX vs. IDE
and an Intro to Architecture
Outline
• Announcements:
– Homework I on web, due Fri., 5PM by email
•
•
•
•
Basic computer architecture
Creating code
Compiling code
Integrated Development Environments
Development Process
1.
2.
3.
4.
5.
Design
Specification
Build Prototype
Implementation: write the code
Build: Get it to compile and run
a)
b)
Debug I: find and fix syntax errors
Debug II: find and fix semantic errors (testing)
6. Improve performance through tuning or redesign
Build Process
• Write code
• Pass to compiler
– Compiler creates an
“executable”--a
binary file with lowlevel instructions
equivalent to your
high-level program
• Run the executable
prog.c
for (j=0;j<5){
:
}
cc prog.c -oprog
prog
#($**@)@__!(
{ø∆˜ß√ˆœπ˚
Œ¨Ω√≈˜¡£¢∞
Compiling & 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
prog.c
Compiling & Linking
cc prog.c -oprog
for (j=0;j<5){
sin(x[j]);
}
Transnslation
prog.o
#($**@)@__!(
Œ¨Ω√≈˜¡£¢∞
printf.o
Link
#($**@)@__!(
Œ¨Ω√≈˜¡£¢∞
sin.o
prog
#($**@)@__!(
{ø∆˜ß√ˆœπ˚
Œ¨Ω√≈˜¡£¢∞
#($**@)@__!(
Œ¨Ω√≈˜¡£¢∞
Basic 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 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 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 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 UNIX
• Running the program
– just type the name (assumes . is in path)
– if that doesn’t work, type ./name
Basic Development on Windows
• 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 Windows
• 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
IDEs
• 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