The mailing list for developer discussion is
http://groups.google.com/group/julia-dev/. All are welcome, but the volume
of messages is higher, and the discussions tend to be more esoteric. New
developers may find the notes in CONTRIBUTING helpful to start contributing to the Julia codebase.

If you need to build Julia in an environment that does not allow access to the outside world, use make -C deps getall to download all the necessary files. Then, copy the julia directory over to the target environment and build with make.

Note: the build process will not work if any of the build directory's parent directories have spaces in their names (this is due to a limitation in GNU make).

Once it is built, you can either run the julia executable using its full path in the directory created above, or add that directory to your executable path so that you can run the Julia program from anywhere (in the current shell session):

In bash:

export PATH="$(pwd):$PATH"

In csh / tcsh:

set path= ( $path $cwd )

Now you should be able to run Julia like this:

julia

If everything works correctly, you will see a Julia banner and an interactive prompt into which you can enter expressions for evaluation.
You can read about getting started in the manual.

Ubuntu

The julia-deps PPA contains updated packages for julia dependencies if you want to use system libraries instead of having them downloaded and built during the build process. See System Provided Libraries.

For a fast and easy current installation, the before_install section of travis.yml is a great resource.

CentOS 5

On CentOS 5 systems, the default compiler (gcc 4.1) is too old to build Julia.

If the gcc44 and gfortran44 packages are installed, you can specify their use by adding the following to Make.user

FC = gfortran44
CC = gcc44
CXX = g++44

Otherwise, install or contact your systems adminstrator to install a more recent version of gcc.

Linux Build Troubleshooting

Problem

Possible Solution

OpenBLAS build failure

Set one of the following build options in Make.user and build again:

OPENBLAS_TARGET_ARCH=BARCELONA (AMD CPUs)

OPENBLAS_TARGET_ARCH=NEHALEM (Intel CPUs)

USE_SYSTEM_BLAS=1 uses the system provided libblas

Set LIBBLAS=-lopenblas and LIBBLASNAME=libopenblas to force the use of the system provided OpenBLAS when multiple BLAS versions are installed

readline build error

Set USE_SYSTEM_READLINE=1 in Make.user

ncurses build error

Install the libncurses5 development package

Debian/Ubuntu: apt-get install libncurses5-dev

RPM-based systems: yum install libncurses5-devel

Illegal Instruction error

Check if your CPU supports AVX while your OS does not (e.g. through virtualization, as described in this issue), and try installing LLVM 3.3 instead of LLVM 3.2.

OS X

It is essential to use a 64-bit gfortran to compile Julia dependencies. The gfortran-4.7 (and newer) compilers in brew and macports work for building Julia. If you do not use brew or macports, you can download and install gfortran and gcc from hpc.sf.net. The HPC gfortran requires HPC gcc to be installed to function properly.

Clang is now used by default to build Julia on OS X (10.7 and above). Make sure to update to at least Xcode 4.3.3, and update to the latest command line tools from the Xcode preferences. This will ensure that clang v3.1 is installed, which is the minimum version of clang required to build Julia. On OS X 10.6, the Julia build will automatically use gcc.

If you have set LD_LIBRARY_PATH or DYLD_LIBRARY_PATH in your .bashrc or equivalent, Julia may be unable to find various libraries that come bundled with it. These environment variables need to be unset for Julia to work.

If you see build failures in OpenBLAS or if you prefer to experiment, you can use the Apple provided BLAS in vecLib by building with USE_SYSTEM_BLAS=1. Julia does not use the Apple provided LAPACK, as it is too old.

FreeBSD

On FreeBSD Release 9.0, install the gcc46, git, and gmake packages/ports, and compile Julia with the command:

SuiteSparse

SuiteSparse is a special case, since it is typically only installed as a static library, while USE_SYSTEM_SUITESPARSE=1 requires that it is a shared library. Running the script contrib/repackage_system_suitesparse4.make will copy your static system SuiteSparse installation into the shared library format required by Julia. make USE_SYSTEM_SUITESPARSE=1 will then use the SuiteSparse that has been copied into Julia's directory, but will not build a new SuiteSparse library from scratch.

Intel Math Kernel Libraries

MKLLIB points to the directory containing libmkl_rt.so. MKL version 10.3.6 or greater is required.
To rebuild a pre-built Julia source install with MKL support, delete the OpenBLAS, ARPACK, and SuiteSparse dependencies from deps, and run make cleanall testall.

You can either run the julia executable using its full path in the directory created above, or add that directory to your executable path so that you can run the Julia program from anywhere (in the current shell session):

export PATH="$(pwd)/julia:$PATH"

Now you should be able to run Julia like this:

julia

On Windows, double-click julia.bat.

If everything works correctly, you will see a Julia banner and an interactive prompt into which you can enter expressions for evaluation.
You can read about getting started in the manual.

The following distributions include julia, but the versions may be out of date due to rapid development: