Reuse in a Unix Environment Libraries Creating a Library

Reuse in a Unix Environment Libraries Creating a Library

Reuse in a Unix Environment Two commonly reused software objects in Unix Lecture 11: Unix Libraries environments source code object code Source code Reuse Kenneth M. Anderson Pro: Can modify to suit new context Con: MUST modify to suit new context Software Methods and Tools Object code Reuse CSCI 3308 - Fall Semester, 2004 Pro: No compilation required; just header file and lib Con: No ability to change functionality; Arch-specific September 27, 2004 © University of Colorado, 2004 2 Libraries Creating a Library Unix Library Compile .c files to create .o files a collection of object files, used for some purpose Use the ar command to create a library from e.g. math libraries, graphics libraries, etc. the .o files Can be reused in other programs The .o files are stored in the archive such that they The rules of marshalling (covered in last lecture) can be extracted at a later time ensure that the compiler knows how to call the This allows a linker to be smart about using the object code contained in the library object code in libraries Remember that object code is architecture-specific e.g. only those functions used are placed in the linked executable September 27, 2004 © University of Colorado, 2004 3 September 27, 2004 © University of Colorado, 2004 4 Example Example, continued main.c v1.c First, compile the support files #include “main.h” int verb() { g++ -c s1.c main(){ printf(“codes.”); subject(); } g++ -c s2.c verb(); v2.c g++ -c v1.c } int verb(){ g++ -c v2.c s1.c printf(“debugs.”); int subject() { } Second, create two different libraries printf(“Jane ”); main.h ar -r libWords1.a s1.o v1.o } int subject(); ar -r libWords2.a s2.o v2.o s2.c int verb(); int subject(){ This creates two separate libraries printf(“Ken ”); libWords1.a and libWords2.a } September 27, 2004 © University of Colorado, 2004 5 September 27, 2004 © University of Colorado, 2004 6 Checking library contents Example, continued ar -t libWords1.a strings libWords1.a Third, compile main … s1.o g++ -c main.c Jane v1.o codes. Fourth, link executable … ar -t libWords2.a g++ main.o -o main1 -lWords1 strings libWords2.a s2.o g++ main.o -o main2 -lWords2 … v2.o Ken Fifth, run programs debugs. main1 -> Jane codes. ... main2 -> Ken debugs. September 27, 2004 © University of Colorado, 2004 7 September 27, 2004 © University of Colorado, 2004 8 More info on ar command ar command syntax ar is the ARchive command ar (d|q|r|t) archive [files…] r - Replace It is similar to tar: Tape Archive replace .o files in archive with specified files Both store multiple files as a single collection q - Quick append ar focuses on storing .o files to create libraries append specified files to archive The similarity ends there d - Delete delete specified files from archive the command flags and behavior of these t - Table of Contents commands are sometimes quite different print table of contents of archive Note: This is just a sample of ar’s functionality; see the ar man page for more details September 27, 2004 © University of Colorado, 2004 9 September 27, 2004 © University of Colorado, 2004 10 Using Unix Libraries More on include directories In order to use a Unix library, a compiler needs to Any source file that wants to make use of a library, know the location of the library, the location of its must include its header file include file, and its name The -I flag specifies a directory name for this Unix compilers (g++, gcc, and cc) have command purpose flags that let you specify this information When a compiler encounters a “#include” statement, -I Directory for include files (uppercase i) it looks in the current directory and the directory -L Directory for Libraries specified by the -I flag for the file -l Name of library (lowercase L) September 27, 2004 © University of Colorado, 2004 11 September 27, 2004 © University of Colorado, 2004 12 More on Library directories More on Library names The -L option specifies a directory where Unix The -l flag (lowercase L) specifies the name libraries are stored of a Unix library When a linker needs to locate a library (in order to The compiler assumes that all libraries begin link it into an executable), the linker will look in the directory specified by the -L flag with “lib” and end in “.a” Note: you can have more than one -L and -I flags in As such, you write “-lmath” rather than a single command “-llibmath.a” The latter would cause the compiler to look for a file called liblibmath.a.a! September 27, 2004 © University of Colorado, 2004 13 September 27, 2004 © University of Colorado, 2004 14 Brooks’ Corner: Note: Order is significant Why Did The Tower of Babel Fail? The order of -l flags is significant Communication, (the lack of it) g++ main.c -o main -lWords1 -lWords2 This made it impossible to coordinate produces How do you communicate in large project teams? “Jane codes.” Informally (telephone, e-mail), meetings, workbook The object code in Words2 is ignored because the Workbook linker found matches for subject() and verb() in It is a structure placed on a project’s documents Words1 Why is it important? Technical prose lives a long time; best Swapping the libraries in the above command to get it structured formally from the beginning; it also helps produces with the distribution of information “Ken debugs.” September 27, 2004 © University of Colorado, 2004 15 September 27, 2004 © University of Colorado, 2004 16 More on the Workbook Reducing communication paths OS/360 Communication needs are reduced by division of labor Each programmer should see all the material specialization of function Each book was updated quickly (one-day) A tree structure often results from applying this Problem principle The workbook grew to 5 feet thick! However this serves power structures better than They switched to microfiche communication (since communication between siblings is We need to take advantage of on-line artifacts, often needed) information management techniques like open So communication structure is often a network hypermedia, information retrieval, and the WWW September 27, 2004 © University of Colorado, 2004 17 September 27, 2004 © University of Colorado, 2004 18 Organizational Structure Brooks outlines mission, producer, director, schedule, division of labor, and interfaces between the parts The new items are the producer and the director producer: manages project and obtains resources director: manages technical details Microsoft’s program and product manager former is director, latter does more marketing than Brooks specifies for producer but has some overlap September 27, 2004 © University of Colorado, 2004 19 .

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    6 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us