Objective-C Language and Gnustep Base Library Programming Manual

Total Page:16

File Type:pdf, Size:1020Kb

Objective-C Language and Gnustep Base Library Programming Manual Objective-C Language and GNUstep Base Library Programming Manual Francis Botto (Brainstorm) Richard Frith-Macdonald (Brainstorm) Nicola Pero (Brainstorm) Adrian Robert Copyright c 2001-2004 Free Software Foundation Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies. Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided also 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 manual into another lan- guage, under the above conditions for modified versions. i Table of Contents 1 Introduction::::::::::::::::::::::::::::::::::::: 3 1.1 What is Object-Oriented Programming? :::::::::::::::::::::::: 3 1.1.1 Some Basic OO Terminology :::::::::::::::::::::::::::::: 3 1.2 What is Objective-C? :::::::::::::::::::::::::::::::::::::::::: 5 1.3 History :::::::::::::::::::::::::::::::::::::::::::::::::::::::: 5 1.4 What is GNUstep? ::::::::::::::::::::::::::::::::::::::::::::: 6 1.4.1 GNUstep Base Library :::::::::::::::::::::::::::::::::::: 6 1.4.2 GNUstep Make Utility :::::::::::::::::::::::::::::::::::: 7 1.4.3 A Word on the Graphical Environment :::::::::::::::::::: 7 1.4.4 The GNUstep Directory Layout ::::::::::::::::::::::::::: 7 1.5 Building Your First Objective-C Program :::::::::::::::::::::: 8 2 The Objective-C Language ::::::::::::::::::: 11 2.1 Non OO Additions :::::::::::::::::::::::::::::::::::::::::::: 11 2.2 Objects ::::::::::::::::::::::::::::::::::::::::::::::::::::::: 11 2.2.1 Id and nil :::::::::::::::::::::::::::::::::::::::::::::::: 12 2.2.2 Messages ::::::::::::::::::::::::::::::::::::::::::::::::: 12 2.2.3 Polymorphism:::::::::::::::::::::::::::::::::::::::::::: 13 2.3 Classes:::::::::::::::::::::::::::::::::::::::::::::::::::::::: 13 2.3.1 Inheritance::::::::::::::::::::::::::::::::::::::::::::::: 13 2.3.2 Inheritance of Methods ::::::::::::::::::::::::::::::::::: 14 2.3.3 Overriding Methods :::::::::::::::::::::::::::::::::::::: 14 2.3.4 Abstract Classes ::::::::::::::::::::::::::::::::::::::::: 14 2.3.5 Class Clusters :::::::::::::::::::::::::::::::::::::::::::: 15 2.4 NSObject: The Root Class :::::::::::::::::::::::::::::::::::: 15 2.4.1 The NSObject Protocol :::::::::::::::::::::::::::::::::: 16 2.5 Static Typing ::::::::::::::::::::::::::::::::::::::::::::::::: 16 2.5.1 Type Introspection ::::::::::::::::::::::::::::::::::::::: 16 2.5.2 Referring to Instance Variables ::::::::::::::::::::::::::: 17 2.6 Working with Class Objects ::::::::::::::::::::::::::::::::::: 17 2.6.1 Locating Classes Dynamically :::::::::::::::::::::::::::: 18 2.7 Naming Constraints and Conventions:::::::::::::::::::::::::: 18 2.8 Strings in GNUstep ::::::::::::::::::::::::::::::::::::::::::: 19 2.8.1 Creating NSString Static Instances ::::::::::::::::::::::: 19 2.8.2 NSString +stringWithFormat: :::::::::::::::::::::::::::: 19 2.8.3 C String Conversion :::::::::::::::::::::::::::::::::::::: 20 2.8.4 NSMutableString::::::::::::::::::::::::::::::::::::::::: 20 2.8.5 Loading and Saving Strings::::::::::::::::::::::::::::::: 21 ii Objective-C GNUstep Base Programming Manual 3 Working with Objects::::::::::::::::::::::::: 23 3.1 Initializing and Allocating Objects :::::::::::::::::::::::::::: 23 3.1.1 Initialization with Arguments::::::::::::::::::::::::::::: 23 3.1.2 Memory Allocation and Zones :::::::::::::::::::::::::::: 24 3.1.3 Memory Deallocation::::::::::::::::::::::::::::::::::::: 25 3.2 Memory Management ::::::::::::::::::::::::::::::::::::::::: 25 3.2.1 Explicit Memory Management :::::::::::::::::::::::::::: 25 3.2.2 OpenStep-Style (Retain/Release) Memory Management::: 26 3.2.2.1 Autorelease Pools ::::::::::::::::::::::::::::::::::: 27 3.2.2.2 Avoiding Retain Cycles:::::::::::::::::::::::::::::: 28 3.2.2.3 Summary ::::::::::::::::::::::::::::::::::::::::::: 29 3.2.3 Garbage Collection Based Memory Management :::::::::: 29 3.2.4 Current Recommendations ::::::::::::::::::::::::::::::: 30 4 Writing New Classes :::::::::::::::::::::::::: 31 4.1 Interface :::::::::::::::::::::::::::::::::::::::::::::::::::::: 31 4.1.1 Interface Capabilities ::::::::::::::::::::::::::::::::::::: 31 4.1.2 Including Interfaces :::::::::::::::::::::::::::::::::::::: 33 4.1.3 Referring to Classes - @class :::::::::::::::::::::::::::::: 33 4.2 Implementation ::::::::::::::::::::::::::::::::::::::::::::::: 34 4.2.1 Writing an Implementation ::::::::::::::::::::::::::::::: 35 4.2.2 Super and Self ::::::::::::::::::::::::::::::::::::::::::: 35 4.2.3 Instance Initialization :::::::::::::::::::::::::::::::::::: 36 4.2.4 Flexible Initialization::::::::::::::::::::::::::::::::::::: 39 4.2.5 Instance Deallocation :::::::::::::::::::::::::::::::::::: 40 4.3 Protocols ::::::::::::::::::::::::::::::::::::::::::::::::::::: 41 4.3.1 Declaring a Formal Protocol :::::::::::::::::::::::::::::: 41 4.3.2 Implementing a Formal Protocol:::::::::::::::::::::::::: 42 4.3.3 Using a Formal Protocol ::::::::::::::::::::::::::::::::: 42 4.4 Categories :::::::::::::::::::::::::::::::::::::::::::::::::::: 43 4.4.1 Category Overrides::::::::::::::::::::::::::::::::::::::: 44 4.4.2 Categories as an Implementation Tool :::::::::::::::::::: 44 4.4.3 Categories and Protocols ::::::::::::::::::::::::::::::::: 45 4.5 Simulating Private and Protected Methods :::::::::::::::::::: 45 4.6 Simulating Class Variables :::::::::::::::::::::::::::::::::::: 46 5 Advanced Messaging :::::::::::::::::::::::::: 49 5.1 How Messaging Works :::::::::::::::::::::::::::::::::::::::: 49 5.2 Selectors :::::::::::::::::::::::::::::::::::::::::::::::::::::: 50 5.2.1 The Target-Action Paradigm ::::::::::::::::::::::::::::: 50 5.2.2 Obtaining Selectors :::::::::::::::::::::::::::::::::::::: 51 5.2.3 Avoiding Messaging Errors when an Implementation is Not Found :::::::::::::::::::::::::::::::::::::::::::::::::::::: 51 5.3 Forwarding ::::::::::::::::::::::::::::::::::::::::::::::::::: 52 5.4 Implementations :::::::::::::::::::::::::::::::::::::::::::::: 53 iii 6 Exception Handling, Logging, and Assertions :::::::::::::::::::::::::::::::::::::::::::::::: 55 6.1 Exceptions :::::::::::::::::::::::::::::::::::::::::::::::::::: 55 6.1.1 Catching and Handling Exceptions ::::::::::::::::::::::: 55 6.1.2 Passing Exceptions Up the Call Stack :::::::::::::::::::: 57 6.1.3 Where do Exceptions Originate?:::::::::::::::::::::::::: 57 6.1.4 Creating Exceptions :::::::::::::::::::::::::::::::::::::: 57 6.1.5 When to Use Exceptions ::::::::::::::::::::::::::::::::: 58 6.2 Logging ::::::::::::::::::::::::::::::::::::::::::::::::::::::: 59 6.2.1 NSLog ::::::::::::::::::::::::::::::::::::::::::::::::::: 59 6.2.2 NSDebugLog, NSWarnLog ::::::::::::::::::::::::::::::: 59 6.2.3 Last Resorts: GSPrintf and fprintf:::::::::::::::::::::::: 61 6.2.4 Profiling Facilities :::::::::::::::::::::::::::::::::::::::: 61 6.3 Assertions :::::::::::::::::::::::::::::::::::::::::::::::::::: 61 6.3.1 Assertions and their Handling :::::::::::::::::::::::::::: 61 6.3.2 Custom Assertion Handling :::::::::::::::::::::::::::::: 62 6.4 Comparison with Java :::::::::::::::::::::::::::::::::::::::: 62 7 Distributed Objects ::::::::::::::::::::::::::: 65 7.1 Object Interaction :::::::::::::::::::::::::::::::::::::::::::: 65 7.2 The GNUstep Solution :::::::::::::::::::::::::::::::::::::::: 65 7.2.1 Code at the Server ::::::::::::::::::::::::::::::::::::::: 66 7.2.2 Code at the Client ::::::::::::::::::::::::::::::::::::::: 67 7.2.3 Using a Protocol ::::::::::::::::::::::::::::::::::::::::: 69 7.2.4 Complete Code for Telephone Directory Application :::::: 70 7.2.5 GNUstep Distributed Objects Name Server ::::::::::::::: 71 7.2.6 Look Ma, No Stubs! :::::::::::::::::::::::::::::::::::::: 72 7.3 A More Involved Example::::::::::::::::::::::::::::::::::::: 72 7.3.1 Protocol Adopted at Client ::::::::::::::::::::::::::::::: 73 7.3.2 Protocol Adopted at Server::::::::::::::::::::::::::::::: 73 7.3.3 Code at the Client ::::::::::::::::::::::::::::::::::::::: 73 7.3.4 Code at the Server ::::::::::::::::::::::::::::::::::::::: 76 7.4 Language Support for Distributed Objects::::::::::::::::::::: 81 7.4.1 Protocol Type Qualifiers ::::::::::::::::::::::::::::::::: 81 7.4.2 Message Forwarding :::::::::::::::::::::::::::::::::::::: 83 7.5 Error Checking ::::::::::::::::::::::::::::::::::::::::::::::: 84 7.5.1 Vending the Server Object:::::::::::::::::::::::::::::::: 84 7.5.2 Catching Exceptions ::::::::::::::::::::::::::::::::::::: 84 7.5.3 The Connection Fails::::::::::::::::::::::::::::::::::::: 84 iv Objective-C GNUstep Base Programming Manual 8 Base Library ::::::::::::::::::::::::::::::::::: 85 8.1 Copying, Comparing, Hashing Objects::::::::::::::::::::::::: 85 8.2 Object Containers::::::::::::::::::::::::::::::::::::::::::::: 86 8.3 Data and Number Containers ::::::::::::::::::::::::::::::::: 87 8.3.1 NSData :::::::::::::::::::::::::::::::::::::::::::::::::: 87 8.3.2 NSValue ::::::::::::::::::::::::::::::::::::::::::::::::: 88 8.3.3 NSNumber ::::::::::::::::::::::::::::::::::::::::::::::: 88 8.3.4 NSRange, NSPoint, NSSize, NSRect :::::::::::::::::::::: 89 8.4 Date/Time Facilities :::::::::::::::::::::::::::::::::::::::::: 89 8.5 String Manipulation and Text Processing :::::::::::::::::::::: 89 8.5.1 NSScanner and Character Sets ::::::::::::::::::::::::::: 89 8.5.2 Attributed Strings:::::::::::::::::::::::::::::::::::::::: 89 8.5.3 Formatters :::::::::::::::::::::::::::::::::::::::::::::::
Recommended publications
  • Working with System Frameworks in Python and Objective-C
    Working with System Frameworks in Python and Objective-C by James Barclay Feedback :) j.mp/psumac2015-62 2 Dude, Where’s My Source Code? CODE https://github.com/futureimperfect/psu-pyobjc-demo https://github.com/futureimperfect/PSUDemo SLIDES https://github.com/futureimperfect/slides 3 Dude, Where’s My Source Code? CODE https://github.com/futureimperfect/psu-pyobjc-demo https://github.com/futureimperfect/PSUDemo SLIDES https://github.com/futureimperfect/slides 3 Dude, Where’s My Source Code? CODE https://github.com/futureimperfect/psu-pyobjc-demo https://github.com/futureimperfect/PSUDemo SLIDES https://github.com/futureimperfect/slides 3 Agenda 1. What are system frameworks, and why should you care? 2. Brief overview of the frameworks, classes, and APIs that will be demonstrated. 3. Demo 1: PyObjC 4. Demo 2: Objective-C 5. Wrap up and questions. 4 What’s a System Framework? …and why should you care? (OS X) system frameworks provide interfaces you need to write software for the Mac. Many of these are useful for Mac admins creating: • scripts • GUI applications • command-line tools Learning about system frameworks will teach you more about OS X, which will probably make you a better admin. 5 Frameworks, Classes, and APIs oh my! Cocoa CoreFoundation • Foundation • CFPreferences - NSFileManager CoreGraphics - NSTask • Quartz - NSURLSession - NSUserDefaults • AppKit - NSApplication 6 CoreFoundation CoreFoundation is a C framework that knows about Objective-C objects. Some parts of CoreFoundation are written in Objective-C. • Other parts are written in C. CoreFoundation uses the CF class prefix, and it provides CFString, CFDictionary, CFPreferences, and the like. Some Objective-C objects are really CF types behind the scenes.
    [Show full text]
  • Developer's Guide Sergey A
    Complex Event Processing with Triceps CEP v1.0 Developer's Guide Sergey A. Babkin Complex Event Processing with Triceps CEP v1.0 : Developer's Guide Sergey A. Babkin Copyright © 2011, 2012 Sergey A. Babkin All rights reserved. This manual is a part of the Triceps project. It is covered by the same Triceps version of the LGPL v3 license as Triceps itself. The author can be contacted by e-mail at <[email protected]> or <[email protected]>. Many of the designations used by the manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in this manual, and the author was aware of a trademark claim, the designations have been printed in caps or initial caps. While every precaution has been taken in the preparation of this manual, the author assumes no responsibility for errors or omissions, or for damages resulting from the use of the information contained herein. Table of Contents 1. The field of CEP .................................................................................................................................. 1 1.1. What is the CEP? ....................................................................................................................... 1 1.2. The uses of CEP ........................................................................................................................ 2 1.3. Surveying the CEP langscape ....................................................................................................... 2 1.4. We're not in 1950s any more,
    [Show full text]
  • Download the Specification
    Internationalizing and Localizing Applications in Oracle Solaris Part No: E61053 November 2020 Internationalizing and Localizing Applications in Oracle Solaris Part No: E61053 Copyright © 2014, 2020, Oracle and/or its affiliates. License Restrictions Warranty/Consequential Damages Disclaimer This software and related documentation are provided under a license agreement containing restrictions on use and disclosure and are protected by intellectual property laws. Except as expressly permitted in your license agreement or allowed by law, you may not use, copy, reproduce, translate, broadcast, modify, license, transmit, distribute, exhibit, perform, publish, or display any part, in any form, or by any means. Reverse engineering, disassembly, or decompilation of this software, unless required by law for interoperability, is prohibited. Warranty Disclaimer The information contained herein is subject to change without notice and is not warranted to be error-free. If you find any errors, please report them to us in writing. Restricted Rights Notice If this is software or related documentation that is delivered to the U.S. Government or anyone licensing it on behalf of the U.S. Government, then the following notice is applicable: U.S. GOVERNMENT END USERS: Oracle programs (including any operating system, integrated software, any programs embedded, installed or activated on delivered hardware, and modifications of such programs) and Oracle computer documentation or other Oracle data delivered to or accessed by U.S. Government end users are "commercial
    [Show full text]
  • Bringing GNU Emacs to Native Code
    Bringing GNU Emacs to Native Code Andrea Corallo Luca Nassi Nicola Manca [email protected] [email protected] [email protected] CNR-SPIN Genoa, Italy ABSTRACT such a long-standing project. Although this makes it didactic, some Emacs Lisp (Elisp) is the Lisp dialect used by the Emacs text editor limitations prevent the current implementation of Emacs Lisp to family. GNU Emacs can currently execute Elisp code either inter- be appealing for broader use. In this context, performance issues preted or byte-interpreted after it has been compiled to byte-code. represent the main bottleneck, which can be broken down in three In this work we discuss the implementation of an optimizing com- main sub-problems: piler approach for Elisp targeting native code. The native compiler • lack of true multi-threading support, employs the byte-compiler’s internal representation as input and • garbage collection speed, exploits libgccjit to achieve code generation using the GNU Com- • code execution speed. piler Collection (GCC) infrastructure. Generated executables are From now on we will focus on the last of these issues, which con- stored as binary files and can be loaded and unloaded dynamically. stitutes the topic of this work. Most of the functionality of the compiler is written in Elisp itself, The current implementation traditionally approaches the prob- including several optimization passes, paired with a C back-end lem of code execution speed in two ways: to interface with the GNU Emacs core and libgccjit. Though still a work in progress, our implementation is able to bootstrap a func- • Implementing a large number of performance-sensitive prim- tional Emacs and compile all lexically scoped Elisp files, including itive functions (also known as subr) in C.
    [Show full text]
  • Programming Java for OS X
    Programming Java for OS X hat’s so different about Java on a Mac? Pure Java applica- tions run on any operating system that supports Java. W Popular Java tools run on OS X. From the developer’s point of view, Java is Java, no matter where it runs. Users do not agree. To an OS X user, pure Java applications that ignore the feel and features of OS X are less desirable, meaning the customers will take their money elsewhere. Fewer sales translates into unhappy managers and all the awkwardness that follows. In this book, I show how to build GUIs that feel and behave like OS X users expect them to behave. I explain development tools and libraries found on the Mac. I explore bundling of Java applications for deployment on OS X. I also discuss interfacing Java with other languages commonly used on the Mac. This chapter is about the background and basics of Java develop- ment on OS X. I explain the history of Java development. I show you around Apple’s developer Web site. Finally, I go over the IDEs commonly used for Java development on the Mac. In This Chapter Reviewing Apple Java History Exploring the history of Apple embraced Java technologies long before the first version of Java on Apple computers OS X graced a blue and white Mac tower. Refugees from the old Installing developer tan Macs of the 1990s may vaguely remember using what was tools on OS X called the MRJ when their PC counterparts were busy using JVMs. Looking at the MRJ stands for Mac OS Runtime for Java.
    [Show full text]
  • The GNOME Desktop Environment
    The GNOME desktop environment Miguel de Icaza ([email protected]) Instituto de Ciencias Nucleares, UNAM Elliot Lee ([email protected]) Federico Mena ([email protected]) Instituto de Ciencias Nucleares, UNAM Tom Tromey ([email protected]) April 27, 1998 Abstract We present an overview of the free GNU Network Object Model Environment (GNOME). GNOME is a suite of X11 GUI applications that provides joy to users and hackers alike. It has been designed for extensibility and automation by using CORBA and scripting languages throughout the code. GNOME is licensed under the terms of the GNU GPL and the GNU LGPL and has been developed on the Internet by a loosely-coupled team of programmers. 1 Motivation Free operating systems1 are excellent at providing server-class services, and so are often the ideal choice for a server machine. However, the lack of a consistent user interface and of consumer-targeted applications has prevented free operating systems from reaching the vast majority of users — the desktop users. As such, the benefits of free software have only been enjoyed by the technically savvy computer user community. Most users are still locked into proprietary solutions for their desktop environments. By using GNOME, free operating systems will have a complete, user-friendly desktop which will provide users with powerful and easy-to-use graphical applications. Many people have suggested that the cause for the lack of free user-oriented appli- cations is that these do not provide enough excitement to hackers, as opposed to system- level programming. Since most of the GNOME code had to be written by hackers, we kept them happy: the magic recipe here is to design GNOME around an adrenaline response by trying to use exciting models and ideas in the applications.
    [Show full text]
  • GNU Guix Cookbook Tutorials and Examples for Using the GNU Guix Functional Package Manager
    GNU Guix Cookbook Tutorials and examples for using the GNU Guix Functional Package Manager The GNU Guix Developers Copyright c 2019 Ricardo Wurmus Copyright c 2019 Efraim Flashner Copyright c 2019 Pierre Neidhardt Copyright c 2020 Oleg Pykhalov Copyright c 2020 Matthew Brooks Copyright c 2020 Marcin Karpezo Copyright c 2020 Brice Waegeneire Copyright c 2020 Andr´eBatista Copyright c 2020 Christine Lemmer-Webber Copyright c 2021 Joshua Branson Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled \GNU Free Documentation License". i Table of Contents GNU Guix Cookbook ::::::::::::::::::::::::::::::: 1 1 Scheme tutorials ::::::::::::::::::::::::::::::::: 2 1.1 A Scheme Crash Course :::::::::::::::::::::::::::::::::::::::: 2 2 Packaging :::::::::::::::::::::::::::::::::::::::: 5 2.1 Packaging Tutorial:::::::::::::::::::::::::::::::::::::::::::::: 5 2.1.1 A \Hello World" package :::::::::::::::::::::::::::::::::: 5 2.1.2 Setup:::::::::::::::::::::::::::::::::::::::::::::::::::::: 8 2.1.2.1 Local file ::::::::::::::::::::::::::::::::::::::::::::: 8 2.1.2.2 `GUIX_PACKAGE_PATH' ::::::::::::::::::::::::::::::::: 9 2.1.2.3 Guix channels ::::::::::::::::::::::::::::::::::::::: 10 2.1.2.4 Direct checkout hacking:::::::::::::::::::::::::::::: 10 2.1.3 Extended example ::::::::::::::::::::::::::::::::::::::::
    [Show full text]
  • Emacs Speaks Statistics (ESS): a Multi-Platform, Multi-Package Intelligent Environment for Statistical Analysis
    Emacs Speaks Statistics (ESS): A multi-platform, multi-package intelligent environment for statistical analysis A.J. Rossini Richard M. Heiberger Rodney A. Sparapani Martin Machler¨ Kurt Hornik ∗ Date: 2003/10/22 17:34:04 Revision: 1.255 Abstract Computer programming is an important component of statistics research and data analysis. This skill is necessary for using sophisticated statistical packages as well as for writing custom software for data analysis. Emacs Speaks Statistics (ESS) provides an intelligent and consistent interface between the user and software. ESS interfaces with SAS, S-PLUS, R, and other statistics packages under the Unix, Microsoft Windows, and Apple Mac operating systems. ESS extends the Emacs text editor and uses its many features to streamline the creation and use of statistical software. ESS understands the syntax for each data analysis language it works with and provides consistent display and editing features across packages. ESS assists in the interactive or batch execution by the statistics packages of statements written in their languages. Some statistics packages can be run as a subprocess of Emacs, allowing the user to work directly from the editor and thereby retain a consistent and constant look- and-feel. We discuss how ESS works and how it increases statistical programming efficiency. Keywords: Data Analysis, Programming, S, SAS, S-PLUS, R, XLISPSTAT,STATA, BUGS, Open Source Software, Cross-platform User Interface. ∗A.J. Rossini is Research Assistant Professor in the Department of Biostatistics, University of Washington and Joint Assis- tant Member at the Fred Hutchinson Cancer Research Center, Seattle, WA, USA mailto:[email protected]; Richard M.
    [Show full text]
  • Using Ptxdist on Mac OS Based on Ptxdist 2012.04
    Using PTXdist on Mac OS based on PTXdist 2012.04 Bernhard Walle∗ 2012-04-20 ∗[email protected] Contents 1. Motivation 3 2. Basics 4 2.1. Getting OpenSource Software on Mac OS.........................4 2.2. Preparing the Hard Disk..................................5 2.2.1. Creating and Using a Sparse Bundle ........................6 3. Installing PTXdist7 3.1. Requirements........................................7 3.1.1. Mac OS.......................................7 3.1.2. Host compiler....................................7 3.2. GNU Tools..........................................7 3.3. Installation..........................................8 3.4. First setup..........................................9 4. Building an OSELAS.Toolchain 11 5. Building an Embedded Linux project 12 5.1. Using OSELAS.BSP-Pengutronix-Generic......................... 12 5.1.1. Getting the BSP................................... 12 5.1.2. Building FSF GCC.................................. 13 5.1.3. Building Qemu................................... 13 5.1.4. Running the System................................ 13 5.2. Using real Hardware.................................... 14 6. Limitations 15 6.1. Building UBI or JFFS2 images................................ 15 6.2. Linux kernel......................................... 15 6.3. Bootloader.......................................... 15 7. Using a Mac for Embedded Linux Development 16 7.1. Using a serial console.................................... 16 7.2. Exporting directories via NFS............................... 16 7.3. Mounting ext2 partitions.................................. 18 A. About this Document 19 B. Change History 20 Bibliography 21 2 1. Motivation PTXdist (http://www.ptxdist.org) is a great way to build Embedded Linux systems. It downloads all required components, conVgures them for cross-compilation and Vnally builds a target image and/or target packages. In addition, it provides an easy way to build a cross-toolchain for most common processors. Read [2] for a description how to use PTXdist.
    [Show full text]
  • 1 What Is Gimp? 3 2 Default Short Cuts and Dynamic Keybinding 9
    GUM The Gimp User Manual version 1.0.0 Karin Kylander & Olof S Kylander legalities Legalities The Gimp user manual may be reproduced and distributed, subject to the fol- lowing conditions: Copyright © 1997 1998 by Karin Kylander Copyright © 1998 by Olof S Kylander E-mail: [email protected] (summer 98 [email protected]) The Gimp User Manual is an open document; you may reproduce it under the terms of the Graphic Documentation Project Copying Licence (aka GDPL) as published by Frozenriver. This document is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANT- ABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Graphic Documentation Project Copying License for more details. GRAPHIC DOCUMENTATION PROJECT COPYING LICENSE The following copyright license applies to all works by the Graphic Docu- mentation Project. Please read the license carefully---it is similar to the GNU General Public License, but there are several conditions in it that differ from what you may be used to. The Graphic Documentation Project manuals may be reproduced and distrib- uted in whole, subject to the following conditions: The Gimp User Manual Page i Legalities All Graphic Documentation Project manuals are copyrighted by their respective authors. THEY ARE NOT IN THE PUBLIC DOMAIN. • The copyright notice above and this permission notice must be preserved complete. • All work done under the Graphic Documentation Project Copying License must be available in source code for anyone who wants to obtain it. The source code for a work means the preferred form of the work for making modifications to it.
    [Show full text]
  • Openstep User Interface Guidelines
    OpenStep User Interface Guidelines 2550 Garcia Avenue Mountain View, CA 94043 U.S.A. Part No: 802-2109-10 A Sun Microsystems, Inc. Business Revision A, September 1996 1996 Sun Microsystems, Inc. 2550 Garcia Avenue, Mountain View, California 94043-1100 U.S.A. All rights reserved. Portions Copyright 1995 NeXT Computer, Inc. All rights reserved. This product or document is protected by copyright and distributed under licenses restricting its use, copying, distribution, and decompilation. No part of this product or document may be reproduced in any form by any means without prior written authorization of Sun and its licensors, if any. Portions of this product may be derived from the UNIX® system, licensed from UNIX System Laboratories, Inc., a wholly owned subsidiary of Novell, Inc., and from the Berkeley 4.3 BSD system, licensed from the University of California. Third-party font software, including font technology in this product, is protected by copyright and licensed from Sun's suppliers. This product incorporates technology licensed from Object Design, Inc. RESTRICTED RIGHTS LEGEND: Use, duplication, or disclosure by the government is subject to restrictions as set forth in subparagraph (c)(1)(ii) of the Rights in Technical Data and Computer Software clause at DFARS 252.227-7013 and FAR 52.227-19. The product described in this manual may be protected by one or more U.S. patents, foreign patents, or pending applications. TRADEMARKS Sun, Sun Microsystems, the Sun logo, SunSoft, the SunSoft logo, Solaris, SunOS, and OpenWindows are trademarks or registered trademarks of Sun Microsystems, Inc. in the United States and other countries.
    [Show full text]
  • Functional Package and Configuration Management with GNU Guix
    Functional Package and Configuration Management with GNU Guix David Thompson Wednesday, January 20th, 2016 About me GNU project volunteer GNU Guile user and contributor since 2012 GNU Guix contributor since 2013 Day job: Ruby + JavaScript web development / “DevOps” 2 Overview • Problems with application packaging and deployment • Intro to functional package and configuration management • Towards the future • How you can help 3 User autonomy and control It is becoming increasingly difficult to have control over your own computing: • GNU/Linux package managers not meeting user needs • Self-hosting web applications requires too much time and effort • Growing number of projects recommend installation via curl | sudo bash 1 or otherwise avoid using system package managers • Users unable to verify that a given binary corresponds to the source code 1http://curlpipesh.tumblr.com/ 4 User autonomy and control “Debian and other distributions are going to be that thing you run Docker on, little more.” 2 2“ownCloud and distribution packaging” http://lwn.net/Articles/670566/ 5 User autonomy and control This is very bad for desktop users and system administrators alike. We must regain control! 6 What’s wrong with Apt/Yum/Pacman/etc.? Global state (/usr) that prevents multiple versions of a package from coexisting. Non-atomic installation, removal, upgrade of software. No way to roll back. Nondeterminstic package builds and maintainer-uploaded binaries. (though this is changing!) Reliance on pre-built binaries provided by a single point of trust. Requires superuser privileges. 7 The problem is bigger Proliferation of language-specific package managers and binary bundles that complicate secure system maintenance.
    [Show full text]