SAS, GNU & Open Source: Mingw Development Tools and Sample

Total Page:16

File Type:pdf, Size:1020Kb

SAS, GNU & Open Source: Mingw Development Tools and Sample Paper AD10 SAS, GNU & Open Source: MinGW Development Tools and Sample Applications Brian Fairfield-Carter, PRA International, Victoria, BC (Canada) Stephen Hunt, PRA International, Victoria, BC (Canada) Tracy Sherman, PRA International, Victoria, BC (Canada) ABSTRACT Although many products of the Open Source initiative have been successfully adopted in the SAS world (notably Linux, and the CVS/TortoiseCVS version control system), open source applications written by and for SAS users are somewhat under-represented. Of the 100,000+ applications currently registered on SourceForge (the world’s largest open source clearing house), a search for SAS-related applications currently yields fewer than a dozen projects. The willingness of SAS users to freely exchange ideas and source code is evidenced by the popularity of SAS conferences and by the wealth of information distributed on mail lists such as SAS-L, and tends to suggest motivations similar to those driving the development and distribution of open source software (namely the desire to increase the quality of software by allowing fellow programmers to freely read, modify and re-distribute source code). Cooperative development of SAS-specific open source applications would seem a natural extension of these same motivations. To set the stage for open source development targeted at SAS users, and under the assumption that the majority of readers are running Windows, this paper introduces the very basics of MinGW (Minimalist GNU for Windows), a pared-down collection of Windows-specific header files and libraries combined with various other GNU tools (most importantly GCC (the GNU Compiler Collection)). It provides basic information on distribution, set-up and configuration, and illustrates practical usage via two SAS-centric Win32 applications: the first is a simple log-checker, and the second, available on SourceForge under the name “ShellOut”, is a grid control and SAS code-builder for creating table shells. INTRODUCTION The world of open source/free software has evolved over the last twenty years or so under the central premise that better software and a stronger programming community result when source code can be freely read, modified and re- distributed. The basic idea is that bug fixes can be implemented by a potentially much larger pool of developers than under the traditional closed/proprietary model, and that because the same people often fill the role of developer and end user, features can be tailored precisely to match user requirements. Central to the Open Source initiative are the GNU operating system and the GNU toolset, cornerstones of the latter being the freely available and freely distributable header files and function libraries combined with the GNU Compiler Collection (GCC). These are what allow developers to build and distribute applications, and allow users to run these applications. GNU, MINGW, AND GCC GNU The term “GNU” is a recursive acronym standing for “GNU’s Not Unix”, and refers to a free, open source operating system created to mirror the functionality of Unix in a non-proprietary distribution. Rather than simply being free in a monetary sense, GNU is free in the sense of allowing open access to the source code, which can be modified, studied, borrowed from, and re-distributed. What we know of today as the Linux operating system is more appropriately referred to as GNU/Linux, reflecting its composition as a combination of the GNU system and the Unix- compatible kernel Linux. GNU/Linux and complete GNU documentation are distributed via http://www.gnu.org/. Large numbers of applications built using GNU tools are also available from http://sourceforge.net/, which is currently the world’s largest development and download repository of open source code and applications. Of particular note are TortoiseCVS, a graphical front-end to CVS (the Concurrent Versions System for version control of source code) (http://www.tortoisecvs.org/ ) (Williams, 2004) and wxWindows/wxWidgets, the class library on which TortoiseCVS is built (http://wxwindows.org/ ). MINGW AND MSYS Minimalist GNU for Windows (MinGW) is, as the name suggests, a minimal subset and Windows-specific ‘version’ of GNU, consisting of Windows-specific header files, binary utilities, and a Win32 version of GCC (the GNU Compiler 1 Collection), and which collectively provides all the functionality necessary to build Windows desktop applications. MSYS (‘Minimal SYStem’) is essentially a command-line interface, providing a convenient portable-operating-system- styled (POSIX) environment in which to run GCC and other MinGW utilities. MinGW and MSYS can be acquired from the download page at www.mingw.org as single-archive distribution packages, in the familiar form of Win32 installation binaries. This not only streamlines installation, but also ensures compatibility between different components of the distribution. Components can also be downloaded and updated individually. GCC Apart from the kernel, which actually runs applications, probably the most important part of any development environment is the compiler – the application that translates higher-level ‘human-readable’ code into low-level executable code. In MinGW, this functionality is provided by GCC. GCC is very versatile in that it includes front ends for C, C++, Objective-C, Fortran, Java and Ada, as well as standard libraries for these languages. Complete documentation to GCC is available at http://gcc.gnu.org/. PROGRAMMING LANGUAGE AND APPLICATION INTERFACE: C++/WIN32 API The two applications presented in this paper are both written in C++, and use the Windows 32-bit Application Interface (Win32 API). The Win32 API is the facility in Windows which controls user interaction with the operating system. It is what you see when you launch a desk-top application, and is responsible for drawing windows and other graphical elements on the screen, and for handling events that arise from actions in the user interface. MinGW provides access to the Win32 API by means of the ‘windows.h’ header file and associated library. These components supply a large number of functions for creating and controlling windows and the Windows Graphics Device Interface (GDI). While C++ (essentially an object-oriented ‘extension’ of C) might seem an archaic choice, there are things to be said for it. For a start, huge numbers of applications are and continue to be written in C++; documentation and sample code are extensive. Learning C++ is a worthwhile exercise if for no other reason than that it will make learning things like Perl, Java and Python much easier. If you’ve never worked with C++ and find the prospect intimidating, don’t worry – the authors were in exactly the same position a year ago! MINGW/MSYS USAGE ILLUSTRATED To illustrate the very basics of compiling and running an application built on MinGW, we’ll start with the inevitable ‘hello world’ program in c (source code assumed to have been saved as the file ‘hello.c’): #include <stdio.h> main (){ printf("Hello\n");} The first line of the program ‘#include’s a header file (stdio.h) (much like the “%include” directive in SAS), which contains function ‘prototypes’ for processing standard input and output. This header file resides in the “include” subdirectory under the MinGW parent directory; the function definitions themselves exist in compiled object files (libraries) under the “lib” subdirectory. While the source code behind this function implementation is available, it is not included in the MinGW distribution since it would very rarely be necessary to re-compile these libraries from source. The only part of the ‘hello’ program that actually does anything is the call to the ‘printf’ function, which writes “Hello” (followed by a newline character) to standard output (the command interface, in this case). To compile and run this program, we’d (1) launch MSYS and navigate to the directory containing the source file, (2) invoke GCC, passing it the name of the source file (hello.c) and specifying the name of the compiled output file (hello.exe), and (3) type the name of the compiled executable: Figure 1: Compiling and running a simple program using MSYS/MinGW 2 In reality, an entire application is seldom compiled from a single source file. A typical Windows application will consist of at least a header file (containing function prototypes and global declarations, and which is #included by a source file) and a resource script containing menu and dialog definitions. To build such an application, the source file and resource script are compiled into object files, and linked into the executable file. This would be carried out by something like the following: g++ -c myapp.cpp windres -o resource.o resource.rc g++ -o myapp myapp.o resource.o -mwindows Note that the C++ compiler is invoked via ‘g++’, and that the resource script is compiled by a resource compiler (‘windres’). The third line takes the compiled object files from the previous two commands and ‘links’ them into the ‘myapp’ application. THE GNU ‘MAKE’ FACILITY The preceding example shows that with even a small number of source files, compiling each file separately and linking into an executable would serve as a serious impediment to the development process. Consider what would happen as an application grew to 50 or more source files. Fortunately the MinGW distribution includes the GNU Make facility, an application that takes as input a user-defined ‘makefile’ (essentially a script describing how to build the application), and passes all the instructions required to build the application to the command interface. The Make facility allows the user to specify dependencies between source files, so that components are compiled and linked in the appropriate order, and can also recurs through directory trees so that neither source files nor sub-directories need to be explicitly referenced. One of the central features of Make is that it compares the timestamp on source files against that of compiled object files, and only re-compiles where the source files have changed since the last build before re-building the application.
Recommended publications
  • Cygwin User's Guide
    Cygwin User’s Guide Cygwin User’s Guide ii Copyright © Cygwin authors Permission is granted to make and distribute verbatim copies of this documentation provided the copyright notice and this per- mission notice are preserved on all copies. Permission is granted to copy and distribute modified versions of this documentation under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one. Permission is granted to copy and distribute translations of this documentation into another language, under the above conditions for modified versions, except that this permission notice may be stated in a translation approved by the Free Software Foundation. Cygwin User’s Guide iii Contents 1 Cygwin Overview 1 1.1 What is it? . .1 1.2 Quick Start Guide for those more experienced with Windows . .1 1.3 Quick Start Guide for those more experienced with UNIX . .1 1.4 Are the Cygwin tools free software? . .2 1.5 A brief history of the Cygwin project . .2 1.6 Highlights of Cygwin Functionality . .3 1.6.1 Introduction . .3 1.6.2 Permissions and Security . .3 1.6.3 File Access . .3 1.6.4 Text Mode vs. Binary Mode . .4 1.6.5 ANSI C Library . .4 1.6.6 Process Creation . .5 1.6.6.1 Problems with process creation . .5 1.6.7 Signals . .6 1.6.8 Sockets . .6 1.6.9 Select . .7 1.7 What’s new and what changed in Cygwin . .7 1.7.1 What’s new and what changed in 3.2 .
    [Show full text]
  • Buildsystems and What the Heck for We Actually Use the Autotools
    Buildsystems and what the heck for we actually use the autotools Tom´aˇsChv´atal SUSE Packagers team 2013/07/19 Introduction Who the hell is Tom´aˇsChv´atal • SUSE Employee since 2011 - Team lead of packagers team • Packager of Libreoffice and various other stuff for openSUSE • openSUSE promoter and volunteer • Gentoo developer since fall 2008 3 of 37 Autotools process Complete autotools process 5 of 37 Make Why not just a sh script? Always recompiling everything is a waste of time and CPU power 7 of 37 Plain makefile example CC ?= @CC@ CFLAGS ?= @CFLAGS@ PROGRAM = examplebinary OBJ = main.o parser.o output.o $ (PROGRRAM) : $ (OBJ) $ (CC) $ (LDFLAGS) −o $@ $^ main.o: main.c common.h parser.o: parser.c common.h output.o: output.c common.h setup.h i n s t a l l : $ (PROGRAM) # You have to use tabs here $(INSTALL) $(PROGRAM) $(BINDIR) c l e a n : $ (RM) $ (OBJ) 8 of 37 Variables in Makefiles • Variables expanded using $(), ie $(VAR) • Variables are assigned like in sh, ie VAR=value • $@ current target • $<the first dependent file • $^all dependent files 9 of 37 Well nice, but why autotools then • Makefiles can get complex fast (really unreadable) • Lots of details to keep in mind when writing, small mistakes happen fast • Does not make dependencies between targets really easier • Automake gives you automatic tarball creation (make distcheck) 10 of 37 Autotools Simplified autotools process 12 of 37 Autoconf/configure sample AC INIT(example , 0.1, [email protected]) AC CONFIG HEADER([ config .h]) AC PROG C AC PROG CPP AC PROG INSTALL AC HEADER STDC AC CHECK HEADERS([string.h unistd.h limits.h]) AC CONFIG FILES([ Makefile doc/Makefile src/Makefile]) AC OUTPUT 13 of 37 Autoconf syntax • The M4 syntax is quite weird on the first read • It is not interpreted, it is text substitution machine • Lots of quoting is needed, if in doubt add more [] • Everything that does or might contain whitespace or commas has to be quoted • Custom autoconf M4 macros are almost unreadable 14 of 37 Automake bin PROGRAMS = examplebinary examplebinary SOURCES = n s r c /main .
    [Show full text]
  • Building Gridlab-D from Source on Windows with MSYS2 Installing MSYS2: the MSYS2 Environment Is Used to Build Gridlab-D 4.1 Or Newer for the Windows OS
    Building GridLAB-D from Source on Windows with MSYS2 Installing MSYS2: The MSYS2 environment is used to build GridLAB-D 4.1 or newer for the Windows OS. It can be downloaded from https://www.msys2.org/. From the website download the appropriate MSYS2 installer for 32bit (i686) and 64bit (x86_64) OS’s. The website also walks through the installation process. This guide will also walk through the installation process for the 64bit installer. Once the installer is downloaded the execute the installer. This is the first window that pops up. Click Next. It will then ask where to install MSYS2 64bit. The default location is C:\msys64 for MSYS2 64bit. Once the location has been specified click Next. Then it will ask where to create the program’s shortcuts. Use an existing one or create a new name. Once a destination is chosen click Next. At this point the installer begins to install MSYS2 onto the computer. Once installation is complete click Next. Then click Finish and installation is successful. Setting Up the MSYS2 Environment: To start the MSYS2 environment start msys2.exe. A window like below should pop up. As can be seen MSYS2 provides a Linux-like command terminal and environment for building GNU compliant C/C++ executables for Windows OS’s. When Running the MSYS2 environment for the first time updates will need to be performed. To perform update run $ pacman -Syuu Type “y” and hit enter to continue. If you get a line like the following: Simply close the MSYS2 window and restart the MSYS2 executable.
    [Show full text]
  • Project-Team CONVECS
    IN PARTNERSHIP WITH: Institut polytechnique de Grenoble Université Joseph Fourier (Grenoble) Activity Report 2016 Project-Team CONVECS Construction of verified concurrent systems IN COLLABORATION WITH: Laboratoire d’Informatique de Grenoble (LIG) RESEARCH CENTER Grenoble - Rhône-Alpes THEME Embedded and Real-time Systems Table of contents 1. Members :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 1 2. Overall Objectives :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 2 3. Research Program :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 2 3.1. New Formal Languages and their Concurrent Implementations2 3.2. Parallel and Distributed Verification3 3.3. Timed, Probabilistic, and Stochastic Extensions4 3.4. Component-Based Architectures for On-the-Fly Verification4 3.5. Real-Life Applications and Case Studies5 4. Application Domains ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::5 5. New Software and Platforms :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 6 5.1. The CADP Toolbox6 5.2. The TRAIAN Compiler8 6. New Results :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 8 6.1. New Formal Languages and their Implementations8 6.1.1. Translation from LNT to LOTOS8 6.1.2. Translation from LOTOS NT to C8 6.1.3. Translation from LOTOS to Petri nets and C9 6.1.4. NUPN 9 6.1.5. Translation from BPMN to LNT 10 6.1.6. Translation from GRL to LNT 10 6.1.7. Translation of Term Rewrite Systems 10 6.2. Parallel and Distributed Verification 11 6.2.1. Distributed State Space Manipulation 11 6.2.2. Distributed Code Generation for LNT 11 6.2.3. Distributed Resolution of Boolean Equation Systems 11 6.2.4. Stability of Communicating Systems 12 6.2.5. Debugging of Concurrent Systems 12 6.3. Timed, Probabilistic, and Stochastic Extensions 12 6.4. Component-Based Architectures for On-the-Fly Verification 13 6.4.1.
    [Show full text]
  • Technical Computing on the OS … That Is Not Linux! Or How to Leverage Everything You‟Ve Learned, on a Windows Box As Well
    Tools of the trade: Technical Computing on the OS … that is not Linux! Or how to leverage everything you‟ve learned, on a Windows box as well Sean Mortazavi & Felipe Ayora Typical situation with TC/HPC folks Why I have a Windows box How I use it It was in the office when I joined Outlook / Email IT forced me PowerPoint I couldn't afford a Mac Excel Because I LIKE Windows! Gaming It's the best gaming machine Technical/Scientific computing Note: Stats completely made up! The general impression “Enterprise community” “Hacker community” Guys in suits Guys in jeans Word, Excel, Outlook Emacs, Python, gmail Run prepackaged stuff Builds/runs OSS stuff Common complaints about Windows • I have a Windows box, but Windows … • Is hard to learn… • Doesn‟t have a good shell • Doesn‟t have my favorite editor • Doesn‟t have my favorite IDE • Doesn‟t have my favorite compiler or libraries • Locks me in • Doesn‟t play well with OSS • …. • In summary: (More like ) My hope … • I have a Windows box, and Windows … • Is easy to learn… • Has excellent shells • Has my favorite editor • Supports my favorite IDE • Supports my compilers and libraries • Does not lock me in • Plays well with OSS • …. • In summary: ( or at least ) How? • Recreating a Unix like veneer over windows to minimize your learning curve • Leverage your investment in know how & code • Showing what key codes already run natively on windows just as well • Kicking the dev tires using cross plat languages Objective is to: Help you ADD to your toolbox, not take anything away from it! At a high level… • Cygwin • SUA • Windowing systems “The Unix look & feel” • Standalone shell/utils • IDE‟s • Editors General purpose development • Compilers / languages / Tools • make • Libraries • CAS environments Dedicated CAS / IDE‟s And if there is time, a couple of demos… Cygwin • What is it? • A Unix like environment for Windows.
    [Show full text]
  • Perl on Windows
    BrokenBroken GlassGlass Perl on Windows Chris 'BinGOs' Williams “This is your last chance. After this, there is no turning back. You take the blue pill - the story ends, you wake up in your bed and believe whatever you want to believe. You take the red pill - you stay in Wonderland and I show you how deep the rabbit-hole goes.” A bit of history ● 5.003_24 - first Windows port ● 5.004 - first Win32 and Cygwin support, [MSVC++ and Borland C++] ● 5.005 - experimental threads, support for GCC and EGCS ● 5.6.0 - experimental fork() support ● 5.8.0 - proper ithreads, fork() support, 64bit Windows [Intel IA64] ● 5.8.1 - threads support for Cygwin ● 5.12.0 - AMD64 with Mingw gcc ● 5.16.0 - buh-bye Borland C++ Time for some real archaeology Windows NT 4.0 Resource Kit CDROM ActivePerl http://www.activestate.com/perl ● July 1998 - ActivePerl 5.005 Build 469 ● March 2000 - ActivePerl 5.6.0 Build 613 ● November 2002 - ActivePerl 5.8.0 Build 804 ● November 2005 - ActivePerl 5.8.7 Build 815 [Mingw compilation support] ● August 2006 - ActivePerl 5.8.8 Build 817 [64bit] ● June 2012 - ActivePerl 5.16.0 Build 1600 ● Built with MSVC++ ● Can install or use MinGW ● PPM respositories of popular modules ● Commercial support ● PerlScript – Active Scripting engine ● Perl ISAPI Strawberry Perl http://strawberryperl.com ● July 2006 - Strawberry Perl 5.8.8 Alpha 1 released ● April 2008 - Strawberry Perl 5.10.0.1 and 5.8.8.1 released ● January 2009 - first portable release ● April 2010 - 64bit and 32bit releases ● May 2012 - Strawberry Perl 5.16.0.1 released ● August
    [Show full text]
  • Libreoffice Magazine Brasil Diagramado No Libreoffice Draw EDITORIAL
    Magazine Ano 1 - Edição 1 Outubro de 2012 Caso de uso: LibreOffice na Secretaria de Segurança do Rio de Janeiro Light Proof a nova sensação Tutorial: do LibreOffice Desenvolvendo Entrevistas com Extensões Basic desenvolvedores do LibreOffice e e c c e e n n a a i i r r o o t t c c i Artigos | Dicas | Tutoriais | e muito mais... i V V LibreOffice Magazine Brasil Diagramado no LibreOffice Draw EDITORIAL Sobre partos e renascimentos Editores No mês de setembro comemoramos dois anos de criação da The Eliane Domingos de Sousa Document Foundation. Sinto-me particularmente agradecido por ter Olivier Hallot Vera Cavalcante embarcado em uma aventura de alto risco, mas com a convicção que era a coisa certa a ser feita em 2010. Com um capital intelectual Redação: vasto sobre uma tecnologia que estava ainda mostrando seus frutos, Ana Cristina Geyer Moraes fiquei receoso dos rumos tomados pela empresa que mantinha o Eliane Domingos de Sousa OpenOffice.org em uma camisa de força que o impedia de evoluir no José Carlos de Oliveira compasso que o mercado exigia de uma suíte office que almeja a Klaibson Ribeiro maturidade. Michael Meeks Na época, eu era membro eleito do Conselho da Comunidade, Noelson Alves Duarte composto por alguns representantes das comunidades mundo afora, Raimundo Santos Moura e uma maioria de funcionários do principal patrocinador. Na reunião Raul Pacheco da Silva anual do Conselho, com a participação do principal executivo do Swapnil Bhartiya projeto OpenOffice.org da empresa, soubemos que a participação da comunidade não era estratégica para os objetivos empresariais e que Tradução a condução do projeto seria feita pela empresa a revelia da David Jourdain comunidade.
    [Show full text]
  • Mobile Cloud Based Compiler : a Novel Framework for Academia
    International Journal of Advancements in Research & Technology, Volume 2, Issue4, April‐2013 445 ISSN 2278‐7763 Mobile Cloud based Compiler : A Novel Framework For Academia Mahendra Mehra, Kailas.k.Devadkar, Dhananjay Kalbande 1Computer Engineering, Sardar Patel Institute of Technology, Mumbai, India; 2 Computer Engineering, Sardar Patel Institute of Technology, Mum- bai, India. Email: [email protected], [email protected], [email protected] ABSTRACT Cloud computing is a rising technology which enables convenient, on-demand network access to a shared pool of configurable computing resources. Mobile cloud computing is the availability of cloud computing services in a mobile ecosystem. Mobile cloud computing shares with cloud computing the notion that services is provided by a cloud and accessed through mobile plat- forms. The paper aims to describe an online mobile cloud based compiler which helps to reduce the problems of portability and storage space and resource constraints by making use of the concept of mobile cloud computing. The ability to use compiler ap- plication on mobile devices allows a programmer to get easy access of the code and provides most convenient tool to compile the code and remove the errors. Moreover, a mobile cloud based compiler can be used remotely throughout any network con- nection (WI-FI/ GPRS) on any Smartphone. Thus, avoiding installation of compilers on computers and reducing the dependen- cy on computers to write and execute programs. Keywords: Mobile cloud computing; mobile web services; JASON; Compiler; Academia 1 INTRODUCTION The classroom is changing. From the time school bell rings to smartphones, and desktops. The cloud helps ensure that stu- study sessions that last well into the night, students and facul- dents, teachers, faculty, parents, and staff have on-demand ty are demanding more technology services from their access to critical information using any device from any- schools.
    [Show full text]
  • SPI Annual Report 2015
    Software in the Public Interest, Inc. 2015 Annual Report July 12, 2016 To the membership, board and friends of Software in the Public Interest, Inc: As mandated by Article 8 of the SPI Bylaws, I respectfully submit this annual report on the activities of Software in the Public Interest, Inc. and extend my thanks to all of those who contributed to the mission of SPI in the past year. { Martin Michlmayr, SPI Secretary 1 Contents 1 President's Welcome3 2 Committee Reports4 2.1 Membership Committee.......................4 2.1.1 Statistics...........................4 3 Board Report5 3.1 Board Members............................5 3.2 Board Changes............................6 3.3 Elections................................6 4 Treasurer's Report7 4.1 Income Statement..........................7 4.2 Balance Sheet............................. 13 5 Member Project Reports 16 5.1 New Associated Projects....................... 16 5.2 Updates from Associated Projects................. 16 5.2.1 0 A.D.............................. 16 5.2.2 Chakra............................ 16 5.2.3 Debian............................. 17 5.2.4 Drizzle............................. 17 5.2.5 FFmpeg............................ 18 5.2.6 GNU TeXmacs........................ 18 5.2.7 Jenkins............................ 18 5.2.8 LibreOffice.......................... 18 5.2.9 OFTC............................. 19 5.2.10 PostgreSQL.......................... 19 5.2.11 Privoxy............................ 19 5.2.12 The Mana World....................... 19 A About SPI 21 2 Chapter 1 President's Welcome SPI continues to focus on our core services, quietly and competently supporting the activities of our associated projects. A huge thank-you to everyone, particularly our board and other key volun- teers, whose various contributions of time and attention over the last year made continued SPI operations possible! { Bdale Garbee, SPI President 3 Chapter 2 Committee Reports 2.1 Membership Committee 2.1.1 Statistics On January 1, 2015 we had 512 contributing and 501 non-contributing mem- bers.
    [Show full text]
  • Creating Telephony Applications for Both Windows® and Linux
    Application Note Dialogic Research, Inc. Dual OS Applications Creating Telephony Applications for Both Windows® and Linux: Principles and Practice Application Note Creating Telephony Applications for Both Windows® and Linux: Principles and Practice Executive Summary To help architects and programmers who only have experience in a Windows® environment move their telephony applications to Linux, this application note provides information that aims to make the transition easier. At the same time, it takes into account that the original code for Windows may not be abandoned. The ultimate goal is to demonstrate how to create flexible OS-agnostic telephony applications that are easy to build, deploy, and maintain in either environment. Creating Telephony Applications for Both Windows® and Linux: Principles and Practice Application Note Table of Contents Introduction .......................................................................................................... 2 Moving to a Dual Operating System Environment ................................................. 2 CMAKE ......................................................................................................... 2 Boost Jam .................................................................................................... 2 Eclipse .......................................................................................................... 3 Visual SlickEdit ............................................................................................. 3 Using Open Source Portable
    [Show full text]
  • Install JDK, Mingw and Eclipse on Windows 7 and 10
    Install JDK, MinGW and Eclipse on Windows 7 and 10 1) Install Java Development Kit: a. Go to: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads- 2133151.html b. Download the Java SE Development Kit for your Operating System c. Once finished downloading, open the installer and follow the instructions to install the JDK and wait until it finishes installing 2) Install MinGW: a. Go to: http://sourceforge.net/projects/mingw/files/Installer/ b. Click and download mingw-get-setup.exe c. Once finished downloading, run mingw-get-setup.exe d. Click Run on the first window that pops up e. Then click Continue on the next window f. Click Continue again on the next window and it will starting downloading so items. g. After it finishes downloading, a new window will pop up named “MinGW Installation Manager” here you need to select mingw32-base, mingw32-gcc=g++, msys-base and Mark for selection each one. h. Click the “x” in the corner of the window to close it i. A pop up will appear and then click “Review Changes” j. A different window will popup and click “Apply” on it k. Wait for MinGW to finish installing l. After it finishes click “Close” 3) Set the Environment Variables: a. *** NOTE: If the following changes are not made correctly, you can brick/destroy your computer. Continue at your own risk. If you do not feel comfortable doing this portion by yourself, ask Deep in DBH 288 for help. *** b. Go to: Start Right click “Computer” Click “Properties” c.
    [Show full text]
  • Windows System Programming.Pdf
    Windows System Programming Fourth Edition ptg Johnson M. Hart Upper Saddle River, NJ • Boston • Indianapolis • San Francisco New York • Toronto • Montreal • London • Munich • Paris • Madrid Capetown • Sydney • Tokyo • Singapore • Mexico City Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in this book, and the publisher was aware of a trademark claim, the designations have been printed in initial capital letters or in all capitals. The author and publisher have taken care in the preparation of this book, but make no ex- pressed or implied warranty of any kind and assume no responsibility for errors or omis- sions. No liability is assumed for incidental or consequential damages in connection with or arising out of the use of the information or programs contained herein. The publisher offers excellent discounts on this book when ordered in quantity for bulk pur- chases or special sales, which may include electronic versions and/or custom covers and con- tent particular to your business, training goals, marketing focus, and branding interests. For more information, please contact: U.S. Corporate and Government Sales (800) 382-3419 [email protected] For sales outside of the U.S., please contact: International Sales [email protected] Visit us on the Web: informit.com/aw Library of Congress Cataloging-in-Publication Data Hart, Johnson M. ptg Windows system programming / Johnson M. Hart. p. cm. Includes bibliographical references and index. ISBN 978-0-321-65774-9 (hardback : alk. paper) 1. Application software—Development. 2. Microsoft Windows (Computer file). 3. Applica- tion program interfaces (Computer software).
    [Show full text]