You are on page 1of 56

CS77 OBJECTIVE:

OPEN SOURCE LAB

LTPC 0032

To expose students to FOSS environment and introduce them to use open source packages 1. Kernel configuration, compilation and installation: Download / access the latest kernel source code from kernel.org,compile the kernel and install it in the local system. Try to view the source code of the kernel 2. Virtualization environment (e.g., xen, kqemu or lguest) to test an applications, new kernels and isolate applications. It could also be used to expose students to other alternate OSs like *BSD 3. Compiling from source: learn about the various build systems used like the auto* family, cmake, ant etc. instead of just running the commands. This could involve the full process like fetching from a cvs and also include autoconf, automake etc., 4. Introduction to packet management system: Given a set of RPM or DEB, how to build and maintain, serve packages over http or ftp. and also how do you configure client systems to access the package repository. 5. Installing various software packages Either the package is yet to be installed or an older version is existing. The student can practice installing the latest version. Of course, this might need internet access. Install samba and share files to windows Install Common Unix Printing System(CUPS) 6. Write user space drivers using fuse -- easier to debug and less dangerous to the system (Writing full-fledged drivers is difficult at student level) 7. GUI programming: a sample programme using Gambas since the students have VB knowledge. However, one should try using GTK or QT 8. Version Control System setup and usage using RCS, CVS, SVN 9. Text processing with Perl: simple programs, connecting with database e.g., MYSQL 10. Running PHP : simple applications like login forms after setting up a LAMP stack 11. Running Python : some simple exercise e.g. Connecting with MySql database 12. Set up the complete network interface usinf ifconfig command liek setting gateway, DNS, IP tables, etc., RESOURCES: An environment like FOSS Lab Server (developed by NRCFOSS containing the various packages) OR Equivalent system with Linux distro supplemented with relevant packages Note: Once the lists of experiments are finalized, NRCFOSS can generate full lab manuals complete with exercises, necessary downloads, etc. These could be made available on NRCFOSS web portal.

By-

Mr.I.Samuel Peter James

SL.NO 1. 2. 3. 4. 5a 5b 5c 5d 6a 6b 6c 6d 7a 7b Basic UNIX Command

EXPERIMENTS NAME

Installation Of Common Unix Printing System (Cups) Creating A Program To Perform Virtualization Using Qemu Compiling Software From Source Implementation Of Complex Number Using Python Program Implementation Of Python Program To Print String In Reverse Order Program To Find Biggest Of The Numbers Program To Display Fibonacci Series Program To Display * Using For Program For Function With Multiple Return Values Module Program In Python Program To Display Time Program To Find Arithmetic Operation Program To Calculate The Average Wind Speed Of The Day Using Data Specified In Task 3

7c 7d 7e

Program To Find The First Factorial That Has More Than 100 Digits Program To Find That Prints Prime Numbers Less Than 20. Program To Find The Function That Returns The Smallest And Largest Element In A List.

8a 8b 8c 9a 9b 9c 9d 9e 9f 10 11

Program To Accept Input From User Program To Connect Python And MYSQLDB Program To Perform Operator Overloading Program To Greater Among Three Number Program To Display The Name. Program To Create Scalar Variables In Perl. Program To Create Array In Perl. Program To Display All Values In Hash. Program To Delection Of Hash Values. Connection Between The PHP Program And The Database MYSQL Create Login Page Using The PHP Program And The Database MYSQL

By-

Mr.I.Samuel Peter James

INTRODUCTION The free software movement was launched in 1983. In 1998, a group of individuals advocated that the term free software should be replaced by open source software (OSS) as an expression which is less ambiguous and more comfortable for the

corporate world. Software developers may want to publish their software with an open source license, so that anybody may also develop the same software or understand its internal functioning. Open source software generally allows anyone to create modifications of the software, port it to new operating systems and processor architectures, share it with others or market it. Scholars Casson and Ryan have pointed out several policy-based reasons for adoption of open source, in particular, the heightened value proposition from open source (when compared to most proprietary formats) in the following categories: Security Affordability Transparency Perpetuity Interoperability Localization The Open Source Definition, notably, presents an open source

philosophy, and further defines the terms of usage, modification and redistribution of open source software. Software licenses grant rights to users which would otherwise be reserved by copyright law to the copyright holder. Several open source software licenses have qualified within the boundaries of the Open Source Definition. The most prominent and popular example is the GNU General Public License (GPL). While open source distribution presents a way to make the source code of a product publicly accessible, the open source licenses allow the authors to fine tune such access. The open source label came out of a strategy session held on April 7, 1998 in Palo Alto in reaction to Netscape's January 1998 announcement of a source code release for Navigator (as Mozilla). A group of individuals at the session included Tim O'Reilly, Linus Torvalds, Tom Paquin, Jamie Zawinski, Larry Wall, Brian Behlendorf, Sameer Parekh, Eric Allman, Greg Olson, Paul Vixie, John Ousterhout, Guido van Rossum, Philip Zimmermann, John Gilmore and Eric S. Raymond. They used the opportunity before the release of Navigator's source code to clarify a potential confusion caused by the ambiguity of the word "free" in English.

By-

Mr.I.Samuel Peter James

The Free Software Foundation (FSF), started in 1985, intended the word "free" to mean freedom to distribute (or "free as in free speech") and not freedom from cost (or "free as in free beer"). Since a great deal of free software already was (and still is) free of charge, such free software became associated with zero cost, which seemed anti-commercial. The Open Source Definition The Open Source Definition is used by the Open Source Initiative to determine whether a software license can be considered open source. The definition was based on the Debian Free Software Guidelines, written and adapted primarily by Bruce Perens. Perens did not base his writing on the "four freedoms" of Free Software from the Free Software Foundation, which were only widely available later. Perens' principles Under Perens' definition, open source describes a broad general type of software license that makes source code available to the general public with relaxed or non-existent copyright restrictions. The principles, as stated, say absolutely nothing about trademark or patent use and require absolutely no cooperation to ensure that any common audit or release regime applies to any derived works. It is an explicit "feature" of open source that it may put no restrictions on the use or distribution by any organization or user. It forbids this, in principle, to guarantee continued access to derived works even by the major original contributors. Widely used open source products Open source software (OSS) projects are built and maintained by a network of volunteer programmers. Prime examples of open source products are the Apache HTTP Server, the e- commerce platform and the internet browser Mozilla Firefox. One of the most successful open so ur ce source products is t he G N U /Linux operating system, an open

