Octave for Microsoft Windows

Revision as of 22:29, 4 January 2021 by Nrjank (talk | contribs) (→‎Packages: update info for new v6.1 package behavior on windows)
This article is about using pre-built installers of Octave for Windows; for instructions about building it, see Windows Installer.
Info icon.svg
Windows installers are available for the latest version of Octave (9.2.0, released on June 1, 2024) from https://ftp.gnu.org/gnu/octave/windows/.

Users are encouraged to use the latest version unless a specific feature or requirement warrants using an older version of the software. Version specific instructions and installation notes are provided below.

Note: As of version 4.4.1, Octave no longer supports Windows XP. There may be some workarounds to get Octave installed and running in command line mode (see Bug #54662), but maintainers cannot provide support and troubleshooting for this beyond what has already been documented.

Installers for Microsoft Windows

The easiest way to install GNU Octave on Microsoft Windows is by using MXE builds. For the current release, both 32-bit and 64-bit installers and zip archived packages (.zip and .7z formats) can be found at https://www.gnu.org/software/octave/download.html under the Windows tab.

  • For executable (.exe) installers: the user can simply run the downloaded file and follow the on-screen installation prompts. It is recommended that the installation path does not include spaces or non-ASCII characters. Shortcuts to the program will be created automatically.
  • For the 7z/zip archives:
  1. Extract the file content to a directory on the harddrive (such as C:\Octave). Spaces or non-ASCII characters in the path are discouraged and may cause program errors.
  2. Manually create a shortcut to the octave.vbs file in the main installation directory. (Right-click on the file, select 'Create Shortcut', and move the new shortcut to your desired location.)
  3. If a command-line only instance of Octave is desired, the user can create another shortcut as stated above, right-click on the shortcut, select Properties, and add --no-gui to the end of the Target field.
  4. IMPORTANT: Run the post-install.bat file before running Octave the first time to reduce plot delays due to the Windows font cache and make the pre-installed packages visible to the system.
  • note: users who have problems running .vbs files due to local security policy or software can instead make a shortcut to the octave.bat file located in \mingw32\bin or \mingw64\bin, depending on the version of Octave installed.

Octave Packages

Like many software programs, Octave uses packages to optionally extend and modify its capability without changing core Octave behavior. These packages can be installed and loaded using the built in package management program 'pkg'. (Note that Octave does not automatically load installed packages, they must be manually loaded from within Octave by the user.)

Octave maintains a system-wide (or global) package list, and a user-specific (or local) package list. By default in Windows 10, local packages are located at C:\Users\%USERNAME%\octave\. (The \octave folder will be created during the first package install if it is not already present.) The global packages are stored in %OCTAVE_HOME%\mingw64\share\octave\packages\. Specific locations on your system can be found by typing the following commands at the Octave command line:

   >> pkg local_list
   >> pkg global_list

Octave versions for Windows prior to 6.1.0 defaulted to always using and making changes to global packages. The default is now to follow the same behavior on all platforms, and for all package updates and installations to apply to the user's local package list in the user's home folder unless otherwise specified.

Pre-installed Packages

A selection of pre-built, Octave Forge packages is included with all versions of the official Windows release. If you followed the installation directions above, you can display a list of packages by typing the command below at the Octave command prompt:

  >> pkg list

The output for preinstalled global packages included with version 6.1.0 installed into C:\Octave is:

   Package Name         | Version | Installation directory
   ---------------------+---------+-----------------------
                 audio  |   2.0.2 | C:\Octave\octave-6.1.0-w64\mingw64\share\octave\packages\audio-2.0.2
        communications  |   1.2.2 | C:\Octave\octave-6.1.0-w64\mingw64\share\octave\packages\communications-1.2.2
               control  |   3.2.0 | C:\Octave\octave-6.1.0-w64\mingw64\share\octave\packages\control-3.2.0
        data-smoothing  |   1.3.0 | C:\Octave\octave-6.1.0-w64\mingw64\share\octave\packages\data-smoothing-1.3.0
              database  |   2.4.4 | C:\Octave\octave-6.1.0-w64\mingw64\share\octave\packages\database-2.4.4
             dataframe  |   1.2.0 | C:\Octave\octave-6.1.0-w64\mingw64\share\octave\packages\dataframe-1.2.0
                 dicom  |   0.4.0 | C:\Octave\octave-6.1.0-w64\mingw64\share\octave\packages\dicom-0.4.0
             financial  |   0.5.3 | C:\Octave\octave-6.1.0-w64\mingw64\share\octave\packages\financial-0.5.3
                  fits  |   1.0.7 | C:\Octave\octave-6.1.0-w64\mingw64\share\octave\packages\fits-1.0.7
   fuzzy-logic-toolkit  |   0.4.5 | C:\Octave\octave-6.1.0-w64\mingw64\share\octave\packages\fuzzy-logic-toolkit-0.4.5
                    ga  |  0.10.1 | C:\Octave\octave-6.1.0-w64\mingw64\share\octave\packages\ga-0.10.1
               general  |   2.1.1 | C:\Octave\octave-6.1.0-w64\mingw64\share\octave\packages\general-2.1.1
         generate_html  |   0.3.2 | C:\Octave\octave-6.1.0-w64\mingw64\share\octave\packages\generate_html-0.3.2
              geometry  |   4.0.0 | C:\Octave\octave-6.1.0-w64\mingw64\share\octave\packages\geometry-4.0.0
                   gsl  |   2.1.1 | C:\Octave\octave-6.1.0-w64\mingw64\share\octave\packages\gsl-2.1.1
                 image  |  2.12.0 | C:\Octave\octave-6.1.0-w64\mingw64\share\octave\packages\image-2.12.0
    instrument-control  |   0.6.0 | C:\Octave\octave-6.1.0-w64\mingw64\share\octave\packages\instrument-control-0.6.0
              interval  |   3.2.0 | C:\Octave\octave-6.1.0-w64\mingw64\share\octave\packages\interval-3.2.0
                    io  |   2.6.3 | C:\Octave\octave-6.1.0-w64\mingw64\share\octave\packages\io-2.6.3
        linear-algebra  |   2.2.3 | C:\Octave\octave-6.1.0-w64\mingw64\share\octave\packages\linear-algebra-2.2.3
                  lssa  |   0.1.4 | C:\Octave\octave-6.1.0-w64\mingw64\share\octave\packages\lssa-0.1.4
                 ltfat  |   2.3.1 | C:\Octave\octave-6.1.0-w64\mingw64\share\octave\packages\ltfat-2.3.1
               mapping  |   1.4.1 | C:\Octave\octave-6.1.0-w64\mingw64\share\octave\packages\mapping-1.4.1
               matgeom  |   1.2.2 | C:\Octave\octave-6.1.0-w64\mingw64\share\octave\packages\matgeom-1.2.2
         miscellaneous  |   1.3.0 | C:\Octave\octave-6.1.0-w64\mingw64\share\octave\packages\miscellaneous-1.3.0
                   nan  |   3.5.0 | C:\Octave\octave-6.1.0-w64\mingw64\share\octave\packages\nan-3.5.0
                netcdf  |  1.0.14 | C:\Octave\octave-6.1.0-w64\mingw64\share\octave\packages\netcdf-1.0.14
                 nurbs  |  1.3.13 | C:\Octave\octave-6.1.0-w64\mingw64\share\octave\packages\nurbs-1.3.13
                   ocs  |   0.1.5 | C:\Octave\octave-6.1.0-w64\mingw64\share\octave\packages\ocs-0.1.5
                 optim  |   1.6.0 | C:\Octave\octave-6.1.0-w64\mingw64\share\octave\packages\optim-1.6.0
           optiminterp  |   0.3.6 | C:\Octave\octave-6.1.0-w64\mingw64\share\octave\packages\optiminterp-0.3.6
            quaternion  |   2.4.0 | C:\Octave\octave-6.1.0-w64\mingw64\share\octave\packages\quaternion-2.4.0
              queueing  |   1.2.7 | C:\Octave\octave-6.1.0-w64\mingw64\share\octave\packages\queueing-1.2.7
                signal  |   1.4.1 | C:\Octave\octave-6.1.0-w64\mingw64\share\octave\packages\signal-1.4.1
               sockets  |   1.2.1 | C:\Octave\octave-6.1.0-w64\mingw64\share\octave\packages\sockets-1.2.1
             sparsersb  |   1.0.8 | C:\Octave\octave-6.1.0-w64\mingw64\share\octave\packages\sparsersb-1.0.8
               splines  |   1.3.3 | C:\Octave\octave-6.1.0-w64\mingw64\share\octave\packages\splines-1.3.3
            statistics  |   1.4.2 | C:\Octave\octave-6.1.0-w64\mingw64\share\octave\packages\statistics-1.4.2
                   stk  |   2.6.1 | C:\Octave\octave-6.1.0-w64\mingw64\share\octave\packages\stk-2.6.1
               strings  |   1.2.0 | C:\Octave\octave-6.1.0-w64\mingw64\share\octave\packages\strings-1.2.0
                struct  |  1.0.16 | C:\Octave\octave-6.1.0-w64\mingw64\share\octave\packages\struct-1.0.16
              symbolic  |   2.9.0 | C:\Octave\octave-6.1.0-w64\mingw64\share\octave\packages\symbolic-2.9.0
                tisean  |   0.2.3 | C:\Octave\octave-6.1.0-w64\mingw64\share\octave\packages\tisean-0.2.3
                   tsa  |   4.6.2 | C:\Octave\octave-6.1.0-w64\mingw64\share\octave\packages\tsa-4.6.2
                 video  |   2.0.0 | C:\Octave\octave-6.1.0-w64\mingw64\share\octave\packages\video-2.0.0
               windows  |   1.5.0 | C:\Octave\octave-6.1.0-w64\mingw64\share\octave\packages\windows-1.5.0
                zeromq  |   1.5.2 | C:\Octave\octave-6.1.0-w64\mingw64\share\octave\packages\zeromq-1.5.2

Note that the included packages shown above are stored in the default global package location.

If Octave was installed from a zip or 7z archive and you did not run the post-install.bat file, you may not see any packages listed. In that case you need to run:

  >> pkg rebuild

That will force octave to look for both local and global packages in the set locations to repopulate list of available packages. Note that 'local' packages take precedence if present in both locations.

Package Installation and Update

All packages can be updated to the latest version by running:

  >> pkg update

Other packages can be installed by running:

  >> pkg install -forge <package_name>

To install a new or updated package version manually, the package file can be downloaded from the Octave Forge website to the working directory and can be installed using:

  >> pkg install package_file_name.tar.gz

Note that all of the commands above will perform local package installs. E.g., if an update is found for a global package, the updated version will be installed to the local package location, leaving the old version intact in the global package location. This behavior can be changed by calling the install command with the -global option. For example:

To update all global packages to the latest version, use:

  >> pkg update -global

or for one specific package:

  >> pkg install -forge -global <package_name>

Detailed instructions for installing individual Octave Forge packages are given at https://octave.sourceforge.io/packages.php.

GNU Octave on cygwin

  • Maintainer: Marco Atzeri
  • Latest release: 2020-02-26
  • Latest packages:
octave-5.2.0-1
Its announce on cygwin mailing list [1]
Octave Forge packages have each a cygwin package.
Its announce on cygwin mailing list [2]
Full cygwin package list is available here [3]
At 2017-04-06, 64 forge packages were available.
  • To install :
run cygwin setup-x86.exe (for cygwin 32 bit) or setup-x86_64.exe (for cygwin 64 bit) and select them in the Math category.
All the package dependencies will be also installed.
Graphics is based on X and to plot you will need to start octave within xterm (or similar).
I recommend to install "xinit", "xlaunch" and "gnuplot". These packages will pull all the functional Xserver.
Otherwise the only graphics will be ASCII art ;-)

