Building Programs with Make. What does it mean to Build a Program?

Size: px
Start display at page:

Download "Building Programs with Make. What does it mean to Build a Program?"

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. 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 information

To reduce or not to reduce, that is the question

To 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 information

CMPT 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 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 information

Eclipse Help

Eclipse 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 information

CPSC 226 Lab Nine Fall 2015

CPSC 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 information

Online Chapter B. Running Programs

Online 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]

[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 information

Developing Platform Independent Software using the AutoTool Suite

Developing 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 information

Running your first Linux Program

Running 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 information

How to Write a Simple Makefile

How 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 information

Git 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 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 information

Using Dedicated Servers from the game

Using 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 information

How to use PDFlib products with PHP

How 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 information

Building Software via Shared Knowledge

Building 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 information

Makefiles and ROOT. Sean Brisbane 12/12/11

Makefiles 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 information

CS 103 Lab Linux and Virtual Machines

CS 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 information

TNM093 Practical Data Visualization and Virtual Reality Laboratory Platform

TNM093 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 information

CS197U: A Hands on Introduction to Unix

CS197U: 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 information

Hypercosm. Studio. www.hypercosm.com

Hypercosm. 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 information

Setting up PostgreSQL

Setting 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 information

Version Control with Subversion

Version 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 information

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

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 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 information

Linux 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 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 information

Java Language Tools COPYRIGHTED MATERIAL. Part 1. In this part...

Java 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 information

MatrixSSL Getting Started

MatrixSSL 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 information

For 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/ 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 information

tmk A Multi-Site, Multi-Platform System for Software Development

tmk 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 information

Writing 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 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 information

Add Feedback Workflow

Add 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 information

Brent A. Perdue. July 15, 2009

Brent 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 information

Visual Basic Programming. An Introduction

Visual 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 information

Easing embedded Linux software development for SBCs

Easing 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 information

Basic C Shell. helpdesk@stat.rice.edu. 11th August 2003

Basic 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 information

Xcode Project Management Guide. (Legacy)

Xcode 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 information

Command Line Crash Course For Unix

Command 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 information

8.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.

8.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]

[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 information

How 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)

How 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 information

GDB Tutorial. A Walkthrough with Examples. CMSC 212 - Spring 2009. Last modified March 22, 2009. GDB Tutorial

GDB 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 information

Code::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. 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 information

CSE 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 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 information

OLCF Best Practices. Bill Renaud OLCF User Assistance Group

OLCF 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 information

CNT5106C Project Description

CNT5106C 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 information

10 STEPS TO YOUR FIRST QNX PROGRAM. QUICKSTART GUIDE Second Edition

10 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 information

Professional. 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 \ 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 information

Penetration Testing Lab. Reconnaissance and Mapping Using Samurai-2.0

Penetration 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 information

Unix Shell Scripts. Contents. 1 Introduction. Norman Matloff. July 30, 2008. 1 Introduction 1. 2 Invoking Shell Scripts 2

Unix 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 information

csce4313 Programming Languages Scanner (pass/fail)

csce4313 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 information

Version Control with. Ben Morgan

Version 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 information

SimbaEngine SDK 9.4. Build a C++ ODBC Driver for SQL-Based Data Sources in 5 Days. Last Revised: October 2014. Simba Technologies Inc.

SimbaEngine 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 information

University of Hull Department of Computer Science. Wrestling with Python Week 01 Playing with Python

University 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 information

CEFNS Web Hosting a Guide for CS212

CEFNS 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 information

Add Approval Workflow

Add 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 information

Getting off the ground when creating an RVM test-bench

Getting 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 information

Improve Fortran Code Quality with Static Analysis

Improve 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 information

Line Tracking Basic Lesson

Line 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 information

Porting CodeWarrior Projects to Xcode. (Legacy)

Porting 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 information

Source Code Management/Version Control

Source 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 information

Using Subversion in Computer Science

Using 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 information

Using Karel with Eclipse

Using 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 information

Programming with the Dev C++ IDE

Programming 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 information

Advanced Bash Scripting. Joshua Malone (jmalone@ubergeeks.com)

Advanced 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 information

Samsung Xchange for Mac User Guide. Winter 2013 v2.3

Samsung 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 information

TU04. 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 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 information

CASHNet Secure File Transfer Instructions

CASHNet 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 information

Teamstudio USER GUIDE

Teamstudio 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 information

Hands-On UNIX Exercise:

Hands-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 information

C o m m a n d l i n e

C 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 information

Supported 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) 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 information

Code::Blocks Student Manual

Code::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 information

Development_Setting. Step I: Create an Android Project

Development_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 information

Computer Programming C++ Classes and Objects 15 th Lecture

Computer 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 information

How 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 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 information

Cross-Platform Development

Cross-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 information

WHITE PAPER. Six Simple Steps to Improve Service Quality and Reduce Costs

WHITE 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 information

Week 2 Practical Objects and Turtles

Week 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 information

GNU Make. A Program for Directing Recompilation GNU make Version 3.80 July 2002. Richard M. Stallman, Roland McGrath, Paul Smith

GNU 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 information

CSCI6900 Assignment 2: Naïve Bayes on Hadoop

CSCI6900 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 information

Version Control with Subversion and Xcode

Version 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 information

Version Control with Git. Dylan Nugent

Version 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 information

How to get the most out of Windows 10 File Explorer

How 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 information

CS3813 Performance Monitoring Project

CS3813 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 information

SyncTool for InterSystems Caché and Ensemble.

SyncTool 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 information

your Apple warranty; see http://www.drivesavers.com/. There are two main failure modes for a mirrored RAID 1 set:

your 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 information

Configuring the Server(s)

Configuring 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 information

ASCII Encoding. The char Type. Manipulating Characters. Manipulating Characters

ASCII 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 information

1 Description of The Simpletron

1 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 information

Environnements et Outils de Développement Cours 6 Building with make

Environnements 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 information

Introduction. dnotify

Introduction. 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 information

Cygwin: getting the setup tool

Cygwin: 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 information

Eclipse IDE for Embedded AVR Software Development

Eclipse 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 information

Monitoring, Tracing, Debugging (Under Construction)

Monitoring, 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 information

Using SVN to Manage Source RTL

Using 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 information

Object 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. 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 information

Moving from CS 61A Scheme to CS 61B Java

Moving 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 information

CS 2112 Lab: Version Control

CS 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 information

TAMS Analyzer 3 and Multi-User Projects. By Matthew Weinstein

TAMS 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 information

Try Linux: Brief Guide for Rookies

Try 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 information

Opening a Command Shell

Opening 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 information

PHP Debugging. Draft: March 19, 2013 2013 Christopher Vickery

PHP 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