Unix-like operating system. In some fields, open software is the norm, like in VoIP

applications with Asterisk (PBX). Open source standards are not, however, limited to open-source software. For example, Microsoft has also joined the open-source discussion with the adoption of their Open Document format as well as creating another open standard, the Office Open XML formats. Comparison with closed source One source of conflict is related to economics: Making money through traditional methods, such as sale of the use of individual copies and patent royalty payment (generally
ByMr.I.Samuel Peter James

called licensing), is more difficult and in many ways against the very concept of open source software. Some closed-source advocates see open source software as damaging to the

market of commercial software. This is one of the many reasons, as mentioned above, that the term free software was replaced with open source because many company

executives could not believe in a product that did not participate economically in a free-market or mixed-market economy. The counter to this argument is the use of open source software to fuel the market for a separate product or service. For example: Providing support and installation services; similar to IT Security groups, Linux Distributions, and Systems companies. Using the software as a stepping stone to sell a higher-end product or service; e.g., OpenOffice.org vs. StarOffice. Cost avoidance / cost sharing: many developers need a product, so it makes sense to share development costs (X Window System and the Apache web server) Comparison with free software The main difference is that by choosing one term over the other (i.e. either "open source" or "free software") one lets others know about what one's goals are. As Richard Stallman puts it, "Open source is a development methodology; free software is a social movement." Critics have said that the term open source fosters an ambiguity of a different kind such that it confuses the mere availability of the source with the freedom to use, modify, and redistribute it. Developers have used the alternative terms Free/open source Software (FOSS), or Free/Libre/open source Software (FLOSS), consequently, to describe open source software which is also free software. The term open source was originally intended to be trade markable; however, the term was deemed too descriptive, so no trademark exists. The OSI would prefer that people treat Open Source as if it were a trademark, and use it only to describe software licensed under an OSI approved license. OSI Certified is a trademark licensed only to people who are distributing software licensed under a license listed on the Open Source Initiative's list. Open source software and free software are different terms for software which comes with certain rights, or freedoms, for the user. They describe two approaches and philosophies
ByMr.I.Samuel Peter James

towards free software. Open source and free software both describe software which is free from onerous licensing restrictions. It may be used, copied, studied, modified and redistributed without restriction. Free software is not the same as freeware, software available at zero prices. Open source vs. source-available Although the OSI definition of "open source software" is widely accepted, a small number of people and organizations use the term to refer to software where the source is available for viewing, but which may not legally be modified or redistributed. Such software is more often referred to as source-available, or as shared source, a term coined by Microsoft. Development tools In OSS development the participants, who are mostly volunteers, are distributed amongst different geographic regions so there is need for tools to aid participants to collaborate in source code development. Often these tools are also available as OSS. Revision control systems such as Concurrent Versions System (CVS) and later Subversion (svn) and Git are examples of tools that help centrally manage the source code files and the changes to those files for a software project. Utilities that automate testing, compiling and bug reporting help preserve stability and support of software projects that have numerous developers but no managers, quality controller or technical support. Building s yst ems that report compilation errors among different platforms include Tinderbox. Commonly used bug trackers include Bugzilla and GNATS. List of free and open source software packages
Applied fields

software

enabling

the creation,

execution and monitoring of workflows through high-level Web interfaces ARTIFICIAL INTELLIGENCE Computer Vision OpenCV Open Source Computer Vision Library AForge.NET Computer Vision, Artificial Intelligence and Robotics library for the .NET Framework

Computer simulation SimPy; queue-theoretic event-based simulator written in Python Blender; 3D modeling software written in Python and C++ that can make animations and games
Grid Computing

P-GRADE
By-

Portal Grid

portal

Robotics

Mr.I.Samuel Peter James

ROS Robot Operating System Planning TREX Reactive planning Machine Learning See Data Mining below See R programming language -packages of statistical learning and analysis tools Speech (synthesis and recognition) CMU Sphinx Speech recognition software from Carnegie Mellon University Emacspeak Audio desktop Festival Speech Synthesis System Modular Audio Recognition Framework voice, audio, speech, NLP processing NonVisual Desktop Access (NVDA) Screen reader for Windows File Systems OpenAFS -a Distributed File

novice and experts, through visual programming or Python scripting.

Extension for bioinformatics and text mining. RapidMiner data mining software written in Java, fully integrating Weka, featuring 350+ operators for preprocessing, visualization, etc. Scriptella ETL ETL machine learning,

(Extract-Transform-Load) and script execution tool. Supports integration with Provides LDAP, J2EE and to Spring. CSV,

connectors

XML, JDBC/ODBC and

other data sources. Enterprise search engines Jumper 2.0 Lucene Solr Xapian Asterisk Telephony and VoIP server Ekiga Video conferencing application for GNOME and Microsoft Windows FreePBX Front-end and advanced PBX configuration for Asterisk FreeSWITCH Open Source telephony platform Remote access and management FreeNX OpenVPN rdesktop

System supporting

a very wide

Communication-related

variety of operating systems Data Visualization Components FusionCharts Free ParaView functions plotting and visualization developed by Sandia

National Laboratory,

capable of

massively parallel flow visualization utilizing multiple computer processors Data mining Orange (software) Open source data visualization and data mining for

By-

Mr.I.Samuel Peter James

Web-related Apache Cocoon a web application framework Apache the most popular web server AWStats a log file parser and analyzer BookmarkSync a tool for browsers CougarXML a Javascript framework for parsing and manipulating XML code, based on W3C DOM Level-3 specifications. Portal Server Liferay Sun Java System Portal Server uPortal

client openVXI an open source VoiceXML interpreter YaCy P2P-based search engine

Password management KeePass Password Safe ABCL an implementation of Common Lisp for the JVM ArgoUML ArgoUML is a modelling tool that helps you design using UML diagrams CLISP a Common Lisp interpreter and bytecode-compiler Clojure a Lisp (not Scheme nor Common Lisp) targeting the JVM DJGPP a 32-bit DOS port of GCC and other GNU utilities Dragonfly newLISP based web development framework Eiffel ECL an Common Lisp implementation designed for integration with C GCC a set of compilers for multiple programming languages and platforms, including C C++ Objective-C Ada Java

