Building Programs with Make. What does it mean to Build a Program?
|
|
- Juniper Cummings
- 8 years ago
- Views:
Transcription
1 Building Programs with Make John Pormann, Ph.D. What does it mean to Build a Program? Often, a single executable program is compiled and linked from multiple source-code files and multiple libraries We could type: % gcc -O -o prog.exe file1.c file2.c file3.c file4.c -llib1 -llib2 But this would be: A lot to type each time (and typos will lead to errors) Inefficient -- regardless of what files may have changed, all 4 *.c files will be re-compiled each time What if file3.c calls functions in file4.c (that are changing)? What if file1.c cannot be compiled with -O? What if we want to split file2.c into file2a.c and file2b.c? What if we don t control file4.c, we have to copy it from someone else? 1
2 Program-File Dependencies We can think of the final program as being dependent on the source code files and libraries file4.c file2.c file3.c lib1.a file1.c lib2.a prog.exe If a file changes, the dependent pieces must be re-compiled Dependencies, cont d Digging deeper, we know that C-code is compiled to Obj-code; then the Obj-code is linked (with libraries) into the EXE-code file4.c file2.c file3.c file4.o file1.c file2.o file3.o lib1.a file1.o lib2.a prog.exe 2
3 Efficiency Now, if file1.c changes, we see that file1.o must be rebuilt (recompiled) And because file1.o changes, prog.exe must also be rebuilt... but (existing) file2.o, file3.o, and file4.o are reused in the linkstage for prog.exe MUCH FASTER!! We can also do an efficient rebuild with the more complex relationships (file3/file4)... but we have to be careful to explain what the relationship is Including Header Files Global header files can be problematic file3n4.h file4.c file2.c file3.c file4.o file1.c file2.o file3.o lib1.a file1.o lib2.a prog.exe 3
4 The Make Program Unix/Linux include a utility called make that can help build your program, given a set of dependency criteria You may have used this with other open-source projects %./configure % make configure is another tool that can be used to create a makefile for different computers/architectures/operating systems make will build the library or executable You will probably see a lot of gcc commands fly by Make Program, cont d By default, make will look for a file called makefile or Makefile in the current directory You can also specify another filename with -f myprog.mk The makefile will define rules and dependencies rules allow for default operations on some class of file-types E.g. defines basic compilation steps for *.c to be converted to *.o dependencies identify which files have to be re-built if other files are touched; and what command is used to build them You can also include other makefiles in the current one Useful for OS-specific customization Also allows you to define and use environment variables 4
5 Makefile Example # comment lines # can be added for clarity prog.exe: file1.o file2.o file3.o file4.o By default, builds the first target in the makefile gcc -o prog.exe file1.o file2.o file3.o file4.o -llib1 -llib2 file1.o: file1.c gcc -o file1.o -c file1.c file2.o: file2.c gcc -o file2.o -c file2.c gcc -o file3.o -c file3.c file4.o: file4.c gcc -o file4.o -c file4.c Note: the action lines MUST start with a tab In this example, no defaults are used, no simplifications are made This level of detail can be tedious if your program uses 10 s or 100 s of files Makefile Example, cont d To build the program, we just type: % make You ll see a lot of gcc lines go by: % make gcc -o file1.o -c file1.c gcc -o file2.o -c file2.c gcc -o file3.o -c file3.c gcc -o file4.o -c file4.c gcc -o prog.exe file1.o file2.o file3.o file4.o -llib1 -llib2 That s it, your program is ready to run What if you edit file2.c?? % make gcc -o file2.o -c file2.c gcc -o prog.exe file1.o file2.o file3.o file4.o -llib1 -llib2 5
6 A Quick Warning Make is reasonably intelligent It will not build files that it does not think need to be built It looks at the Unix file-access times to determine if a given.c and.o file are the same But make only knows what the OS tells it!! File-access times can sometimes be wrong when you scp/sftp a file from another system It is easy to forget about header files in your dependency lists If a function changes arguments, some compiled files may be using the old arguments, and some use the new arguments If you re seeing strange behavior, try rm *.o and start over This is often put in the makefile as a target named clean Multiple Targets in a Makefile A single makefile can hold commands for multiple target outputs E.g. prog1.exe and prog2.exe use lots of similar functions and files, so they can be both put into a single makefile #... prog1.exe: file1.o file2.o $(CC) $(LFLAGS) -o prog1.exe file1.o file2.o prog2.exe: file1.o file3.o $(CC) $(LFLAGS) -o prog2.exe file1.o file3.o #... To identify which one to use: % make prog1.exe % make prog2.exe 6
7 Multiple Targets, cont d It is often useful to add Phony targets which only group related build items #....PHONY: all #... all: prog1.exe prog2.exe # really nothing to do for all, # just build prog1 and prog2 prog1.exe: file1.o file2.o $(CC) $(LFLAGS) -o prog1.exe file1.o file2.o prog2.exe: file1.o file3.o $(CC) $(LFLAGS) -o prog2.exe file1.o file3.o clean: rm *.o prog1.exe prog2.exe % make clean #... % make prog1.exe % make prog2.exe % make % make all More Complex Commands If you need to do more work for a given build-target, you can put them on subsequent, tabbed lines: # basic makefile # file3 gets no optimization flag # and we ll print the diff relative to # some previous copy of the file diff file3.c file3_orig.c $(CC) $(DEF) -o file3.o -c file3.c # otherwise, compilation will be optimized $(CC) $(CFLAGS) -o $@ -c $< 7
8 Compiler Arguments/Flags What about compiler options/flags/arguments? If needed, you can always include them, as usual, in the gcc lines for each individual file: # comment lines # can be added for clarity prog.exe: file1.o file2.o file3.o file4.o gcc -O -o prog.exe file1.o file2.o file3.o file4.o -llib1 -llib2 file1.o: file1.c gcc -O -D_MY_C_DEFINE -o file1.o -c file1.c # file2 has lots of small functions, let s inline them for speed file2.o: file2.c gcc -O -finline-functions -o file2.o -c file2.c # file3 will crash with -O gcc -o file3.o -c file3.c file4.o: file4.c gcc -O -o file4.o -c file4.c Again, for lots of files this can get tedious. Simplifying the Makefile IF all (or most) of your files are compiled the same way, you can define a default.c.o rule I.e. how should make convert a *.c file to a *.o file? # basic makefile prog.exe: file1.o file2.o file3.o file4.o gcc -o prog.exe file1.o file2.o file3.o file4.o -llib1 -llib2 gcc -o $@ -c $< In the.c.o rule, we use $@ for the name of the target.o file, and $< for the name of the input file You can define.f.o for Fortran,.cpp.o or.cc.o for C++ You can even create your own suffixes if needed 8
9 Simplifying, the Makefile cont d IF a dependency line exists for a specific file, then that line is used and NOT the default rule So you can define a base compilation, then override when needed # basic makefile prog.exe: file1.o file2.o file3.o file4.o gcc -o prog.exe file1.o file2.o file3.o file4.o -llib1 -llib2 # file3 gets no optimization flag gcc -o file3.o -c file3.c # otherwise, compilation will be optimized gcc -O -o $@ -c $< Running make : Note, we ve now added -O to ALL default compilations! % make -f makefile2 gcc -O -o file1.o -c file1.c gcc -O -o file2.o -c file2.c gcc -o file3.o -c file3.c gcc -O -o file4.o -c file4.c gcc -o prog.exe file1.o file2.o file3.o file4.o -llib1 -llib2 Common Options/Flags If you use the same set of compiler flags a lot, you can declare them in a variable and re-use them through the variable name This makes it easy to change one line and recompile everything for debug or production code # basic makefile CFLAGS = -O -D_MY_C_DEFINE LFLAGS = -O prog.exe: file1.o file2.o file3.o file4.o gcc $(LFLAGS) -o prog.exe file1.o file2.o file3.o file4.o \ -llib1 -llib2 # file3 gets no optimization flag gcc -o file3.o -c file3.c Continues on next line # otherwise, compilation will be optimized gcc $(CFLAGS) -o $@ -c $< 9
10 Common Options/Flags, cont d To change to debug mode, we only modify the top lines of the makefile: # basic makefile CFLAGS = -g -D_MY_C_DEFINE LFLAGS = -g prog.exe: file1.o file2.o file3.o file4.o gcc $(LFLAGS) -o prog.exe file1.o file2.o file3.o file4.o \ -llib1 -llib2 # file3 gets no optimization flag gcc -o file3.o -c file3.c # otherwise, compilation will be optimized gcc $(CFLAGS) -o $@ -c $< Note that make will NOT realize that you need to recompile everything now (for the -g to take effect everywhere) A Usual Makefile # basic makefile CC = gcc OPT = -O DEF = -D_MY_C_DEFINE CFLAGS = $(OPT) $(DEF) LFLAGS = -O OBJS = file1.o file2.o file3.o file4.o LIBS = -llib1 -llib2 prog.exe: $(OBJS) $(CC) $(LFLAGS) -o prog.exe $(OBJS) $(LIBS) # file3 gets no optimization flag $(CC) $(DEF) -o file3.o -c file3.c # otherwise, compilation will be optimized $(CC) $(CFLAGS) -o $@ -c $< 10
11 A Usual Makefile, cont d Why use $(OPT) and $(DEF) and $(CFLAGS)?... CFLAGS = -O -D_MY_C_DEFINE LFLAGS = -O... # file3 gets no optimization flag $(CC) -D_MY_C_DEFINE -o file3.o -c file3.c # otherwise, compilation will be optimized $(CC) $(CFLAGS) -o $@ -c $< What if -D_MY_C_DEFINE changes? We d have to change it in two location in the makefile... will you really remember to do that? In previous makefile: Everything above OBJS = is flexible Everything below OBJS = is fixed Including other Makefiles An makefile may include other makefiles or makefile-fragments # basic makefile include./debug.mk #include./optimize.mk OBJS = file1.o file2.o file3.o file4.o LIBS = -llib1 -llib2 prog.exe: $(OBJS) $(CC) $(LFLAGS) -o prog.exe $(OBJS) $(LIBS) # file3 gets no optimization flag $(CC) -o file3.o -c file3.c # otherwise, compilation will be optimized $(CC) $(CFLAGS) -o $@ -c $< # debug.mk CC = gcc CFLAGS = -g -D_VERBOSE LFLAGS = -g # optimize.mk CC = gcc CFLAGS = -O -D_FAST_SOLVER LFLAGS = -O 11
12 Cross-Platform Builds make can actually handle cross-platform builds fairly smoothly Although you need some help (from the OS or the user) to pick a good set of options # header for gcc on Linux CC = gcc CFLAGS = -O -D_MY_C_DEFINE LFLAGS = -O # header for cc on SGI CC = cc CFLAGS = -fast -D_MY_OS=IRIX LFLAGS = -fast # header for Intel compilers CC = icc CFLAGS = -O3 -D_MY_OS=LINUX LFLAGS = -O3 It is often easy to compartmentalize the changes Cross-Platform Builds, cont d # basic makefile # OS-specific stuff (CC, CFLAGS) defined in # separate file include./os_stuff.mk OBJS = file1.o file2.o file3.o file4.o LIBS = -llib1 -llib2 YOU have to set os_stuff.mk properly (or copy from one of several pre-defined files) prog.exe: $(OBJS) $(CC) $(LFLAGS) -o prog.exe $(OBJS) $(LIBS) # file3 gets no optimization flag $(CC) -o file3.o -c file3.c # otherwise, compilation will be optimized $(CC) $(CFLAGS) -o $@ -c $< 12
13 Recursive Builds You can also have make enter a subdirectory and do a make Useful for projects that require libraries that require libraries... # top-level makefile prog.exe: ( cd lib1 ; make ) ( cd lib2 ; make ) $(CC) -o prog.exe lib1/lib1.a lib2/lib2.a Why the parens (...)? If you cd into a subdirectory, you would have to remember to cd out And what if one of the commands inside that subdirectory do a cd and forget to cd..? The parens execute the commands, then return to the original directory Usually separate commands by semi-colons Recursive Builds, cont d topdir # topdir makefile all: ( cd lib1; make ) ( cd lib2; make ) lib1 # lib1 makefile lib1: lib11.o lib12.o $(CC) -o lib1.a lib11.o lib12.o $(CC) -o $@ -c $< lib2 # lib2 makefile lib2: lib21.o lib22.o $(CC) -o lib2.a lib21.o lib22.o $(CC) -o $@ -c $< 13
14 Putting It All Together How to do multiple targets, multiple subdirectories, cross-platform program building? Top-level directory Makefile - has targets like all and clean, but doesn t really do the work buildenv.mk - includes OS-specific variables, copied from one of several build_linux.mk, build_sgi.mk, build_intel.mk, etc. buildtype.mk - includes production vs. debug variables, copied from one of build_opt.mk or build_debug.mk Component-specific subdirectories Makefile - has targets for program-components, files, etc. Each one includes../buildenv.mk and../buildtype.mk For sub-sub-dirs, include../../buildenv.mk, etc. Putting It All Together, cont d topdir buildenv.mk buildtype.mk lib1 # build_linux.mk CC = gcc OPT = -O DEBUG = -g # build_intel.mk CC = icc OPT = -fast DEBUG = -g # build_debug.mk CFLAGS = $(DEBUG) LFLAGS = $(DEBUG) # build_opt.mk CFLAGS = $(OPT) LFLAGS = $(OPT) # topdir makefile include./buildenv.mk include./buildtype.mk all: ( cd lib1; make ) ( cd lib2; make ) clean: ( cd lib1; make clean ) ( cd lib2; make clean ) rm *.o lib2 # lib1 makefile include../buildenv.mk include../buildtype.mk lib1: lib11.o lib12.o $(CC) $(LFLAGS) -o lib1.a lib11.o lib12.o clean: rm *.o $(CC) $(CFLAGS) -o $@ -c $< 14
15 Suffix Rules Make supports a lot of standard compilations as suffix rules.c.o.cpp.o.f.o But this is somewhat OS- or version-specific You can create your own using the special variable.suffixes.suffixes:.f77.java.class....f77.o: $(F77) -o $@ -c $<.java.class: $(JAVAC) -o $@ -c $< Other Makefile Tricks Adding sign to the beginning of a command hides the command # NOTE: this is not a.phony target!! all: prog1.exe All done with build Without make would print the line echo... then execute the line, which would print the... Adding a - sign to the beginning of a command ignores errors # remove old files clean: -rm prog.exe *.o Without the -, make might see an error from rm if prog.exe did not already exist 15
16 Non-Programming Uses for Make While make is particularly useful for building programs, it really is just a dependency/rule processing engine You can use it to automate many other tasks Perl-documentation to Man page conversion:.suffixes:.pod.3.html MAN_FILES = abc.3 def.3 ghi.3 HTML_FILES = abc.html def.html ghi.html final_man: $(MAN_FILES) echo DONE with MAN final_html: $(HTML_FILES) echo DONE with HTML.pod.3: pod2man $<.pod.html: pod2html $< 16
Building Software Systems. Multi-module C Programs. Example Multi-module C Program. Example Multi-module C Program
Building Software Systems Multi-module C Programs Software systems need to be built / re-built during the development phase if distributed in source code form (change,compile,test,repeat) (assists portability)
More informationTo reduce or not to reduce, that is the question
To reduce or not to reduce, that is the question 1 Running jobs on the Hadoop cluster For part 1 of assignment 8, you should have gotten the word counting example from class compiling. To start with, let
More informationCMPT 373 Software Development Methods. Building Software. Nick Sumner wsumner@sfu.ca Some materials from Shlomi Fish & Kitware
CMPT 373 Software Development Methods Building Software Nick Sumner wsumner@sfu.ca Some materials from Shlomi Fish & Kitware What does it mean to build software? How many of you know how to build software?
More informationEclipse Help
Software configuration management We ll start with the nitty gritty and then get more abstract. Configuration and build Perdita Stevens School of Informatics University of Edinburgh 1. Version control
More informationCPSC 226 Lab Nine Fall 2015
CPSC 226 Lab Nine Fall 2015 Directions. Our overall lab goal is to learn how to use BBB/Debian as a typical Linux/ARM embedded environment, program in a traditional Linux C programming environment, and
More informationOnline Chapter B. Running Programs
Online Chapter B Running Programs This online chapter explains how you can create and run Java programs without using an integrated development environment (an environment like JCreator). The chapter also
More information[PRAKTISCHE ASPEKTE DER INFORMATIK WS 13/14]
2013/14 Institut für Computergraphik, TU Braunschweig Pablo Bauszat [PRAKTISCHE ASPEKTE DER INFORMATIK WS 13/14] All elemental steps that will get you started for your new life as a computer science programmer.
More informationDeveloping Platform Independent Software using the AutoTool Suite
Developing Platform Independent Software using the AutoTool Suite Jason But Outline Why develop Platform Independent code From the users perspective From the developers perspective The Autotools Suite
More informationRunning your first Linux Program
Running your first Linux Program This document describes how edit, compile, link, and run your first linux program using: - Gnome a nice graphical user interface desktop that runs on top of X- Windows
More informationHow to Write a Simple Makefile
Chapter 1 CHAPTER 1 How to Write a Simple Makefile The mechanics of programming usually follow a fairly simple routine of editing source files, compiling the source into an executable form, and debugging
More informationGit Basics. Christopher Simpkins chris.simpkins@gatech.edu. Chris Simpkins (Georgia Tech) CS 2340 Objects and Design CS 1331 1 / 22
Git Basics Christopher Simpkins chris.simpkins@gatech.edu Chris Simpkins (Georgia Tech) CS 2340 Objects and Design CS 1331 1 / 22 Version Control Systems Records changes to files over time Allows you to
More informationUsing Dedicated Servers from the game
Quick and short instructions for running and using Project CARS dedicated servers on PC. Last updated 27.2.2015. Using Dedicated Servers from the game Creating multiplayer session hosted on a DS Joining
More informationHow to use PDFlib products with PHP
How to use PDFlib products with PHP Last change: July 13, 2011 Latest PDFlib version covered in this document: 8.0.3 Latest version of this document available at: www.pdflib.com/developer/technical-documentation
More informationBuilding Software via Shared Knowledge
Building Software via Shared Knowledge José R. Herrero, Juan J. Navarro Computer Architecture Department, Universitat Politècnica de Catalunya * Jordi Girona 1-3, Mòdul D6, 08034 Barcelona, Spain {josepr,juanjo}@ac.upc.es
More informationMakefiles and ROOT. Sean Brisbane 12/12/11
Makefiles and ROOT Sean Brisbane 12/12/11 Introduction and purpose By the end of today you should know: The basics of the g++ compiler; How to write Makefiles for medium-sized projects; How to build a
More informationCS 103 Lab Linux and Virtual Machines
1 Introduction In this lab you will login to your Linux VM and write your first C/C++ program, compile it, and then execute it. 2 What you will learn In this lab you will learn the basic commands and navigation
More informationTNM093 Practical Data Visualization and Virtual Reality Laboratory Platform
October 6, 2015 1 Introduction The laboratory exercises in this course are to be conducted in an environment that might not be familiar to many of you. It is based on open source software. We use an open
More informationCS197U: A Hands on Introduction to Unix
CS197U: A Hands on Introduction to Unix Lecture 4: My First Linux System J.D. DeVaughn-Brown University of Massachusetts Amherst Department of Computer Science jddevaughn@cs.umass.edu 1 Reminders After
More informationHypercosm. Studio. www.hypercosm.com
Hypercosm Studio www.hypercosm.com Hypercosm Studio Guide 3 Revision: November 2005 Copyright 2005 Hypercosm LLC All rights reserved. Hypercosm, OMAR, Hypercosm 3D Player, and Hypercosm Studio are trademarks
More informationSetting up PostgreSQL
Setting up PostgreSQL 1 Introduction to PostgreSQL PostgreSQL is an object-relational database management system based on POSTGRES, which was developed at the University of California at Berkeley. PostgreSQL
More informationVersion Control with Subversion
Version Control with Subversion http://www.oit.duke.edu/scsc/ http://wiki.duke.edu/display/scsc scsc@duke.edu John Pormann, Ph.D. jbp1@duke.edu Software Carpentry Courseware This is a re-work from the
More informationQ N X S O F T W A R E D E V E L O P M E N T P L A T F O R M v 6. 4. 10 Steps to Developing a QNX Program Quickstart Guide
Q N X S O F T W A R E D E V E L O P M E N T P L A T F O R M v 6. 4 10 Steps to Developing a QNX Program Quickstart Guide 2008, QNX Software Systems GmbH & Co. KG. A Harman International Company. All rights
More informationLinux command line. An introduction to the Linux command line for genomics. Susan Fairley
Linux command line An introduction to the Linux command line for genomics Susan Fairley Aims Introduce the command line Provide an awareness of basic functionality Illustrate with some examples Provide
More informationJava Language Tools COPYRIGHTED MATERIAL. Part 1. In this part...
Part 1 Java Language Tools This beginning, ground-level part presents reference information for setting up the Java development environment and for compiling and running Java programs. This includes downloading
More informationMatrixSSL Getting Started
MatrixSSL Getting Started TABLE OF CONTENTS 1 OVERVIEW... 3 1.1 Who is this Document For?... 3 2 COMPILING AND TESTING MATRIXSSL... 4 2.1 POSIX Platforms using Makefiles... 4 2.1.1 Preparation... 4 2.1.2
More informationFor more about patterns & practices: http://msdn.microsoft.com/practices/ My blog: http://ademiller.com/tech/
For more about patterns & practices: http://msdn.microsoft.com/practices/ My blog: http://ademiller.com/tech/ 1 2 Stop me. Ask questions. Tell me if you ve heard it all before or you want to hear about
More informationtmk A Multi-Site, Multi-Platform System for Software Development
First European Tcl/Tk User Meeting, June 15 16 2000, TU Hamburg-Harburg tmk A Multi-Site, Multi-Platform System for Software Development Hartmut Schirmacher, Stefan Brabec Max-Planck-Institut für Informatik
More informationWriting R packages. Tools for Reproducible Research. Karl Broman. Biostatistics & Medical Informatics, UW Madison
Writing R packages Tools for Reproducible Research Karl Broman Biostatistics & Medical Informatics, UW Madison kbroman.org github.com/kbroman @kwbroman Course web: kbroman.org/tools4rr R packages and the
More informationAdd Feedback Workflow
Add Feedback Workflow Add Feedback Collection workflow to a list or library The workflows included with SharePoint products are features that you can use to automate your business processes, making them
More informationBrent A. Perdue. July 15, 2009
Title Page Object-Oriented Programming, Writing Classes, and Creating Libraries and Applications Brent A. Perdue ROOT @ TUNL July 15, 2009 B. A. Perdue (TUNL) OOP, Classes, Libraries, Applications July
More informationVisual Basic Programming. An Introduction
Visual Basic Programming An Introduction Why Visual Basic? Programming for the Windows User Interface is extremely complicated. Other Graphical User Interfaces (GUI) are no better. Visual Basic provides
More informationEasing embedded Linux software development for SBCs
Page 1 of 5 Printed from: http://www.embedded-computing.com/departments/eclipse/2006/11/ Easing embedded Linux software development for SBCs By Nathan Gustavson and Eric Rossi Most programmers today leaving
More informationBasic C Shell. helpdesk@stat.rice.edu. 11th August 2003
Basic C Shell helpdesk@stat.rice.edu 11th August 2003 This is a very brief guide to how to use cshell to speed up your use of Unix commands. Googling C Shell Tutorial can lead you to more detailed information.
More informationXcode Project Management Guide. (Legacy)
Xcode Project Management Guide (Legacy) Contents Introduction 10 Organization of This Document 10 See Also 11 Part I: Project Organization 12 Overview of an Xcode Project 13 Components of an Xcode Project
More informationCommand Line Crash Course For Unix
Command Line Crash Course For Unix Controlling Your Computer From The Terminal Zed A. Shaw December 2011 Introduction How To Use This Course You cannot learn to do this from videos alone. You can learn
More information8.5. <summary>...26 9. Cppcheck addons...27 9.1. Using Cppcheck addons...27 9.1.1. Where to find some Cppcheck addons...27 9.2.
Cppcheck 1.72 Cppcheck 1.72 Table of Contents 1. Introduction...1 2. Getting started...2 2.1. First test...2 2.2. Checking all files in a folder...2 2.3. Excluding a file or folder from checking...2 2.4.
More information[PRAKTISCHE ASPEKTE DER INFORMATIK WS 13/14]
2013/14 Institut für Computergraphik, TU Braunschweig Pablo Bauszat [PRAKTISCHE ASPEKTE DER INFORMATIK WS 13/14] All elemental steps that will get you started for your new life as a computer science programmer.
More informationHow To Port A Program To Dynamic C (C) (C-Based) (Program) (For A Non Portable Program) (Un Portable) (Permanent) (Non Portable) C-Based (Programs) (Powerpoint)
TN203 Porting a Program to Dynamic C Introduction Dynamic C has a number of improvements and differences compared to many other C compiler systems. This application note gives instructions and suggestions
More informationGDB Tutorial. A Walkthrough with Examples. CMSC 212 - Spring 2009. Last modified March 22, 2009. GDB Tutorial
A Walkthrough with Examples CMSC 212 - Spring 2009 Last modified March 22, 2009 What is gdb? GNU Debugger A debugger for several languages, including C and C++ It allows you to inspect what the program
More informationCode::Block manual. for CS101x course. Department of Computer Science and Engineering Indian Institute of Technology - Bombay Mumbai - 400076.
Code::Block manual for CS101x course Department of Computer Science and Engineering Indian Institute of Technology - Bombay Mumbai - 400076. April 9, 2014 Contents 1 Introduction 1 1.1 Code::Blocks...........................................
More informationCSE 374 Programming Concepts & Tools. Laura Campbell (Thanks to Hal Perkins) Winter 2014 Lecture 16 Version control and svn
CSE 374 Programming Concepts & Tools Laura Campbell (Thanks to Hal Perkins) Winter 2014 Lecture 16 Version control and svn Where we are Learning tools and concepts relevant to multi-file, multi-person,
More informationOLCF Best Practices. Bill Renaud OLCF User Assistance Group
OLCF Best Practices Bill Renaud OLCF User Assistance Group Overview This presentation covers some helpful information for users of OLCF Staying informed Some aspects of system usage that may differ from
More informationCNT5106C Project Description
Last Updated: 1/30/2015 12:48 PM CNT5106C Project Description Project Overview In this project, you are asked to write a P2P file sharing software similar to BitTorrent. You can complete the project in
More information10 STEPS TO YOUR FIRST QNX PROGRAM. QUICKSTART GUIDE Second Edition
10 STEPS TO YOUR FIRST QNX PROGRAM QUICKSTART GUIDE Second Edition QNX QUICKSTART GUIDE A guide to help you install and configure the QNX Momentics tools and the QNX Neutrino operating system, so you can
More informationProfessional. SlickEdif. John Hurst IC..T...L. i 1 8 О 7» \ WILEY \ Wiley Publishing, Inc.
Professional SlickEdif John Hurst IC..T...L i 1 8 О 7» \ WILEY \! 2 0 0 7 " > Wiley Publishing, Inc. Acknowledgments Introduction xiii xxv Part I: Getting Started with SiickEdit Chapter 1: Introducing
More informationPenetration Testing Lab. Reconnaissance and Mapping Using Samurai-2.0
Penetration Testing Lab Reconnaissance and Mapping Using Samurai-2.0 Notes: 1. Be careful about running most of these tools against machines without permission. Even the poorest intrusion detection system
More informationUnix Shell Scripts. Contents. 1 Introduction. Norman Matloff. July 30, 2008. 1 Introduction 1. 2 Invoking Shell Scripts 2
Unix Shell Scripts Norman Matloff July 30, 2008 Contents 1 Introduction 1 2 Invoking Shell Scripts 2 2.1 Direct Interpretation....................................... 2 2.2 Indirect Interpretation......................................
More informationcsce4313 Programming Languages Scanner (pass/fail)
csce4313 Programming Languages Scanner (pass/fail) John C. Lusth Revision Date: January 18, 2005 This is your first pass/fail assignment. You may develop your code using any procedural language, but you
More informationVersion Control with. Ben Morgan
Version Control with Ben Morgan Developer Workflow Log what we did: Add foo support Edit Sources Add Files Compile and Test Logbook ======= 1. Initial version Logbook ======= 1. Initial version 2. Remove
More informationSimbaEngine SDK 9.4. Build a C++ ODBC Driver for SQL-Based Data Sources in 5 Days. Last Revised: October 2014. Simba Technologies Inc.
Build a C++ ODBC Driver for SQL-Based Data Sources in 5 Days Last Revised: October 2014 Simba Technologies Inc. Copyright 2014 Simba Technologies Inc. All Rights Reserved. Information in this document
More informationUniversity of Hull Department of Computer Science. Wrestling with Python Week 01 Playing with Python
Introduction Welcome to our Python sessions. University of Hull Department of Computer Science Wrestling with Python Week 01 Playing with Python Vsn. 1.0 Rob Miles 2013 Please follow the instructions carefully.
More informationCEFNS Web Hosting a Guide for CS212
CEFNS Web Hosting a Guide for CS212 INTRODUCTION: TOOLS: In CS212, you will be learning the basics of web development. Therefore, you want to keep your tools to a minimum so that you understand how things
More informationAdd Approval Workflow
Add Approval Workflow Add Approval workflow to a list or library The workflows included with SharePoint products are features that you can use to automate your business processes, making them both more
More informationGetting off the ground when creating an RVM test-bench
Getting off the ground when creating an RVM test-bench Rich Musacchio, Ning Guo Paradigm Works rich.musacchio@paradigm-works.com,ning.guo@paradigm-works.com ABSTRACT RVM compliant environments provide
More informationImprove Fortran Code Quality with Static Analysis
Improve Fortran Code Quality with Static Analysis This document is an introductory tutorial describing how to use static analysis on Fortran code to improve software quality, either by eliminating bugs
More informationLine Tracking Basic Lesson
Line Tracking Basic Lesson Now that you re familiar with a few of the key NXT sensors, let s do something a little more interesting with them. This lesson will show you how to use the Light Sensor to track
More informationPorting CodeWarrior Projects to Xcode. (Legacy)
Porting CodeWarrior Projects to Xcode (Legacy) Contents Introduction to Porting CodeWarrior Projects to Xcode 7 Prerequisites 7 Further Reading 8 Organization of This Document 8 Feedback and Mail List
More informationSource Code Management/Version Control
Date: 3 rd March 2005 Source Code Management/Version Control The Problem: In a typical software development environment, many developers will be engaged in work on one code base. If everyone was to be
More informationUsing Subversion in Computer Science
School of Computer Science 1 Using Subversion in Computer Science Last modified July 28, 2006 Starting from semester two, the School is adopting the increasingly popular SVN system for management of student
More informationUsing Karel with Eclipse
Mehran Sahami Handout #6 CS 106A September 23, 2015 Using Karel with Eclipse Based on a handout by Eric Roberts Once you have downloaded a copy of Eclipse as described in Handout #5, your next task is
More informationProgramming with the Dev C++ IDE
Programming with the Dev C++ IDE 1 Introduction to the IDE Dev-C++ is a full-featured Integrated Development Environment (IDE) for the C/C++ programming language. As similar IDEs, it offers to the programmer
More informationAdvanced Bash Scripting. Joshua Malone (jmalone@ubergeeks.com)
Advanced Bash Scripting Joshua Malone (jmalone@ubergeeks.com) Why script in bash? You re probably already using it Great at managing external programs Powerful scripting language Portable and version-stable
More informationSamsung Xchange for Mac User Guide. Winter 2013 v2.3
Samsung Xchange for Mac User Guide Winter 2013 v2.3 Contents Welcome to Samsung Xchange IOS Desktop Client... 3 How to Install Samsung Xchange... 3 Where is it?... 4 The Dock menu... 4 The menu bar...
More informationTU04. Best practices for implementing a BI strategy with SAS Mike Vanderlinden, COMSYS IT Partners, Portage, MI
TU04 Best practices for implementing a BI strategy with SAS Mike Vanderlinden, COMSYS IT Partners, Portage, MI ABSTRACT Implementing a Business Intelligence strategy can be a daunting and challenging task.
More informationCASHNet Secure File Transfer Instructions
CASHNet Secure File Transfer Instructions Copyright 2009, 2010 Higher One Payments, Inc. CASHNet, CASHNet Business Office, CASHNet Commerce Center, CASHNet SMARTPAY and all related logos and designs are
More informationTeamstudio USER GUIDE
Teamstudio Software Engineering Tools for IBM Lotus Notes and Domino USER GUIDE Edition 30 Copyright Notice This User Guide documents the entire Teamstudio product suite, including: Teamstudio Analyzer
More informationHands-On UNIX Exercise:
Hands-On UNIX Exercise: This exercise takes you around some of the features of the shell. Even if you don't need to use them all straight away, it's very useful to be aware of them and to know how to deal
More informationC o m m a n d l i n e
m a k e f i l e s Make files are a technique by which disparate software tools may be marshalled to work on the construction of a single software project. C o m m a n d l i n e Make files work using command
More informationSupported platforms & compilers Required software Where to download the packages Geant4 toolkit installation (release 9.6)
Supported platforms & compilers Required software Where to download the packages Geant4 toolkit installation (release 9.6) Configuring the environment manually Using CMake CLHEP full version installation
More informationCode::Blocks Student Manual
Code::Blocks Student Manual Lawrence Goetz, Network Administrator Yedidyah Langsam, Professor and Theodore Raphan, Distinguished Professor Dept. of Computer and Information Science Brooklyn College of
More informationDevelopment_Setting. Step I: Create an Android Project
A step-by-step guide to setup developing and debugging environment in Eclipse for a Native Android Application. By Yu Lu (Referenced from two guides by MartinH) Jan, 2012 Development_Setting Step I: Create
More informationComputer Programming C++ Classes and Objects 15 th Lecture
Computer Programming C++ Classes and Objects 15 th Lecture 엄현상 (Eom, Hyeonsang) School of Computer Science and Engineering Seoul National University Copyrights 2013 Eom, Hyeonsang All Rights Reserved Outline
More informationHow to Create a Spreadsheet With Updating Stock Prices Version 3, February 2015
How to Create a Spreadsheet With Updating Stock Prices Version 3, February 2015 by Fred Brack In December 2014, Microsoft made changes to their online portfolio management services, changes widely derided
More informationCross-Platform Development
2 Cross-Platform Development Cross-Platform Development The world of mobile applications has exploded over the past five years. Since 2007 the growth has been staggering with over 1 million apps available
More informationWHITE PAPER. Six Simple Steps to Improve Service Quality and Reduce Costs
WHITE PAPER Six Simple Steps to Improve Service Quality and Reduce Costs INTRODUCTION Do you have challenges with maintaining your SLA commitment? Does your customer support department get more complex
More informationWeek 2 Practical Objects and Turtles
Week 2 Practical Objects and Turtles Aims and Objectives Your aim in this practical is: to practise the creation and use of objects in Java By the end of this practical you should be able to: create objects
More informationGNU Make. A Program for Directing Recompilation GNU make Version 3.80 July 2002. Richard M. Stallman, Roland McGrath, Paul Smith
GNU Make GNU Make A Program for Directing Recompilation GNU make Version 3.80 July 2002 Richard M. Stallman, Roland McGrath, Paul Smith Copyright c 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996,
More informationCSCI6900 Assignment 2: Naïve Bayes on Hadoop
DEPARTMENT OF COMPUTER SCIENCE, UNIVERSITY OF GEORGIA CSCI6900 Assignment 2: Naïve Bayes on Hadoop DUE: Friday, September 18 by 11:59:59pm Out September 4, 2015 1 IMPORTANT NOTES You are expected to use
More informationVersion Control with Subversion and Xcode
Version Control with Subversion and Xcode Author: Mark Szymczyk Last Update: June 21, 2006 This article shows you how to place your source code files under version control using Subversion and Xcode. By
More informationVersion Control with Git. Dylan Nugent
Version Control with Git Dylan Nugent Agenda What is Version Control? (and why use it?) What is Git? (And why Git?) How Git Works (in theory) Setting up Git (surviving the CLI) The basics of Git (Just
More informationHow to get the most out of Windows 10 File Explorer
How to get the most out of Windows 10 File Explorer 2 Contents 04 The File Explorer Ribbon: A handy tool (once you get used to it) 08 Gain a new perspective with the Group By command 13 Zero in on the
More informationCS3813 Performance Monitoring Project
CS3813 Performance Monitoring Project Owen Kaser October 8, 2014 1 Introduction In this project, you should spend approximately 20 hours to experiment with Intel performance monitoring facilities, and
More informationSyncTool for InterSystems Caché and Ensemble.
SyncTool for InterSystems Caché and Ensemble. Table of contents Introduction...4 Definitions...4 System requirements...4 Installation...5 How to use SyncTool...5 Configuration...5 Example for Group objects
More informationyour Apple warranty; see http://www.drivesavers.com/. There are two main failure modes for a mirrored RAID 1 set:
48981c03.qxd 12/6/07 8:56 PM Page 142 142 File Systems RAID set creation takes only a few moments, and once it s complete, you should see new RAID set volume in the Disk Utility list and in the Finder.
More informationConfiguring the Server(s)
Introduction Configuring the Server(s) IN THIS CHAPTER. Introduction. Overview of Machine Configuration Options. Installing and Configuring FileMaker Server. Testing Your Installation. Hosting Your File.
More informationASCII Encoding. The char Type. Manipulating Characters. Manipulating Characters
The char Type ASCII Encoding The C char type stores small integers. It is usually 8 bits. char variables guaranteed to be able to hold integers 0.. +127. char variables mostly used to store characters
More information1 Description of The Simpletron
Simulating The Simpletron Computer 50 points 1 Description of The Simpletron In this assignment you will write a program to simulate a fictional computer that we will call the Simpletron. As its name implies
More informationEnvironnements et Outils de Développement Cours 6 Building with make
Environnements et Outils de Développement Cours 6 Building with make Stefano Zacchiroli zack@pps.univ-paris-diderot.fr Laboratoire PPS, Université Paris Diderot URL http://upsilon.cc/zack/teaching/1314/ed6/
More informationIntroduction. dnotify
Introduction In a multi-user, multi-process operating system, files are continually being created, modified and deleted, often by apparently unrelated processes. This means that any software that needs
More informationCygwin: getting the setup tool
Cygwin: getting the setup tool Free, almost complete UNIX environment emulation for computers running MS Windows. Very handy. 1 First, go to the Cygwin Site: http://www.cygwin.org/cygwin/ Download the
More informationEclipse IDE for Embedded AVR Software Development
Eclipse IDE for Embedded AVR Software Development Helsinki University of Technology Jaakko Ala-Paavola February 17th, 2006 Version 0.2 Abstract This document describes how to set up Eclipse based Integrated
More informationMonitoring, Tracing, Debugging (Under Construction)
Monitoring, Tracing, Debugging (Under Construction) I was already tempted to drop this topic from my lecture on operating systems when I found Stephan Siemen's article "Top Speed" in Linux World 10/2003.
More informationUsing SVN to Manage Source RTL
Using SVN to Manage Source RTL CS250 Tutorial 1 (Version 092509a) September 25, 2009 Yunsup Lee In this tutorial you will gain experience using the Subversion (SVN) to manage your source RTL and code.
More informationObject systems available in R. Why use classes? Information hiding. Statistics 771. R Object Systems Managing R Projects Creating R Packages
Object systems available in R Statistics 771 R Object Systems Managing R Projects Creating R Packages Douglas Bates R has two object systems available, known informally as the S3 and the S4 systems. S3
More informationMoving from CS 61A Scheme to CS 61B Java
Moving from CS 61A Scheme to CS 61B Java Introduction Java is an object-oriented language. This document describes some of the differences between object-oriented programming in Scheme (which we hope you
More informationCS 2112 Lab: Version Control
29 September 1 October, 2014 Version Control What is Version Control? You re emailing your project back and forth with your partner. An hour before the deadline, you and your partner both find different
More informationTAMS Analyzer 3 and Multi-User Projects. By Matthew Weinstein
TAMS Analyzer 3 and Multi-User Projects By Matthew Weinstein 1 I. Introduction TAMS has always had multiple users in mind, ever since TA1 supported signed tags, i.e., tags that had the coder s initials
More informationTry Linux: Brief Guide for Rookies
Try Linux: Brief Guide for Rookies December 8, 2010 Outline 1 2 3 4 5 Many people are afraid of technical difficulties of Linux. Many people fear that installing Linux may screw up their computer. Two
More informationOpening a Command Shell
Opening a Command Shell Win Cmd Line 1 In WinXP, go to the Programs Menu, select Accessories and then Command Prompt. In Win7, go to the All Programs, select Accessories and then Command Prompt. Note you
More informationPHP Debugging. Draft: March 19, 2013 2013 Christopher Vickery
PHP Debugging Draft: March 19, 2013 2013 Christopher Vickery Introduction Debugging is the art of locating errors in your code. There are three types of errors to deal with: 1. Syntax errors: When code
More information