inst/uno/INSTALL.md

Installation instructions

Packages and libraries

sudo apt install libblas-dev liblapack-dev
sudo apt install cmake cmake-curses-gui
INCS = $(INCSEQ)
LIBS = $(LIBSEQ)
LIBSEQNEEDED = libseqneeded
lstopo --of xml ~/.config/hwloc-topology.xml
echo 'export HWLOC_XMLFILE=$HOME/.config/hwloc-topology.xml' >> ~/.bashrc

Compilation

  1. Create a build directory in the main directory and move to it:
mkdir build && cd build
  1. Execute cmake:
cmake [options] ..

You can pass the following options: - build type: -DCMAKE_BUILD_TYPE=[Release|Debug] - build the Uno static library uno_static: -DBUILD_STATIC_LIBS=[ON|OFF] - build the Uno shared library uno_shared: -DBUILD_SHARED_LIBS=[ON|OFF] - path to the BQPD library: -DBQPD=path_to_libbqpd - path to the MA27 library: -DMA57=path_to_libma27 - path to the MA57 library: -DMA57=path_to_libma57 - path to ASL library: -DAMPLSOLVER=path_to_libamplsolver - path to HiGHS library: -DHIGHS=path_to_libhighs - path to HSL library: -DHSL=path_to_libhsl - path to METIS library (fakemetis is built with MA57): -DMETIS=path_to_libmetis - path to MUMPS library: -DMUMPS_LIBRARY=path_to_libdmumps - path to MUMPS common library: -DMUMPS_COMMON_LIBRARY=path_to_libmumps_common - path to MUMPS PORD library: -DMUMPS_PORD_LIBRARY=path_to_mumps_libpord - path to MUMPS MPISEQ library: -DMUMPS_MPISEQ_LIBRARY=path_to_mumps_mpiseq_lib - path to MUMPS include directory: -DMUMPS_INCLUDE_DIR=path_to_mumps_include_dir - path to SPRAL library: -DSPRAL=path_to_libspral

  1. (or) Use ccmake to provide the paths to the required and optional libraries:
ccmake ..
  1. Compile (in parallel: n being the number of threads, e.g. 6):
make -jn

To compile the code with different configurations, simply create a build directory for each configuration and perform instructions 1 to 4.

Install

  1. Install the built libraries and header (uno_static, uno_shared and Uno_C_API.h):
sudo make install

Unit tests

  1. Install the GoogleTest suite:
sudo apt install googletest
  1. Compile the test suite:
make run_unotest -jn
  1. Run the test suite:
./run_unotest

Precompiled libraries and executables

We provide precompiled Uno libraries and executables in the releases tab for Linux (x64 and aarch64), macOS (x64 and aarch64), and Windows (x64).

On some platforms, the dynamic linker needs to know where to look for libraries at runtime. You might need to set the following environment variables:

These variables should include the directory where you extracted the library files. For all platforms, the environment variable PATH is needed to locate the binary uno_ampl / uno_ampl.exe.

Example for Linux:

tar -xzf Uno.vX.Y.Z.linux.tar.gz
export LD_LIBRARY_PATH=/path/to/extracted/Uno/lib:$LD_LIBRARY_PATH
export PATH=/path/to/extracted/Uno/bin:$PATH

Note: The shared library libhsl.so / libhsl.dylib / libhsl.dll provided in the precompiled archive is a dummy version that does not include the official HSL linear solvers such as MA27 or MA57. However, it can be safely replaced with the official precompiled libHSL library without the need to recompile anything. The routine symbols are identical, allowing seamless hot-swapping of the library.



Try the Uno package in your browser

Any scripts or data that you put into this service are public.

Uno documentation built on Aug. 30, 2026, 5:07 p.m.