Lecture 1 Course webpage Syllabus and schedule, textbooks CS Lab, Virtual Box

advertisement
Lecture 1
●
Course webpage
●
http://csserver.evansville.edu/~hwang/f15-courses/cs375.html
●
Handouts, assignments
●
Supplemental resources
●
Syllabus and schedule, textbooks
●
CS Lab, Virtual Box
Thursday, August 27
CS 375 UNIX System Programming - Lecture 1
1
Outline
●
What is UNIX?
●
What is Linux?
●
UNIX programming environment
●
Review of compiling C and C++ programs
●
Libraries
●
References: UCRE, UOVE, BLP Ch. 1
Thursday, August 27
CS 375 UNIX System Programming - Lecture 1
2
What is UNIX? - Features
●
A multiuser, multitasking operating system
●
UNIX is portable (written in C).
●
UNIX is secure (file and process security).
●
A UNIX system includes hundreds of utilities,
tools, and libraries. Tools for text processing
and programming are standard.
Thursday, August 27
CS 375 UNIX System Programming - Lecture 1
3
What is UNIX? - Features
●
●
●
The TCP/IP protocols (Internet) were developed
under UNIX and are now a core part of the OS.
While not a core part of the OS, a Graphical
User Interface is standard (X Window System
or X).
The POSIX (portable operating system
interface) standards are now used to define
UNIX-like systems. Standards define
interfaces, shells, tools, security, etc.
Thursday, August 27
CS 375 UNIX System Programming - Lecture 1
4
What is UNIX? - History
●
●
●
UNIX was developed by Bell Labs (AT&T) in the
early 1970s. AT&T gave the source code of the
OS to universities and licensed it to many other
companies. (Several companies developed
their own versions of UNIX.)
At Berkeley, several enhancements resulted in
Berkeley System Derived (BSD) UNIX.
The UNIX trademark belongs to the Open
Group. The SCO Group owns the original AT&T
source code.
Thursday, August 27
CS 375 UNIX System Programming - Lecture 1
5
From: en.wikipedia.org/wiki/History_of_Unix
Thursday, August 27
CS 375 UNIX System Programming - Lecture 1
6
What is Linux? - History
●
●
Linux is a free, POSIX compatible OS originally
written by Linus Torvalds. It was first released
in 1991. (Linus was a student in Finland at the
time.) It is now maintained and updated by
people around the world.
The term Linux properly refers to only the kernel
of the OS, but usually is used to describe the
complete OS (kernel, libraries, core utilities and
video support) or distribution.
Thursday, August 27
CS 375 UNIX System Programming - Lecture 1
7
What is Linux? - Features
●
●
Like most modern OSes Linux supports: true
multitasking, threads, virtual memory, shared
libraries, demand loading, shared copy-on-write
executables, memory management, loadable
device driver modules, video frame buffering,
and TCP/IP networking
Although originally written for the Intel 80386
processor it has been ported to many other
processors.
Thursday, August 27
CS 375 UNIX System Programming - Lecture 1
8
What is Linux? - Distributions
●
●
●
There are several Linux distributions: Red
Hat/Fedora, SuSE, Slackware, Arch Linux,
Debian, Gentoo, Knoppix, Ubuntu, etc.
A distribution consists of the complete Linux
OS, plus administration and user applications.
An installation program also is included.
Distributions provide software in packages
along with a package management program.
Thursday, August 27
CS 375 UNIX System Programming - Lecture 1
9
UNIX Programming Environments
●
CSLAB/csserver (recommended)
●
●
●
●
CSLAB/KC267/KC136 dual-boot Linux and
Windows.
Also remote log on to csserver via ssh.
Putty and WinSCP are free ssh and sftp Windows
clients.
ALL PROGRAMS MUST BE TESTED ON LAB
MACHINE BEFORE SUBMISSION!!!!!!!!!!!
Thursday, August 27
CS 375 UNIX System Programming - Lecture 1
10
UNIX Programming Environments
●
VirtualBox Virtual Machine (recommended)
●
Run Linux in a virtual machine.
●
Programming, network and administration
●
Ubuntu 14.04 installation disk available from
instructor
Thursday, August 27
CS 375 UNIX System Programming - Lecture 1
11
UNIX Programming Environments
●
Install Linux
●
●
●
Either stand-alone or dual boot
Ubuntu installer can be used to resize a Windows
partition to make room for Ubuntu
Ubuntu 14.04 installation disk available from
instructor
Thursday, August 27
CS 375 UNIX System Programming - Lecture 1
12
Compiling C and C++ Programs
●
Create source file using a text editor
$ emacs first.cpp &
#include <iostream>
using namespace std;
int main () {
cout << "CS 375 is off and running!" << endl;
return 0;
}
Thursday, August 27
CS 375 UNIX System Programming - Lecture 1
13
Compiling C and C++ Programs
●
Compile and run (or just “make first”)
$ g++ ­o first first.cpp
$ ./first
●
Refer to the man or info pages for info on g++
●
Use the “-v” option to get full details:
$ g++ ­v ­o first first.cpp
Using built­in specs.
Target: i486­linux­gnu
Configured with: ../src/configure ...
Thursday, August 27
CS 375 UNIX System Programming - Lecture 1
14
PATH Environment Variable
●
The PATH variable contains a list of directories
that is searched when looking for programs:
$ echo $PATH # display PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin ...
●
A program not in the PATH can be run by using
the complete PATHNAME:
$ /home/hwang/cs375/examples/first
$ ./first # . indicates current directory
●
You can add the current directory to the PATH
(not recommended):
$ PATH=$PATH:.
$ first
Thursday, August 27
CS 375 UNIX System Programming - Lecture 1
15
Include Files
●
Let's build a slightly more complex application:
$ emacs second.cpp &
#include <iostream>
#include "mymath.h"
using namespace std;
int main () {
int a, b, c;
cout << "Enter first integer: "; cin >> a;
cout << "Enter second integer: "; cin >> b;
c = sumtwo (a, b);
cout << "Their sum is: " << c << endl;
return 0;
}
Thursday, August 27
CS 375 UNIX System Programming - Lecture 1
16
Include Files
●
Here are the other files needed:
$ cat mymath.cpp # Source file ­ utility funcs
#include "mymath.h"
int sumtwo (int x, int y)
{ return x + y; }
$ cat mymath.h # Header file
int sumtwo (int x, int y);
●
To compile and link:
$ g++ ­o second ­I. second.cpp mymath.cpp
Thursday, August 27
CS 375 UNIX System Programming - Lecture 1
17
Include Files
●
●
g++ automatically looks in the current directory
so the “-I.” is optional here.
Standard include directories such as
/usr/include, /usr/local/include,
/usr/include/c++/4.6 are automatically searched.
Thursday, August 27
CS 375 UNIX System Programming - Lecture 1
18
UNIX Libraries
●
●
●
●
Linux supports static and shared libraries.
Shared libraries are used by default. Code from
shared libraries is loaded at runtime and may
be shared by many applications.
Shared libraries are usually located in /lib or
/usr/lib and have a .so filename extension.
Static libraries are copied into the executable
making them much larger, but may be desired if
you want to distribute a program in binary form.
Use the -static option with g++.
Thursday, August 27
CS 375 UNIX System Programming - Lecture 1
19
UNIX Libraries
●
Example: Put the sumtwo function into a static
library
$ g++ ­c mymath.cpp # generate mymath.o object file
$ ar rv libmymath.a mymath.o # add obj file to lib
$ ranlib libmymath.a # not required under Linux
$ g++ ­o second second.cpp ­L. ­lmymath
●
●
­L. option (required) tells g++ to look in the
current directory for libraries. ­lmypath tells
g++ to open the library name libmypath.a
gcc automatically looks in standard directories
for libraries: /usr/lib, /usr/local/lib
Thursday, August 27
CS 375 UNIX System Programming - Lecture 1
20
UNIX Libraries
●
The ar utility is used to create, extract, list, and
add modules to libraries.
$ ar t /usr/lib/i386­linux­gnu/libm.a # List modules in math lib
$ ar x libmymath.a mymath.o # Extract obj file
●
The nm utility can be used to list all of the
symbols in a library, object file, or executable.
$ nm ­C libmymath.a
$ nm ­C mymath.o
$ nm ­C second
Thursday, August 27
CS 375 UNIX System Programming - Lecture 1
21
UNIX Libraries
●
The ldd utility will list the shared libraries required
by a program:
$ ldd /bin/ls
linux­gate.so.1 => (0xb774b000)
UCRE, UOVE
librt.so.1 => /lib/tls/i686/cmov/librt.so.1 ...
...
$ ldd second
linux­gate.so.1 => (0xb77d7000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 ...
libm.so.6 => /lib/tls/i686/cmov/libm.so.6 ...
...
●
ldconfig is used by the administrator to make
shared libraries available to others on the system.
Thursday, August 27
CS 375 UNIX System Programming - Lecture 1
22
Download