Programming language support

Middleware Apache Axis2 - Web service framework (implementations are available in both Java & C) Apache Geronimo GlassFish Application Server JacORB Java implementation of the OMG's CORBA standard Jakarta Tomcat a servlet container and standalone webserver JBoss Application Server an application server ObjectWeb JOnAS Java Open Application Server, a J2EE application server Other networking programs
By-

OpenLDAP an open source LDAP server JXplorer an open source LDAP


Mr.I.Samuel Peter James

Pascal

ClamWin Gateway Anti-Virus

Logo Derivative of Lisp without parenthesis, for kids, with Turtle Graphics

Anti-spyware Winpooch

Parser a language for dynamic website creation Perl a programming language strong on text processing PHP a scripting language designed for web site applications Processing - a visual programming language based on Java Prolog Logic programming Python a high-level scripting language

Data loss prevention MyDLP

Encryption GnuPG KGPG Seahorse GnuTLS OpenSSL

Disk encryption CrossCrypt FreeOTFE and FreeOTFE Explorer

Code generators Bison CodeSynthesis XSD XML Data Binding compiler for C++ CodeSynthesis XSD/e

Firewall Iptables Coyote Linux fdgw Firestarter IPFilter ipfw IPCop IPFire M0n0wall PeerGuardian PF

Validating XML parser/serializer and C++ XML Data Binding generator for mobile and embedded systems xmlbeansxx XML Data Binding code generator for C++ Anti-virus ClamAV

By-

Mr.I.Samuel Peter James

EX.NO:1 DATE: Basic UNIX command Aim: To study about the basic UNIX commands. UNIX command: Working with files: 1. cat Command Syntax Use Command Syntax Use Command Syntax Use Command Syntax Use one 2. cp Command Syntax Use 3. rm Command Syntax Use 4. wc Command Syntax Use

: cat : $cat >file name : it is used to create a new file : cat : $cat file name : it is used to display the file contents : cat : $cat file >>file 2 : to append the file from one to another : cat : $cat file1 file2 file3>file4 : the cat command is also used to concatenate more than one file into a single

: cp : $cp file1 file2 : it copies the contents of one file into another within your own directory.

: rm : $rm file name : it is used to remove the file.

: wc : $wc file name : it is used to counts and display numbers, words, lines and character in a file.

By-

Mr.I.Samuel Peter James

The various options are: Command : wc -l Syntax : $wc -l file name Use : it displays number of lines only. Command Syntax Use Command Syntax Use 5. ls Command Syntax Use Command Syntax Use Command Syntax Use Command Syntax Use 6. mv Command Syntax Use 7. comm Command Syntax Use 8. cmp Command Syntax : wc -w : $wc -w file name : it displays number of words only. : wc -c : $wc -c file name : it displays number of characters only.

: ls -a : $ls -a : it lists all directories including hidden files. : ls -l : $ls -l : it lists files in long form. : ls -r : $ls -r : it lists files in reverse order. : ls -R : $ls -R : it displays a recursive list of all files in all sub directories.

: mv : $mv old file name : new file name : it is used a rename a file.

: comm : $comm file1 file2 : it compares two files and displays output in three columns.

: cmp : $cmp file1 file2

By-

Mr.I.Samuel Peter James

Use : it compares two files and tells which point the files are differ. The output is displayed in the form of byte and line number. 9. diff Command : diff Syntax : $diff file1 file2 Use : it locates and reports all differences between two files 10. pr Command : pr Syntax : $pr file name Use : it prints the contents of a file. It produces output in a single column that contains 66 lines per page. Working with directories: 1. pwd Command : pwd Syntax : $pwd Use : the pwd stands for Print Working Directory. It displays the current working directory. 2. mkdir Command : mkdir Syntax : $mkdir directory name Use : it is used to create a new directory in a disk. 3. rmdir Command : rmdir Syntax : $rmdir directory name Use : it is used to remove directory from the disk.

4. cd Command : cd Syntax : $cd directory name Use : it is used to change the directory. Command Syntax Use : cd.. : $cd.. : it is used to go back to the parent directory.

5. dircmp Command : dircmp -s Syntax : $dircmp -s directory1 directory2 Use : it compares two directories having same filenames.
ByMr.I.Samuel Peter James

Working with filters: 1. head Command : head Syntax : $head n file name Use : it displays first n lines of the file. If n is omitted, the first 10 lines of the file are displayed. 2. tail Command : tail Syntax : $tail n file name Use : it displays last n lines of the file. If n is omitted, the last 10 lines of the file are displayed. 3. more Command : more Syntax : $more n file name Use : it displays text up to n line number. 4. grep Command : grep Syntax : $grep [option] <word> < file name> Use : it prints all the lines of the file which contains the given word. The various options are: Command : grep -v Syntax : $grep -v Use : it displays all the lines except those containing pattern. Command : grep -c Syntax : $grep -c Use : it reports only the number of matching lines. 5. sort Command : sort Syntax : $sort file name Use : it sorts the file contents. The various options are: Command : sort -r Syntax : $sort -r file name Use : it sorts the file in reverse order. Command : sort -f Syntax : $sort -f file name Use : it sorts the file and ignores cases.
ByMr.I.Samuel Peter James

Command : sort -n Syntax : $sort -n file name Use : it sorts the numeric strings arithmetically. Command : sort -u Syntax : $sort -u file name Use : it eliminates duplicate line. 6. cut Command Syntax

: cut : $cut c <list> < file name> Where <list> indicates the specification for starting and ending column

position. Use : it cuts out selected fields from each line of a file. 7. paste Command : paste Syntax : $paste file name Use : it is used to paste the text that was previously used with the cut command. 8. man Command : man Syntax : $man command name Use : it is used to see the help information for the specified commands. 9. sleep Command Syntax Use

: sleep : $sleep n Where n indicates the number of seconds : it is used to make some delay for execution in the program.

10. find Command : find Syntax : $find *.c Use : it displays all files with extension c. 11. pg Command : pg Syntax : $pg file name Use : it displays contents of the files page by page wise. General purpose commands: 1. who Command : who Syntax : $who
ByMr.I.Samuel Peter James

