Git Product home page Git Product logo

unpv22e's Introduction

CAVEATS
=======

1. Please do NOT send me email with your "make" output, asking me what to
   do to get the source code working on your system.  You would not believe
   the volume of email that I get like this, and I just don't have the
   time to even respond to these any more.  My suggestion is to get someone
   locally to help (at work or at school) or to ask on some vendor-specific
   Usenet newsgroup.

   My publisher graciously allows all the code to be made available (to save
   you from having to type it in), but the code is provided "as is" with no
   support implied.

2. The code in the book uses features that are not widespread during 1998
   (e.g., Posix IPC, a *working* pthreads library, Posix realtime signals,
   etc.).  The *only* Unix systems that I found that supported everything
   that I wanted to cover in the book were Solaris 2.6 and Digital Unix
   4.0B (excluding doors, which I know are Solaris-only, and Posix read-write
   locks, which only AIX supports).  If you are bringing up the source code
   on some other system *expect* to find features described in the book
   that your system does not support.

   I have brought up pieces of the code (mainly the library and a few
   test programs) on BSD/OS 3.1, RedHat Linux 5.1, and AIX 4.3.1, but I
   do not have the time and resources to try and port the code to all
   other possible Unix variants (and all the various Linux variants with
   different kernels and libraries).  I think the code is quite portable
   but it will require some effort to port the code to other Unix systems.

QUICK AND DIRTY
===============

Execute the following from the src/ directory:

    ./configure    # try to figure out all implementation differences

    cd lib         # build the basic library that all programs need
    make           # use "gmake" everywhere on BSD/OS systems

    cd ../pipe     # build and test a simple program
    make pipeconf
    ./pipeconf /tmp

If all that works, you're all set to start compiling individual programs.

Notice that all the source code assumes tabs every 4 columns, not 8.

MORE DETAILS
============

5.  If you need to make any changes to the "unpipc.h" header, notice that
    it is a hard link in each directory, so you only need to change it once.

6.  If configure runs OK but you encounter problems building the library,
    the easiest fix is to change either of the files "src/Make.defines" or
    "src/config.h" accordingly.  These two files are generated by the
    configure script and are used by all the programs.  You may need to
    change the CFLAGS variable in "Make.defines" or comment out certain
    features in "config.h".

7.  Go into the "lib/" directory and type "make".  This builds the library
    "libunpipc.a" that is required by almost all of the programs.  There may
    be compiler warnings (see NOTES below).  This step is where you'll find
    all of your system's dependencies, and you must just update your cf/
    files from step 1, rerun "config" and do this step again.

    Expect some warnings from your C compiler (I always run gcc with -Wall)
    because all systems have some broken header files and some automatically
    generated programs (e.g., Sun RPC) generate unused variables and the
    like.

8.  Once the library is made from step 7, you can then go into any
    of the source code directories and make whatever program you are
    interested in.  Note that the horizontal rules at the beginning and
    end of each program listing in the book contain the directory name and
    filename.

    BEWARE: Not all programs in each directory will compile on all systems
    (e.g., the directories pxmsg/, pxsem/, and pxshm require support of
    the corresponding Posix realtime functions; the directory src/doors/
    will only run under Solaris, etc.)  Also, not all files in each
    directory are included in the book.  Beware of any files with "test"
    in the filename: they are probably a quick test program that I wrote
    to check something, and may or may not work.

NOTES
-----

- Many systems do not have correct function prototypes for some of the
  functions, and this can cause many warnings during compilation.
  For example, the Solaris 2.6 <sys/mman.h> header does not define the
  function prototype for shm_open() and shm_unlink() for the right set
  of compiler flags.  Solaris 2.6 also defines the old "char *" argument
  for shmdt() by default, instead of the newer "const void *" argument.

- SunOS 4.1.x: If you are using Sun's acc compiler, you need to run
  the configure program as

        CC=acc CFLAGS=-w CPPFLAGS=-w ./configure

  (This note is from my experiences with SunOS 4.1.3 with the source code
  from Volume 1.  I have not tried to compile the Volume 2 source code
  under this OS.)

unpv22e's People

Contributors

pengng avatar

Stargazers

Meison avatar

Watchers

James Cloos avatar  avatar

Forkers

vegetabledog007

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.