|
|
(110 intermediate revisions by 14 users not shown) |
Line 1: |
Line 1: |
− | == General Instructions == | + | {| class="wikitable" style="margin: auto;" |
| + | ! scope="row"|Languages |
| + | | [[de/{{PAGENAME:Gnucash}}|Deutsch]] |
| + | | [[He/{{PAGENAME:בניה}}|עִברִית]] |
| + | |} |
| + | This page deals with building GnuCash '''from the source code'''. It includes building the current ''stable release'' from source code (downloaded as tarballs) as well as the ''developers version'' of GnuCash from the ''[[Git]] repository''. If you are searching for instructions for the version available '''from your distribution''''s software repositories, you should read [[Installation]]. |
| | | |
− | ===Disclaimer===
| + | This page doesn't provide specific instructions for optional third-party modules—like ''AqBanking'' or Perl ''Finance::Quote''—but does list the dependencies required and links to the configuration switches used with CMake to include them during compilation. |
− | This page deals with building the '''developers version''' of GnuCash from the ''[[Git]] repository''. If you are searching instructions for the ''stable version'', you should read [[GnuCash#Installation]]. | |
| | | |
− | This page deals also not with optional modules of third parties like the Perl module Finance::Quote.
| + | == Introduction == |
| + | GnuCash can be built from sources on Linux distributions, Microsoft Windows and macOS. There are three major steps in building the GnuCash program. These are listed along with the tools which may used for each step: |
| | | |
− | ===Get and Configure the Sources===
| + | # Configuration (cmake - autotools in earlier GnuCash versions) |
− | For the very latest source code, get the sources from [[Git]] or use the latest release source file of type <tt>gnucash-<version>.tar.gz</tt>. Examine the [[Dependencies]] wiki page and the [https://github.com/Gnucash/gnucash/blob/trunk/README.dependencies README.dependencies] file for the list of build dependencies for your distribution, the [https://github.com/Gnucash/gnucash/blob/trunk/README.git README.git] file for notes on compiling gnucash, and the [https://github.com/Gnucash/gnucash/blob/trunk/HACKING HACKING] file for notes on hacking the code.
| + | # Compilation ( make or ninja) |
| + | # Installation (make or ninja) |
| | | |
− | Here are the basic steps one might end up taking:
| + | Building GnuCash utilizes a set of tools which is available for all three of the major operating systems. |
| + | These steps are described in detail for each operating system in the linked pages below, along with the installation of the build tools. |
| | | |
− | 1. Change to gnucash directory
| + | == Build Tools == |
− | cd gnucash
| + | A general description of the tools used to configure and build GnuCash is given in [[Build_Tools |Build tools]]. |
− | 2. If this code was retrieved from [[Git]], generate the configure script (otherwise skip this step)
| |
− | ./autogen.sh
| |
− | 3. Look at available configure options
| |
− | ./configure --help
| |
− | :(Note: There are issues with the ''guile'' configuration of ''slib'' which will cause ''configure'' to fail on many distributions. See: [[#slib Issues]])
| |
| | | |
− | 4. For an "in-tree" build (where the compiled files are located in the same directories as the source code files), run configure with the appropriate options. Alternatively, create a separate build directory as explained below. Some example options for configure might look as follows
| + | A listing of dependencies is available at [[Dependencies]]. |
− | ./configure --prefix=/opt/gnucash-devel \
| |
− | --enable-debug --enable-doxygen \
| |
− | --enable-error-on-warning --enable-compile-warnings \
| |
− | [--enable-ofx [...]]
| |
− | 5. Compile and install
| |
− | make
| |
− | make install
| |
− | 6. Run
| |
− | /opt/gnucash-devel/bin/gnucash
| |
| | | |
− | === Using separate build directory ===
| + | The GnuCash build system has gone through some changes in the course of the 2.6 and 3 series. CMake has replaced the Autotools autogen and configure scripts for configuring the build. This has provided the ability to configure for alternative build systems and popular IDEs. Under the hood compilation and installation can now either be controlled using GNU [[Build_Tools#Make|Make]] or alternatively using the faster [[Build_Tools#Ninja|Ninja]]. Depending on the version of GnuCash you want to build you have the following options: |
− | It is possible, and even preferable, to separate the directories containing source code, build files, and installed files.
| + | ;For the application generally: |
| + | :;GnuCash 3 and more recent: These versions are configured using [[Build_Tools#CMake|CMake]]. Autotools support has been removed. Either make or ninja may be used for the build. |
| + | :;GnuCash 2.6 and earlier: These versions are configured with [[Build_Tools#Autotools|Autotools]] and built with the GNU make utility. GnuCash from v2.6.13 allowed experimental use of cmake to configure and ninja to build. |
| | | |
− | To build in another directory, cd to it before starting, then call the configure script by the relative path. For example:
| + | ;For the Source API Documentation: This is built directly from the program sources. Depending on how the build system is configured you can use <code>make doc</code> or <code>ninja doc</code>. Note this requires [[Doxygen]] to be installed. |
− | cd gnucash
| |
− | ./autogen.sh
| |
− | These steps were identical to the description above. Now the part which is different:
| |
− | mkdir build # Create the separate build directory
| |
− | cd build
| |
− | From within the build directory, you now have to call configure by its relative path. In this example, this is
| |
− | ../configure --prefix... # and all the other options
| |
| | | |
− | Then you can run ''make'', and ''make install'' as normal.
| + | ;For the documentation: |
| + | :;Since GnuCash 4.8: Only [[Build_Tools#CMake|CMake]] with either [[Build_Tools#Make|Make]] or [[Build_Tools#Ninja|Ninja]] is supported |
| + | :;Upto GnuCash 4.7: The GnuCash Help and Tutorial and Concept Guide are configured with [[Build_Tools#Autotools|Autotools]] and built with [[Build_Tools#Make|Make]]. |
| + | ::[[Build_Tools#CMake|CMake]] was introduced in 3.7. |
| | | |
− | == Distro-specific Information == | + | == Compiler == |
− | See the [https://github.com/Gnucash/gnucash/blob/trunk/README.dependencies README.dependencies] file for library dependency notes.
| + | '''GnuCash ≥ 4.0''' requires ISO-standard '''C++17''' compatibility. |
− | Also check out [[Dependencies|the dependencies page]].
| |
| | | |
− | === Slackware ===
| + | '''GnuCash 3.x''' required a C++ compiler that supports ''C11'' and ''C++11''. '''Gcc version ≥ 4.8''' and '''Clang version ≥ 3.3''' are known to work. |
| | | |
− | Slackware installation is covered on [[Slackware|this page]].
| + | == Source Platform == |
| + | === Building on Linux Distributions === |
| + | Detailed instructions for building GnuCash on Linux distributions can be found on [[Building_On_Linux | Building On Linux]]. |
| | | |
− | === Debian === | + | === Building on macOS === |
| + | macOS instructions can be found on [[MacOS/Quartz]] (This is the procedure used for building the binary packages) |
| + | or [[MacOS Installation| GnuCash installation from source on macOS]]. |
| | | |
− | If you are lucky, running
| + | === Building on Microsoft Windows === |
− | aptitude build-dep gnucash
| + | Compiling GnuCash on Windows is possible, but much more difficult than on Linux. |
− | will install everything you need to build gnucash.
| + | For details, see [[Building on Windows|building GnuCash on Microsoft Windows]]. |
− | | |
− | On Debian, the packages you'll probably need are (among many others):
| |
− | | |
− | guile-1.6-dev
| |
− | swig
| |
− | libgnome2-dev
| |
− | libgnomeui-dev
| |
− | goffice-0-dev
| |
− | libgsf-1-dev
| |
− | libgtkhtml3.2-dev (3.6, 3.8, or 3.14 will also do)
| |
− | libofx-dev (to enable ofx support)
| |
− | libaqbanking16-dev (to enable aqbanking support. Don't use the newer libaqbanking20-dev - see [[AqBanking#Compatibility]])
| |
− | postgresql-dev (to enable sql support)
| |
− | | |
− | If you are building from git, you will also need the following installed before running autogen.sh:
| |
− | | |
− | automake
| |
− | intltool
| |
− | libtool
| |
− | guile-1.6-dev
| |
− | | |
− | For the 2.0-branch of GnuCash you need additionally:
| |
− | libgwrapguile-dev OR
| |
− | guile-g-wrap
| |
− | | |
− | If you see the error "<unnamed port>: no code for module (g-wrap gw standard)" at runtime, see
| |
− | [[FAQ#Q: Running 2.0.x on Debian/Ubuntu crashes with "no code for module (g-wrap gw standard)". What does this mean?|this particular FAQ]].
| |
− | | |
− | === Ubuntu ===
| |
− | | |
− | Ubuntu releases are supported for various lengths of time; Wikipedia has a [http://en.wikipedia.org/wiki/List_of_Ubuntu_releases#Table_of_versions handy chart showing which versions are still supported].
| |
− | | |
− | '''Note:''' Dear Ubunteros, please do not copy and paste whole paragraphs. Instead adjust single sections in the form
| |
− | :Version x and newer:
| |
− | ::do this
| |
− | :Version x-1 and before:
| |
− | ::do that.
| |
− | :Can someone of you clean up this chapter and later remove this note?
| |
− | | |
− | ==== Compiling Newer Ubuntu Packages on an Older Release ("self-backporting") ====
| |
− | | |
− | If you are on an older version of Ubuntu (or Debian for that matter) such as Precise 12.04 LTS, but a newer package isn't available for your Ubuntu (or Debian) release, you may be able to compile a newer version yourself (essentially backporting it yourself).
| |
− | | |
− | If the newer package is available in Raring 13.04, add a line in your /etc/apt/sources.list (or for newer versions of Ubuntu, include a new file in the /etc/apt/sources.list.d/ directory) with the correct format. For Raring, the line would be:
| |
− | | |
− | deb-src <nowiki>http://archive.ubuntu.com/ubuntu</nowiki> raring main restricted universe
| |
− | | |
− | You want the version (Raring in above example) to be newer than the system release you have installed. Then you can use the following lines to compile and install whatever software version is in the newer Ubuntu release, "backporting" the newer software to your older release of Ubuntu.
| |
− | | |
− | cd ~/src/
| |
− | sudo aptitude update
| |
− | sudo apt-get install build-essential fakeroot
| |
− | sudo apt-get build-dep gnucash gnucash-common
| |
− | apt-get --compile source gnucash gnucash-common
| |
− | sudo dpkg -i *.deb
| |
− | | |
− | Easy as 1-2-3!*
| |
− | | |
− | * If <code>apt-get build-dep</code> fails on the gnucash packages with a message like "E: Build-Depends dependency for gnucash cannot be satisfied because the package XXXXX cannot be found" then that means you need additional updated libraries on your system in order to backport the software. Unless you know there are only one or two new libraries needed, it's most likely MUCH easier just to build GnuCash from source. (See directions below.)
| |
− | | |
− | ==== Ubuntu 12.04 LTS (Precise Pangolin) ====
| |
− | | |
− | To build using the git repository first install git
| |
− | sudo apt-get install git
| |
− | then in an appropriate directory run
| |
− | git clone git://github.com/Gnucash/gnucash.git gnucash
| |
− | which will make a git repository in a directory gnucash.
| |
− | | |
− | Next install the build dependencies
| |
− | sudo apt-get build-dep gnucash
| |
− | and a few required or useful tools
| |
− | sudo apt-get install libtool swig git libgnomeui-dev xsltproc libxslt-dev doxygen
| |
− | | |
− | if want to use the alternative database backends then:
| |
− | sudo apt-get install libdbd-{sqlite3,pgsql,mysql}
| |
− | | |
− | In a terminal cd to the gnucash directory and checkout the version that you want, so to get the latest 2.4 branch version:
| |
− | git checkout 2.4
| |
− | or to build a released version, for example:
| |
− | git checkout 2.4.9
| |
− | | |
− | Then to build it
| |
− | ./autogen.sh
| |
− | ./configure --prefix=/path/to/install/to/gnucash --enable-compile-warnings --with-html-engine=webkit --disable-error-on-warning
| |
− | make
| |
− | sudo make install
| |
− | | |
− | The prefix might be, for example,
| |
− | --prefix=/usr/bin/gnucash2.4
| |
− | Then to run it, assuming there were no errors
| |
− | /usr/bin/gnucash2.4/bin/gnucash
| |
− | | |
− | ==== Ubuntu 11.10 (Oneiric Ocelot) ====
| |
− | | |
− | To build using the git repository first install git-core
| |
− | sudo apt-get install git-core
| |
− | then in an appropriate directory run
| |
− | git clone git://github.com/Gnucash/gnucash.git gnucash
| |
− | which will make a git repository in a directory gnucash.
| |
− | | |
− | The main branch in git is conventionally named master, whereas in this repository it is named trunk (due to the fact that it is derived from a subversion repository I believe). This is not a problem but if you would rather have it named master then cd into the gnucash directory and
| |
− | | |
− | git branch -t master refs/remotes/origin/trunk
| |
− | git checkout master
| |
− | | |
− | Next install the build dependencies
| |
− | sudo apt-get build-dep gnucash
| |
− | and a few required or useful tools
| |
− | sudo apt-get install libtool swig git
| |
− | | |
− | if want to use the alternative database backends then:
| |
− | sudo apt-get install libdbd-{sqlite3,pgsql,mysql}
| |
− | | |
− | In a terminal cd to the gnucash directory and checkout the version that you want, so to get the latest 2.4 branch version:
| |
− | git checkout 2.4
| |
− | or to build a released version, for example:
| |
− | git checkout 2.4.7
| |
− | | |
− | Then to build it
| |
− | ./autogen.sh
| |
− | ./configure --prefix=/path/to/install/to/gnucash --enable-compile-warnings --with-html-engine=webkit
| |
− | make
| |
− | sudo make install
| |
− | | |
− | The prefix might be, for example,
| |
− | --prefix=/usr/bin/gnucash2.4
| |
− | Then to run it, assuming there were no errors
| |
− | /usr/bin/gnucash2.4/bin/gnucash
| |
− | | |
− | ==== Ubuntu 10.10 (Maverick Meerkat) ====
| |
− | | |
− | Follow the steps described for [[#Ubuntu 10.04 LTS (Lucid Lynx)]].
| |
− | | |
− | ==== Ubuntu 10.04 LTS (Lucid Lynx) ====
| |
− | | |
− | First, we need install all dependencies of building GnuCash.
| |
− | | |
− | sudo aptitude build-dep gnucash
| |
− | sudo aptitude install texinfo git intltool libdbi0-dev libdbd-{sqlite3,pgsql,mysql} guile-1.8 guile-1.8-dev doxygen libwebkit-dev
| |
− | | |
− | Since Ubuntu/Debian doesn't have guile-1.8-slib, which is actually just a softlink to slib, we create the softlink and generate the catalog manually.
| |
− | | |
− | cd /usr/share/guile/1.8
| |
− | sudo ln -s ../../slib slib
| |
− | sudo guile -c "(use-modules (ice-9 slib)) (require 'new-catalog)"
| |
− | | |
− | And then we create the directories for source code and installation, and check out source code from git master
| |
− | | |
− | mkdir -p ~/unstable ~/development
| |
− | rm -rf ~/unstable/gnucash ~/development/gnucash
| |
− | cd ~/development
| |
− | git clone https://github.com/Gnucash/gnucash/ gnucash
| |
− | cd gnucash
| |
− | | |
− | Then, we build it by following commands:
| |
− | | |
− | ./autogen.sh
| |
− | ./configure --prefix=$HOME/unstable/gnucash --enable-debug --enable-doxygen --enable-error-on-warning --enable-compile-warnings
| |
− | make all install
| |
− | | |
− | If there are no errors, we can run it:
| |
− | | |
− | ~/unstable/gnucash/bin/gnucash
| |
− | | |
− | === Gentoo ===
| |
− | | |
− | Gentoo instructions can be found on [[Gentoo|Gnucash-svn installation on Gentoo]].
| |
− | | |
− | === Mac OS X ===
| |
− | | |
− | Mac OS X instructions can be found on [[MacOSX/Quartz]] (This is the procedure used for building the binary packages) or [[MacOSXInstallation| gnucash installation from source on Mac OS X]].
| |
− | | |
− | === Fedora ===
| |
− | ==== Fedora Core 5 ====
| |
− | At least the following packages are required to build GnuCash from source on FC5:
| |
− | libtool-ltdl-devel
| |
− | guile-devel
| |
− | g-wrap-devel
| |
− | libgnomeprint22-devel
| |
− | libgnomeprintui22-devel
| |
− | gtkhtml3-devel
| |
− | | |
− | Suggested way to satify all requirements:
| |
− | # yum install libtool-ltdl-devel guile-devel g-wrap-devel libgnomeprint22-devel \
| |
− | libgnomeprintui22-devel gtkhtml3-devel
| |
− | | |
− | Please note that while the configure script only checks for GtkHTML up to 3.8, recent versions of GtkHTML ship with "libgtkhtml-3.8.pc" so yes, you CAN use gtkhtml3-3.10 on FC5.
| |
− | | |
− | ==== Fedora 13 ====
| |
− | On Fedora 13, the build instructions are very similar to the ones for Ubuntu 10.04 (above). First, we need install all dependencies of building GnuCash.
| |
− | | |
− | sudo yum-builddep gnucash -y
| |
− | sudo yum install texinfo git intltool libdbi-devel libdbi guile guile-devel doxygen gtkhtml3-devel -y
| |
− | | |
− | And then we create the directories for source code, and check out source code from git master
| |
− | | |
− | mkdir -p ~/development
| |
− | cd ~/development
| |
− | git clone https://github.com/Gnucash/gnucash/ gnucash
| |
− | cd gnucash
| |
− | | |
− | Then, we build it by following commands:
| |
− | | |
− | ./autogen.sh
| |
− | ./configure --prefix=$HOME/unstable/gnucash --enable-debug --enable-doxygen --enable-error-on-warning --enable-compile-warnings
| |
− | make all install
| |
− | | |
− | If there are no errors, we can run it:
| |
− | | |
− | ~/unstable/gnucash/bin/gnucash
| |
− | | |
− | === slib Issues ===
| |
− | | |
− | Ubuntu Hardy and Intrepid, and if the mailing lists are to be believed, many other distributions as well, produce the following error when running the ''configure'' script:
| |
− | | |
− | :configure:27495: checking for SLIB support
| |
− | :configure:27509: error:
| |
− | | |
− | ::Cannot find SLIB. Are you sure you have it installed?
| |
− | ::See http://bugzilla.gnome.org/show_bug.cgi?id=347922
| |
− | ::...
| |
− | | |
− | This is '''not''' a problem with gnucash! The issue seems to be that the ''slib'' installation does not properly configure guile. Two items need to be fixed: a guile initialization file has an incorrect path, and the initialization of the slib catalog is not done. On Ubuntu, the initialization file is /usr/share/guile/1.8/ice-9/slib.scm. There is no guarantee that this will be the same on another distribution. This file references the guile.init file supplied by ''slib'' to hook slib into guile. Look in the file to find:
| |
− | | |
− | :(load-from-path "slib/guile.init")
| |
− | | |
− | This line must be changed to reflect the correct location of the guile.init file:
| |
− | | |
− | :(load-from-path "/usr/share/slib/init/guile.init")
| |
− | | |
− | This path is correct for Ubuntu. It will probably not be the same on other distributions. Once this is fixed, slib must be invoked from guile to initialize the catalog:
| |
− | | |
− | :sudo guile -c "(use-modules (ice-9 slib)) (require 'printf)"
| |
− | | |
− | Then, if there were no errors, the returned status will be "0". We can check this by echoing the status variable from the environment:
| |
− | | |
− | :echo $?
| |
− | | |
− | Which should return 0. If it does, then the configure script should now get past the section which checks for ''slib''. Note that since standard users probably do not have write permissions to the slib and guile directories, the catalog initialization will fail unless you sudo! I recently discovered (7/1/09) that upgrading Ubuntu from Hardy to Intrepid silently breaks slib by undoing this change, forcing you to repeat the fix.
| |
− | | |
− | Finally, there are several additional suggestions that can be gleaned from others who have had this problem. I've listed these below in case they are needed on some distributions. As far as I can tell, on Ubuntu at least, all of these additional actions are superfluous.
| |
− | | |
− | :'''Environment Strings:'''
| |
− | | |
− | ::export SCM_INIT_PATH=/usr/share/slib/init/guile.init
| |
− | ::export SCHEME_LIBRARY_PATH=/usr/share/slib
| |
− | ::export GUILE_LOAD_PATH=/usr/share/guile/site /usr/share/guile/1.8 /usr/share/guile
| |
− | | |
− | :'''Symbolic Links:'''
| |
− | | |
− | ::ln -s /usr/share/guile/1.8/ /usr/share/guile/site
| |
− | ::ln -s /usr/share/slib/ /usr/share/guile/1.8/slib
| |
− | | |
− | Obviously, the paths here refer to the Ubuntu install. Yours may differ.
| |
− | | |
− | == Tutorial on Plugins ==
| |
− | This section describes how to build a plugin from scratch.
| |
− | | |
− | A plugin is a runtime loadable module which provides optional functions for GnuCash. There are a couple of plugins plus a skeleton example in src/plugins. To add your own plugin:
| |
− | | |
− | * Copy the example to a new plugin subdirectory:
| |
− | cd src/plugins
| |
− | cp -R example your-plugin-name
| |
− | * edit Makefile.am to add your-plugin-name to the subdirs list
| |
− | * edit configure.ac, inserting the following line near the end just before AC_OUTPUT:
| |
− | AC_CONFIG_FILES(src/plugins/your-plugin-name/Makefile src/plugins/your-plugin-name/ui/Makefile src/plugins/your-plugin-name/glade/Makefile)
| |
− | * edit the source files in your-plugin-name to actually do what you want, rename them to make sense, and adjust the filenames in the three Makefile.am to match.
| |
− | * Rebuild GnuCash:
| |
− | cd ../..
| |
− | ./autogen.sh
| |
− | ./configure --whatever options you usually use
| |
− | make
| |
− | make install
| |
− | * to force GnuCash to load the plugin upon start
| |
− | echo '(gnc:module-load "gnucash/plugins/your-plugin-name" 0)' >> ~/.gnucash/config.user
| |
− | | |
− | The result will be your new plugin being available in the Tools menu, or wherever you added it in the UI file.
| |
− | | |
− | ==Microsoft Windows==
| |
− | | |
− | Compiling GnuCash in Windows is possible, but much more difficult than in linux. For details, see [[Windows|GnuCash on Microsoft Windows]]. | |
This page doesn't provide specific instructions for optional third-party modules—like AqBanking or Perl Finance::Quote—but does list the dependencies required and links to the configuration switches used with CMake to include them during compilation.
GnuCash can be built from sources on Linux distributions, Microsoft Windows and macOS. There are three major steps in building the GnuCash program. These are listed along with the tools which may used for each step:
Building GnuCash utilizes a set of tools which is available for all three of the major operating systems.
These steps are described in detail for each operating system in the linked pages below, along with the installation of the build tools.
A general description of the tools used to configure and build GnuCash is given in Build tools.
The GnuCash build system has gone through some changes in the course of the 2.6 and 3 series. CMake has replaced the Autotools autogen and configure scripts for configuring the build. This has provided the ability to configure for alternative build systems and popular IDEs. Under the hood compilation and installation can now either be controlled using GNU Make or alternatively using the faster Ninja. Depending on the version of GnuCash you want to build you have the following options:
Detailed instructions for building GnuCash on Linux distributions can be found on Building On Linux.