Use

: it displays the list of users who logged in.

Command : who am i Syntax : $who am i Use : it is used to identify the user and lists the user name, terminal line, login date and login time. 2. echo Command : echo Syntax : $echo Use : it displays message on the screen. 3.date Command : date Syntax : $date Use : it displays the system date and time. 4. clear Command : clear Syntax : $clear Use : it is used to clear the screen. 5. cal Command : cal Syntax : $cal Use : it displays a calendar for the month or year. 6. banner Command : banner Syntax : $banner <text> Use : it displays text in the form of a banner (large letter). 7.tty Command : tty Syntax : $tty Use : it is used to indicate the terminal name that we are using. 8.nl Command : nl Syntax : $nl file name Use : it is used to add line numbers to a file and it displays the file.

By-

Mr.I.Samuel Peter James

EX.NO:2 DATE: INSTALLATION OF COMMON UNIX PRINTING SYSTEM (CUPS) AIM: To write a steps to install the common UNIX printing system. NOTE: The following steps to be executed using Fedora system with printer connected system (printer ON status). PROCEDURE: Step 1: Open a terminal window Type the following command [fosslab@fosslab] $ rpm -qa | grep window [fossIab@fosslab] $ rp -qi cups Then using clear command clear the screen Login to super user [fosslab@fosslab] S su Check the status of the cups using the following command [fosslab@fosslab] $ service cups status Start the service of cups using the following command [fosslab@fosslab] S service cups start Check the status of the cups again [fosslab@fosslab] $ service cups status Click Mozilla browser and type Mozilla Firefox http://localhost:631 This address loads for cups for administrator Step 2: 1. Select the option Adding printer and classes. Click adding printers and classes Then click acid printer option 2. Select the option Add printer 3. Give the root username and root password. Then save username and password
ByMr.I.Samuel Peter James

