Here are the steps for installing gpsd and verifying its performance: 0. gpsd has a core set of prerequisites that are required for any configuration of the package, and then additional features and tests have additional prerequisites. Necessary components for any build: C compiler -> gpsd and client library are written in C Python -> some code is generated from python scripts Python GTK-2 and cairo bindings -> the main test client, xgps, needs this C99 conformance is required in the compiler. The C code depends on one non-C99 feature: anonymous unions. We could eliminate these, but the cost would be source-level interface breakage if we have to move structure members in and out of unions. You will need Python 2.6 or 2.4+ & simplejson. The Python code in GPSD is 2.4-compatible except that you need either the json library module from 2.6 or the functionally equivalent simplejson backport. Note that while Python is required to *build* GPSD (the build uses some code generators in Python), it is not required to run the service daemon. In particular, you can cross-compile onto an embeddeed system without having to take Python with you. Having the following optional components on your system will enable various additional capabilities and extensions: C++ compiler -> libgpsmm C++ wrapper for the library pthreads library -> support for PPS timekeeping on serial GPSes DBUS -> gpsd will issue DBUS notifications ncurses -> a test client and the GPS monitor depend on this libusb-1.0.x or later -> better USB device discovery Qt + qmake -> libQgpsmm depends on this If you have libusb-1.0.0 or later, the GPSD build will autodetect this and use it to discover Garmin USB GPSes, rather than groveling through /proc/bus/usb/devices (which has been deprecated by the Linux kernel team). For working with DBUS, you'll need the DBUS development headers and libraries installed. Under Debian/Ubuntu these are the packages ibdbus-1-dev and libdbus-glib-1-dev. For building from the source tree, or if you change the man page source, xslt and docbook xsl style files are used to generate nroff -man source from docbook xml. The following packages are used in this process: libxslt -> xsltproc is used to build man pages from xml docbook-xsl -> style file for xml to man translation The build degrades gracefully in the absence of any of these. You should be able to tell from configure messages which extensions you will get. Under Ubuntu and most other Debian-derived, an easy way to pick up the prerequisites is: "apt-get build-dep gpsd" If you are going to modify the build, you will need these: autoconf 2.61 or later automake 1.10 or later libtool 2.26 or later pkg-config Once you have fetched the software prerequisites: 1. Start by making sure you can get data from your GPS, otherwise the later steps will be very frustrating. In this command stty -F /dev/ttyXXX ispeed 4800 && cat ". Default value is "/usr/local". Please refer to Qt's documentation at http://qt.nokia.com/doc/4.6/platform-specific.html for platform specific building documentation 16. There are regression tests to verify proper operation of gpsd, and it can be useful to run these to verify that all is well. To run the regression tests, first build gpsd from sources, and then run "make check". It is not necessary to install first, but you do need to have "." in your $PATH to run regressions uninstalled. Python is required for regression tests. 17. If you installed from a .deb under Debian or a Debian-derived system, you may need to `dpkg-reconfigure -plow gpsd' to enable the hotplug magic ("Start gpsd automatically"). 18. Note for people using gpsd as time source for ntpd: In case you're using dhcp3-client to configure your system, make sure you disable /etc/dhcp3/dhclient-exit-hooks.d/ntp as dhclient would restart ntpd with an automatically created ntp.conf otherwise - and gpsd would not be ablt to talk with ntpd anymore.