Notes for cygwin

  • When building from development source (default branch)
"make check"
passes almost all the tests. Only, and not substantial, failures are:
/pub/hg/octave/src/data.cc : 8 failures due to different handling of complex Inf on sort
/pub/hg/octave/src/syscalls.cc: 1 failure on fork. This disappears when octave is installed
/pub/hg/octave/scripts/sparse/svds.m: 1 failure due to test sensitivity on starting point. See 
https://mailman.cae.wisc.edu/pipermail/octave-maintainers/2011-September/024715.html
  • To build GNU Octave from cygwin source package, you need to install "cygport" and the relevant development libraries
tar -xf octave-5.1.0-1-src.tar.xz 
cygport octave.cygport almostall
see cygport documentation for further info.

General info

Be advised that GNU Octave is primarily developed on GNU/Linux and other POSIX conform systems. The ports of GNU Octave to Microsoft Windows use different approaches to get most of the original Octave and adapt it to Microsoft Windows idiosyncrasies (e.g. dynamic libraries, file paths, permissions, environment variables, GUI system, etc). Bear this in mind and don't panic if you get unexpected results. There are a lot of suggestions on the mailing lists for tuning your Octave installation. GNU Octave standalone ports for Windows are independently compiled using either the MinGW or Microsoft Visual Studio development environments (3.6 or before).

See also