User name: Password: 4. Select the printer type and select continue option. 5. Give the printer name, location and description and give continue option. 6. Select the maker of printer and select the continue option. 7. Select the model of printer and select the option Add printer Select Hp printer (Hp LIP) and then click continue. Connection [http://localhost:6031//ipp/] and then click continue Name: hp 1010 Description: Lab Clicks continue. Name: HP Then click continue. Model: HP LaserJet 1010 foomatic Then click add printer. 8. Select the paper size and set the default options. Then change the page size to A4. Then click set default option. Click Hp. Then change maintenance print test page. 9. Click on the printer name and see the jobs that are pending. Finally click show all jobs. 10. End of Algorithm.

RESULT: Thus the program for to write a steps to install the common UNIX printing system is to be obtained and the output is verified.
ByMr.I.Samuel Peter James

EX.NO:3 DATE: CREATING A PROGRAM TO PERFORM VIRTUALIZATION USING QEMU AIM: To create a step for performing virtualization environment to test applications, new kernels and isolate applications using qemu. DEFINITION: Virtualization is the creation of a virtual (rather than actual) version of something, such as hardware platform, operating system, a storage device or network resources. PROCEDURE: Step 1: Open a terminal window [fosslab@fosslab] $ rpm -qa | grep qemu [fosslab@fosslab] $ rpm -qi qemu Step 2: Open Mozilla fire fox and then type http:// fosslabserver/tools/freedos. Then the address to be loaded. Click fdbasecd.iso. Then save the fdbasecd.iso by clicking save file option. Then fdbasecd.iso in downloaded by downloads. Step 3: Open a terminal window [fosslab@fosslab] $ pwd [fosslab@fosslab] S mkdir virtual Mount the /student in virtual [fosslab@fosslab] $ sshfs student virtual Create another directory called virtual1 [fosslab@fosslab] $ mkdir virtual1 Copy the file dsl.iso to virtual1 [fosslab@fosslab] $ cp virtual/dsl.iso virtual1 Change directory to virtual1 [fosslab@fosslab] S cd virtual1 [fosslab@fosslab] S pwd To create a virtual disk, type in the following command

By-

Mr.I.Samuel Peter James

[fosslab@fosslab] $qemu-img create virtual disk.img 100M 100M-size of the hard disk To start the Virtual OS,type in the following command [fosslab@fosslab] S mv/home/fosslab/downloads/fdbasecd.iso [fosslab@fosslab] S ls-1 [fosslab@fosslab] $qemu-had virtualdisk.img-cdrom dsl.iso boot d Press ENTER key when the boot screen appears to boot into the OS

Then exit the window.

RESULT: Thus the program for to creating and perform virtualization using qemu is to be obtained and the output is verified.
ByMr.I.Samuel Peter James

EX.NO:4 DATE: COMPILING SOFTWARE FROM SOURCE AIM: To learn about the common build systems available in Linux and to use them. RESOURCE: Introduction Open source software is distributed in source code form. In case of popular software Linux distributions will often have the software packaged in their repositories. If the package is not package is not in the repository the user has to compile the software from source. To do this the user has to understand about the build system used in the project. The GNU build system, also known as the Autotools, is a suite of programming tools designed to assist in making source-code packages portable to many Unix-like systems. It can be difficult to make a software program portable: the C compiler differs from system to system; certain library functions are missing on some systems; header files may have different names. One way to handle this is write conditional code, with code blocks selected by means of preprocessor directives (#ifdef); but because of the wide variety of build environments this approach quickly becomes unmanageable. The GNU build system is designed to address this problem more manageably. Tools included in the GNU build system The GNU build system comprises the GNU utility programs Autoconf, Automake, and Libtool. Other related tools frequently used with the GNU build system are GNUs make program, GNU gettext, pkg-config, and the GNU Compiler Collection, also called GCC. GNU Autoconf Autoconf generates a configure script based on the contents of a configure.ac file which characterizes a particular body of source code. The configure script, when run, scans the build environment and generates a subordinate config.statusscript which, in turn, converts other input files and most commonly Makefile.in into output files (Makefile) which are appropriate for that build environment. Finally the make program uses Makefile to generate executable programs from source code. The complexity of the GNU build system reflects the variety of circumstances under which a body of source code may be built.
ByMr.I.Samuel Peter James

If a source code file is changed then it suffices to re-run make which only re- compiles that part of the body of the source code affected by the change. If a .in file has changed then it suffices to re-run config.status and make. If the body of source code is copied to another computer then it is suffices to re- run configure (which runs config.status) and make. (For this reason source code using the GNU build system is normally distributed without the files thatconfigure generates.) If the body of source code is changed more fundamentally then configure.ac and the .in files need to be changed and all subsequent steps also followed. To process files, autoconf uses the GNU implementation of the m4 macro system. Autoconf comes with several auxiliary programs such as Autoheader, which is used to help manage C header files; Autoscan, which can create an initial input file for Autoconf; and ifnames, which can list C pre-processor identifiers used in the program. GNU Automake Automake helps to create portable Makefiles, which are in turn processed with the make utility. It takes its input as Makefile.am, and turns it into Makefile.in, which is used by the configure script to generate the file Makefile output. GNU Libtool Libtool helps manage the creation of static and dynamic libraries on various Unix-like operating systems. Libtool accomplishes this by abstracting the library-creation process, hiding differences between various systems (e.g. GNU/Linuxsystems vs. Solaris). Gnulib Gnulib simplifies the process of making software that uses Autoconf and Automake portable to a wide range of systems. Make In software development, make is a utility that automatically builds executable programs and libraries from source code by reading files called makefiles which specify how to derive the target program. Make can decide where to start through topological sorting. Though integrated development environments and language-specific compiler features can also be used to manage the build process in modern systems, make remains widely used, especially in Unix. Make is typically used to build executable programs and libraries from source code. Generally though, any process that involves transforming a dependency file to a target result
ByMr.I.Samuel Peter James

(by executing some number of arbitrary commands) is applicable to make. To cite an example, make could be used to detect a change made to an image file (the dependency) and the target actions that result might be to convert the file to some specific format, copy the result into a content management system, and then send e-mail to a predefined set of users that the above actions were performed. CMake CMake is a unified, cross-platform, open-source build system that enables developers to build, test and package software by specifying build parameters in simple, portable text files. It works in a compiler-independent manner and the build process works in conjunction with native build environments, such as make, Apple's Xcode and Microsoft Visual Studio. It also has minimal dependencies, C++ only. CMake is open source software. CMake can: Create libraries Generate wrappers Compile source code Build executables in arbitrary combinations Apache Ant Apache Ant is a software tool for automating software build processes. It is similar to Make but is implemented using the Java language, requires the Java platform, and is best suited to building Java projects. The most immediately noticeable difference between Ant and Make is that Ant uses XML to describe the build process and its dependencies, whereas Make uses Makefile format. By default the XML file is named build.xml. Ant is an Apache project. It is open source software, and is released under the Apache Software License. Pre-requisites: The computers need the development tools to be installed. Instructions for installing them will be given along with each exercise. PROCEDURE: Create a directory for all the programs in the exercise. > mkdir build_systems > cd build_systems

By-

Mr.I.Samuel Peter James

Make We will be using a simple program written in C and write a makefile to compile the program. > mkdir gnumake > cd gnumake > gedit squareroot.c The Code: // A simple program that computes the square root of a number #include <stdio.h> #include <stdlib.h> #include <math.h> int main (int argc, char *argv[]) { if (argc < 2) { fprintf(stdout,"Usage: %s number\n",argv[0]); return 1; } double inputValue = atof(argv[1]); double outputValue = sqrt(inputValue); fprintf(stdout,"The square root of %g is %g\n", inputValue, outputValue); return 0; } Test it by compiling it once: > gcc squareroot.c -o squareroot -lm > ./sqaureroot 49 > The square root of 49 is 7 Now we write a simple makefile to compile the program. > gedit Makefile

The Code: # Commands start with TAB not spaces CC= gcc CFLAGS= -g LDFLAGS
ByMr.I.Samuel Peter James

= -lm

all: squareroot squareroot: squareroot.o squareroot.o: squareroot.c clean: rm -f squareroot squareroot.o Now we test the Makefile: > make make: Nothing to be done for `all'. > make clean rm -f squareroot squareroot.o > make gcc -g -c -o squareroot.o squareroot.c gcc -lm > ./squareroot 49 >The square root of 49 is 7 squareroot.o -o squareroot

CMake We will now write a simple script for CMake to compile the previously written program. First we install CMake > yum install cmake We create a new directory and copy the source code to it. > cd .. > mkdir cmake > cd cmake > cp ../gnumake/squareroot.c . Now we create configuration files for CMake. > gedit CMakeLists.txt The Code: cmake_minimum_required (VERSION 2.6) project (squareroot) add_executable(squareroot squareroot.c) TARGET_LINK_LIBRARIES(squareroot m) CMake is commonly use with out of source builds ie, we build the program in a directory separate from the source. We use the generated makefile to compile the program. > mkdir build > cd build > ls > cmake .. -- The C compiler identification is GNU
ByMr.I.Samuel Peter James

-- The CXX compiler identification is GNU -- Check for working C compiler: /usr/bin/gcc -- Check for working C compiler: /usr/bin/gcc -- works -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working CXX compiler: /usr/bin/c++ -- Check for working CXX compiler: /usr/bin/c++ -- works -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Configuring done -- Generating done -- Build files have been written to: /home/<user>/projects/buildsystems/cmake/build > ls CMakeCache.txt > make Scanning dependencies of target squareroot [100%] Building C object CMakeFiles/squareroot.dir/squareroot.c.o Linking C executable squareroot [100%] Built target squareroot >ls CMakeCache.txt > ./squareroot 49 The square root of 49 is 7 Study the CMake generated Makefile. CMakeFiles cmake_install.cmake Makefile squareroot CMakeFiles cmake_install.cmake Makefile

To uninstall the program:


> su > make uninstall > exit

RESULT: Thus the various build systems used like the auto* family, cmake, instead of just running the commands successfully and the output was verified.
ByMr.I.Samuel Peter James

By-

Mr.I.Samuel Peter James

EX.NO:5(a) DATE: Implementation of complex number using python program Aim: To create a python program to perform calculations using complex numbers. Algorithm: Step 1: Give the input complex numbers Step 2: Calculate real and imaginary part of the numbers. Step 3: Print the round complex number as output. Program: Prim complex(0,l)+complex(2,3) A=complex(0,l)+complex(2,3) Print a.real,a.imag Print round(5.78.1)

RESULT: Thus the python program to calculate complex number was executed and the output was verified.

By-

Mr.I.Samuel Peter James

EX.NO:5(b) DATE: Implementation of python program to print string in reverse order Aim: To write a python program to print a given string in the reverse order. Algorithm: Step 1: Give an string in a variable 'a' Step 2: Create a temporary space to store reversed string. Step 3: Add temp value with i and create reverse string. Step 4: Print string value stored in temp Program: a=FOSSLAB temp= for i in a: temp=i+temp: print temp

RESULT: Thus the python program to print string in reverse was executed and the output was verified.

By-

Mr.I.Samuel Peter James

EX.NO:5(C) DATE: Program to find biggest of the numbers Aim: To write a python program to find the biggest number among the given number. Algorithm: Step 1: Give value for the three numbers using variables a.b,c, Step 2: Compare a with b&c & print a if it is big. Step 3: Otherwise print b as a biggest number. Step 4: If above conditions fail print c as the biggest number. Program: A=5 b=9 c=17 if a>b: if a>c: print a elif b>c: print b else print c

RESULT: Thus the python program to find biggest number was executed and the output was verified.

By-

Mr.I.Samuel Peter James

EX.NO:5(D) DATE: Program to display Fibonacci series Aim: To write a python program to display the Fibonacci series numbers. Algorithm: Step 1: Initialize the values for variables a,b. Step 2: Give the Fibonacci value of n as 10. Step 3: Print the increment value of b until fibonacci value. Step 4: Print the Fibonacci series numbers. Program: a,b=0,l n=10 while b<n: prinl b, a,b=b,a+b

RESULT: Thus the program print the Fibonacci series number was executed and the output was verified.

By-

Mr.I.Samuel Peter James

EX.NO:6(A) DATE: Program to display * using for Aim: To write a python program to display * using for. Algorithm: Step 1: Consider i as value from 1 to 4. Step 2: Print * in every i. Program: For i in range(i,4)' print * i

RESULT: Thus the python program display * using for was executed and the output was verified.

By-

Mr.I.Samuel Peter James

EX.NO:6(B) DATE: Program for function with multiple return values Aim: To write a program for function with multiple values. Algorithm: Step 1: Define min max functions Step 2: If item is greater than large; great =small. Step 3: If not item less than small: smallitem. Step 4: Print small, large. Program: Def min max(numbers); Small=large=numbers[0]; For item in numbers: If item>large: Large -item: elif item<small: Small=item #Test Small,large=min max[1,2,7,6,3,1,2,8,4] Print small,large

RESULT: Thus the python program for function with multiple values was executed and the output was verified.

By-

Mr.I.Samuel Peter James

EX.NO:6(C) DATE: Module program in python Aim: To write a module program in python. Algorithm: Step 1: Execute Fibonacci program in one file. Step 2: In main file define Fibonacci program. Step 3: Now output will be in main.py file. Program: #fibo.py Def fib(n): a,b=0,l while b<n: print b: a,b=b,l+b #main1.py . import fibo fibo.fib(25)

RESULT: Thus the python module program was executed and the output was verified.

By-

Mr.I.Samuel Peter James

EX.NO:6(D) DATE: Program to display time Aim: To write a program to display date and time. Algorithm: Step I: Import the local time. Step 2: Consider + as the local time. Step 3: Print date and time. Program: from the time import the local time t=local time() print t.tm_m.day."|",t.rm_mar. 1 ",t.tm_year; print t.tim_hour,"_,t.tim-min,r,.,t.tm_sec:

RESULT: Thus the program to display time and date was executed and the output was verified.

By-

Mr.I.Samuel Peter James

EX.NO:7(A) DATE: Program to find arithmetic operation Aim: To write a python program for to find the arithmetic operation. Algorithm: Step 1: Give value for the two numbers using variables Step 2: Declare the variables and initialize the statement Step 3: Calculate the arithmetic operation Program:
print 'arithemeticoperations' print 'addition' print float(345.55)+float(387.23) a=float(345.55)+float(387.23) print 'roundedvalue' print round(a) print 'Subtraction' print float(345.55)-float(387.23) b=float(345.55)-float(387.23) print 'roundedvalue' print round(b) print 'Multiplication' print float(345.55)*float(387.23) c=float(345.55)*float(387.23) print 'roundedvalue' print round(c) print 'Division' print float(345.55)/float(387.23) d=float(345.55)/float(387.23) print 'roundedvalue' print round(d)

RESULT: Thus the python program to find the arithmetic operation was executed and the output was verified.
ByMr.I.Samuel Peter James

EX.NO:7(B) DATE: Program to calculate the average wind speed of the day using data specified in Task 3 Aim: To write a python program for to calculate the average wind speed of the day using the data specified in Task 3. Algorithm: Step 1: Give value for the numbers using variables Step 2: Declare the variables and initialize the statement Step 3: Calculate the average wind speed of the day using the data specified in Task 3. Program:
wind_speed = [3, 5, 3, 2, 0, 0, 5, 5, 11, 5, 10, 2] noon = wind_speed[6] print noon afternoon = wind_speed[7:12] print afternoon last = wind_speed[-1] print last

RESULT: Thus the python program to calculate the average wind speed of the day using the data specified in Task 3 was executed and the output was verified.
ByMr.I.Samuel Peter James

EX.NO:7(C) DATE: Program to find the first factorial that has more than 100 digits Aim: To write a python program for to find the first factorial that has more than 100 digits. Algorithm: Step 1: Give value for the numbers using variables Step 2: Declare the variables and initialize the statement Step 3: Calculate the find the first factorial that has more than 100 digits. Program:
n=1 fact = 1 while fact < (10 ** 100): n=n+1 fact = fact * n print fact

RESULT: Thus the python program to find the first factorial that has more than 100 digits was executed and the output was verified.
ByMr.I.Samuel Peter James

EX.NO:7(D) DATE: Program to find that prints prime numbers less than 20. Aim: To write a python program for to find that prints prime numbers less than 20. Algorithm: Step 1: Give value for the numbers using variables Step 2: Declare the variables and initialize the statement Step 3: Calculate the find that prints prime numbers less than 20. Program:
for n in range(2, 10): for x in range(2, n): if n % x == 0: print n, 'equals', x, '*', n/x break else: # loop fell through without finding a factor print n, 'is a prime number'

RESULT: Thus the python program to find that prints prime numbers less than 20 was executed and the output was verified.
ByMr.I.Samuel Peter James

EX.NO:7(E) DATE: Program to find the function that returns the smallest and largest element in a list. Aim: To write a python program for to find the function that returns the smallest and largest element in a list. Algorithm: Step 1: Give value for the numbers using variables Step 2: Declare the variables and initialize the statement Step 3: Calculate the find the function that returns the smallest and largest element in a list. Program:
def min_max(numbers): smallest = largest = numbers[0] for item in numbers: if item > largest: largest = item elif item < smallest: smallest = item return smallest, largest

# Test smallest, largest = min_max([1, 2, 7, 6, 3, 1, 2, 8, 4])

RESULT: Thus the python program to find the function that returns the smallest and largest element in a list was executed and the output was verified.

By-

Mr.I.Samuel Peter James

EX.NO:8(A) DATE: Program to accept input from user Aim: To create a program to get numbers as input from user and produce the corresponding output. Algorithm: Step 1: Get the values of a & b. Step 2: calculate the values of two numbers Step 3: Print the output. Program: //import sys a=raw input=Enter a no:"); b=raw_input("Enter another no:"); print int(a)+int(b);

RESULT: Thus the python program to get input from users and corresponding operations are executed and the output was verified.

By-

Mr.I.Samuel Peter James

EX.NO:8(B) DATE: Program to connect python and MYSQLDB Aim To create a program to connect python and MYSQLDB. Algorithm: Step 1: Create a database and its corresponding tables. Step 2: Provide coding in gedit text editor to perform various operations. Step 3: Give inputs thro python program and store it on database. Program: import MYSQLdB as db conn=db.connect"" ,"root ", "", "TESTDB") cursor=conn.cursor() cursor.execute("SELECT VERSION()") data=cursor.fetchone() printDatabase version:%s"%data sql="""CREATE TABLE EMP(NAME CHAR(20)),"'" cursor.execute(sql) sql="INSERT INTO EMP(NAME) VALUES ('joe')" cursor.execute(sql) sql="SELECT * FROM EMP" cursor.execute(sql) results=cursor. fetchall() for row in results: fname=row[0] print"fname=%s",( fname) sql="UPDATE EMP SET NAME='rex'" cursor.execute( sql) sql="DELETE FROM EMP" cursor.execute(sql) RESULT: Thus the python program to connect MYSQL was executed and the output was verified.

By-

Mr.I.Samuel Peter James

EX.NO:8(C) DATE: Program to perform operator overloading Aim: To create a python program to create class. point and perform operator overloading. Algorithm: Step I: Create a class point Step 2: create various functions for mathematical operations. Step 3: In main program for various values perform mathematical operations.

Program: class point: define_(self,x=0,y=0): self.x=x self.v=v def_add_(self,other): return point(self.x+other.x,self.y+other.y) def_mul (self,other): return self.x*other.x+self.y+other.y def_str_(self): return(%d.%d)%(self.x,self.y) #main program P1 =point(1 ,2) P2=point(3,4) Print pl,p2 Print p1 +p2 Print p1 *p2

RESULT: Thus the python program to perform operator overloading was executed and the output was verified.

By-

Mr.I.Samuel Peter James

By-

Mr.I.Samuel Peter James

EX.NO:9(A) DATE: GREATER AMONG THREE NUMBER AIM: To write a Perl program to check greater among three numbers. ALGORITHM: STEP 1: Step the program STEP 2: Read the values of a.b,c STEP 3: If a value greater than b&c print a is greater. STEP 4: If b is greater than a&c print b is greater else print G is greater STEP 5: Stop the program. PROGRAM: print "enter a value:"; $a=<>; print"enter b values:"; $b=<>; printenter c values:"; $c=<>; if(($a>$b )&&(%$a>$c)) { print"a is greater"; i elseif(sb>5c)&&($b>$a)) print' b is greater": } else { print"c is greater"; }

RESULT: Thus the Perl program for to check greater among three numbers was executed and the output was verified.

By-

Mr.I.Samuel Peter James

EX.NO:9(B) DATE: SIMPLE PROGRAM FOR DISPLAY NAME AIM: To write a Perl program to display the name. ALGORITHM: STEP 1: Start the program STEP 2: Type the PERL program using vi editor and save with the extension .pl STEP 3: # program-name.pl to execute the program. STEP 4: # the above line is shebang directive STEP 5: Stop the program. PROGRAM: #!usr/bin/perl # the above line is shebang directive $name=<STDIN>; chomp($name); print "$name\n"; OUTPUT: [linuxpert@localhost ~]$ perl extension.pl rose rose

RESULT: Thus the Perl program for to display the name was executed and the output was verified.

By-

Mr.I.Samuel Peter James

EX.NO:9(C) DATE: SCALAR VARIABLES IN PERL AIM: To write a Perl program to create scalar variables in Perl. ALGORITHM: STEP 1: Start the program STEP 2: Type the PERL program using vi editor and save with the extension .pl STEP 3: # program-name.pl to execute the program. STEP 4: # the above line is shebang directive STEP 5: Stop the program. PROGRAM: #!/usr/bin/perl my $animal="Camel"; # this variable is lexically scoped ie local my $ans=42_243; #this is similar to 42243 print "$animal\n"; print "$ans\n"; print "The square of &ans",$ans*$ans,"\n"; OUTPUT: [linuxpert@localhost ~]$ perl scalar.pl Camel 42243

RESULT: Thus the Perl program for to create scalar variables in Perl was executed and the output was verified.

By-

Mr.I.Samuel Peter James

EX.NO:9(D) DATE: ARRAY IN PERL AIM: To write a Perl program to create array in Perl. ALGORITHM: STEP 1: Start the program STEP 2: Type the PERL program using vi editor and save with the extension .pl STEP 3: # program-name.pl to execute the program. STEP 4: # the above line is shebang directive STEP 5: Stop the program. PROGRAM: #!usr/bin/perl my @animal=("cow","Buffalo","Camel"); print "@animal\n"; # list all elements in array print "$#animal\n"; # list last element position print "$animal[0]\n"; #list 0th position element $count=@animal; print "$count"; # count no of elements in array OUTPUT: [linuxpert@localhost ~]$ perl array.pl cow Buffalo Camel 2 cow 3

RESULT: Thus the Perl program for to create array in Perl was executed and the output was verified.

By-

Mr.I.Samuel Peter James

EX.NO:9(E) DATE: TO DISPLAY ALL VALUES IN HASH AIM: To write a Perl program to display all values in hash. Algorithm: STEP 1: Start the program STEP 2: Type the PERL program using vi editor and save with the extension .pl STEP 3: # program-name.pl to execute the program. STEP 4: # the above line is shebang directive STEP 5: Stop the program. Program: #!usr/bin/perl %color=('apple'=>"red",'banana'=>"yellow",'orange'=>"orange"); print "$color{'apple'}\n"; # to display all the values in hash @keys=keys %color; foreach $key (@keys) { print "$color{$key}\n"; } OUTPUT: [linuxpert@localhost ~]$ perl hashvalues.pl red yellow red orange

RESULT: Thus the PERL program display all values in hash was verified and the output was verified.

By-

Mr.I.Samuel Peter James

EX.NO:9(F) DATE: TO DELECTION OF HASH VALUES AIM: To write a Perl program to delection of Hash values. Algorithm: STEP 1: Start the program STEP 2: Type the PERL program using vi editor and save with the extension .pl STEP 3: # program-name.pl to execute the program. STEP 4: # the above line is shebang directive STEP 5: Stop the program. Program: #!usr/bin/perl %color=('apple'=>"red",'banana'=>"yellow",'orange'=>"orange"); print "$color{'apple'}\n"; # to display all the values in hash @keys=keys %color; @values=values %color; # it ill store the array values foreach $key (@keys) { print "$color{$key}\n"; } delete $color{'apple'}; # to remove specific key

RESULT: Thus the PERL program to delection of Hash values was verified and the output was verified.

By-

Mr.I.Samuel Peter James

By-

Mr.I.Samuel Peter James

EX.NO:10 DATE: Connecting PHP with Mysql Aim: To create a connection between the PHP program and the database MYSQL. Procedure: [linuxpert@localhost ~]# chmod 777/var/www/html [linuxpert@localhost ~]$ su Password: admin123 [root@localhost linuxpert]# cd /var/www/html [root@localhost html]# gedit Type the following in gedit and save it as form.html <html> <head> <title>LOGIN</title></head> <body> <form action="connect.php" method="post"> <p> "Enter course no"<input type="text" name="cid"></p> <p>"enter the coursename"<input type="text" name="cname"></p> <p>"click here to submit"<input type="submit" name="submit"></p> </form> </body> </html> Type the following in gedit and save it as connect.php <?php $cid=$_POST['cid']; $cname=$_POST['cname']; $con=@mysql_connect("localhost","root","")or die (mysql-error()); echo "connected to database"; $db=@mysql_select_db("student",$con)or die(mysql_error()); echo "selected database"; $str="insert into courses values($cid,'$cname')";

By-

Mr.I.Samuel Peter James

$res=@mysql_query($str) or die(mysql_error()); if($res>0) { echo "Record created"; } ?> TYPE THE FOLLOWING IN THE BROWSER http://localhost/form.html When u press the submit button [linuxpert@localhost ~]$ mysql -u root -p\ > > Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 28 Server version: 5.1.45 Source distribution

mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | student | | test | +--------------------+ 4 rows in set (0.11 sec) mysql> use student ; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> connect Connection id: 29 Current database: student mysql> show tables; +-------------------+
ByMr.I.Samuel Peter James

| Tables_in_student | +-------------------+ | course | | courses | | students | +-------------------+ 3 rows in set (0.00 sec) mysql> select * from courses; +------+-------+ | cid | cname | +------+-------+ | 1 | java | | 1 | java | +------+-------+ 2 rows in set (0.02 sec)

RESULT: Thus the connection was established between PHP and MYSQL and the output was verified.
ByMr.I.Samuel Peter James

EX.NO:11 DATE: Create Login Page using PHP with Mysql Aim: To create a Create Login Page using the PHP program and the database MYSQL. Procedure: [linuxpert@localhost ~]# chmod 777/var/www/html [linuxpert@localhost ~]$ su Password: admin123 [root@localhost linuxpert]# cd /var/www/html [root@localhost html]# gedit Type the following in gedit and save it as HomePage.php Create Login Page (HomePage.php) <table width="300" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC"> <tr> <form name="form1" method="post" action="checklogin.php"> <td> <table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF"> <tr> <td colspan="3"><strong>Member Login </strong></td> </tr> <tr> <td width="78">Username</td> <td width="6">:</td> <td width="294"><input name="myusername" type="text" id="myusername"></td> </tr> <tr> <td>Password</td> <td>:</td> <td><input name="mypassword" type="text" id="mypassword"></td>

By-

Mr.I.Samuel Peter James

</tr> <tr> <td>&nbsp;</td> <td>&nbsp;</td> <td><input type="submit" name="Submit" value="Login"></td> </tr> </table> </td> </form> </tr> </table> Type the following in gedit and save it as checklogin.php Create Validation Page (checklogin.php) <?php $host="localhost"; // Host name $username="root"; // Mysql default username //$password=""; // Mysql No password $db_name="my_db"; // Database name $tbl_name="members"; // Table name // Connect to server and select databse. mysql_connect("$host", "$username")or die("cannot connect"); mysql_select_db("$db_name")or die("cannot select DB"); // username and password sent from form $myusername=$_POST['myusername']; $mypassword=$_POST['mypassword']; $sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword'"; $result=mysql_query($sql); // Mysql_num_row is counting table row $count=mysql_num_rows($result); // If result matched $myusername and $mypassword, table row must be 1 row if($count==1) echo "Welcome To Our Web Page";
ByMr.I.Samuel Peter James

else echo "Wrong Username or Password"; ?> TYPE THE FOLLOWING IN THE BROWSER http://localhost/ HomePage.php When u press the submit button

RESULT: Thus the Create Login Page using the PHP program and the database MYSQL is obtained and the output was verified.
ByMr.I.Samuel Peter James

You might also like