Follow this link for a table of contents.
Follow this link for a version of this page with improved navigation for graphical browsers.

The head of a GNU is the logo of the GNU project  DotGNU DotGNU logo

DotGNU Portable.NET Source Installation Guide

This document explains how to install DotGNU Portable.NET by building it from the source distribution. Visit the Portable.NET Packages page for instructions on installing the binary package distributions.

Source Code Downloads

The most recent version can be downloaded from savannah's download area. site.

It may however be best to grab the latest development version from Savannah CVS. This project's CVS repository can be checked out through anonymous CVS with the following instruction set.

  cvs -z3 co .

NOTE: Before you can build the cvs version, you need to run in order to create the and configure files.


There are three main components that you must install in the following order to use DotGNU Portable.NET:


And there are two optional components:


You will need "pnetC" if you wish to use the C compiler. You may need "ml-pnet" if you wish to use Mono libraries such as "System.Data".

Another component, "cscctest", is only available via CVS because it changes very often - always use the most recent CVS version. See the CVS instructions above for information on obtaining it.

You will need flex and bison to build DotGNU Portable.NET. We use flex 2.5.4 and bison 1.28. Some support is provided for the BSD version of yacc, but bison is recommended. Other versions of lex or yacc may not work.

You typically unpack and install each component as follows:

gunzip -d <name-version.tar.gz | tar xvf -
cd name-version
make install

If you are building the CVS version, you should run ./ before ./configure.

See the "README" and "HACKING" files (where present) in each distribution for further information on install configuration options.

Most platforms will install and build using the above instructions. The following sections provide special instructions for some platforms.

Building under MS Windows

You will need to install the Cygwin package to build DotGNU Portable.NET under MS Windows. It can be obtained from

Follow the instructions in the previous section to build the distribution. This will build the Cygwin version, which can be installed and run from within the Cygwin environment.

If you wish to run DotGNU Portable.NET as a regular MS Windows application, outside the Cygwin environment, then you must build the "mingw32" version instead. To do this, configure and build as follows:

gunzip -d <name-version.tar.gz | tar xvf -
cd name-version
./configure --disable-cygwin
make install

Building under Mac OS X

Install the development tools from the Developer Tools CD that should be included with your pack of Mac CDs. If you don't have the CD, get an account at and download from the net. The download is well over 100 megabytes.

Next, install Fink ( Using the GUI program Fink Commander, install the package called libtool. Alternatively, this can be done from a terminal by typing "sudo apt-get install libtool" (without quotes) and entering an administrative password.

For each directory in treecc, pnet, pnetlib, etc, perform the following command:

./configure && make LIBTOOL=glibtool && sudo make install LIBTOOL=glibtool

Type in your usual admin password for the account on your computer when it asks for it (towards the end of each install).

It is important that you use the Fink version of the "glibtool" program when compiling "pnetlib". Other versions of libtool will not work.

Getting a more recent version

The most recent release version of the source code will always be available on the project's Web site.

However, it is recommended that developers use the CVS version when updating the source code. The CVS version will always be more recent than the release versions.

  cvs -z3 co .

where component is the name of the component that you wish to check out. When prompted for a password, just hit the Enter key.

NOTE: Before you can build the cvs version, you need to run in order to create the and configure files.

Running the examples

Once you have built the system, you can test it on the examples within the "samples" directory:

$ cd samples
$ ../engine/ilrun hello.exe
$ ../engine/ilrun fib.exe

The PNetMark program, listed above, is a more involved example. Instructions for running PNetMark can be found within its README file. You may also want to have a look at the "demos and sample programs" webpage.


Online documentation for the tools can be found here.

Information on changes to individual versions can be found in the NEWS file within the distribution.

The Converted Virtual Machine (CVM) instruction set has been documented using embedded XML tags in the source. A HTML version of the documentation can be found here.

Common problems

Some platforms may have problems building "libffi" and "libgc". You can use the configure options "--without-libffi" and "--without-libgc" to disable them. The system may not fully work if you do this, so you will probably have to update those packages for your platform.

Sometimes "./" can fail, giving errors about missing LIBTOOL macros. If this happens, then change the line that says "aclocal" to "aclocal -I ./" and retry.

Verbatim copying and distribution of this entire article are permitted in any medium or format, provided this notice is preserved.

This page is maintained by Norbert Bollow <> with support from the DotGNU Developers mailing list.