Compiling GDL (gnudatalanguage)

2 minute read

GDL (GNU Data Language) is a free open-source program that runs most IDL code. Specifically, GDL claims to be completely IDL 7.x compatible, and has many features from IDL 8. GDL is easily installed by:

or you can compile GDL from source.

Build

  1. Prereqs
    apt install libbz2-dev libplplot-dev libfontconfig1-dev libncurses5-dev libreadline-dev libgsl0-dev libwxgtk3.0-dev libmagick++-dev libnetcdf-dev libhdf4-alt-dev libgraphicsmagick++1-dev libhdf5-serial-dev libfftw3-dev python-dev libeigen3-dev pslib-dev libqhull-dev
    
  2. Download GDL source and extract

    tar xf gdl-*.gz
    
    cd gdl-*
    
  3. Compile GDL Gnu Data Language program
    mkdir release
    
    cd release
    
    cmake -DEIGEN3=OFF -DHDF=OFF -DPSLIB=OFF -DENABLE_DYNDRIVERS=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=~/.local .. 
       
    cmake --build . -j -- -l 4
    

    If you have Anaconda Python installed, add PATH=/bin:/usr/bin to the front of the cmake .. command.

  4. Check the install:
    cmake --build . -- check
    

    You will see several plots appearing and disappearing automatically during this test, which takes a few minutes. With GDL 0.9.8 on Ubuntu 18.04:

    The following tests FAILED:
     93 - test_fft_leak.pro (Failed)
       96 - test_file_delete.pro (Failed)
     	 103 - test_fix.pro (Failed)
      106 - test_formats.pro (Failed)
      114 - test_hdf5.pro (Failed)
      123 - test_la_least_squares.pro (Failed)
      129 - test_make_dll.pro (Failed)
      140 - test_n_tags.pro (Failed)
      142 - test_obj_isa.pro (Failed)
      144 - test_parse_url.pro (Failed)
      166 - test_resolve_routine.pro (Failed)
      168 - test_rounding.pro (Failed)
      190 - test_total.pro (Failed)
    
  5. install (do not use sudo)
    cmake --build . --target install
    

    Given the cmake command of step #3, this installs under ~/.local

Notes

  • Do not build on an ExFAT drive, as the build will fail since symbolic links are not allowed on ExFAT
  • If cmake reports libeigen being too old, read below to the optional LibEigen3 section, or use -DEIGEN3=OFF
  • If you wish to use your Linux repo’s older version of IDL, just use /usr/local/bin/gdl or similar, or rename ~/.local/bin/gdl to ~/.local/bin/gdl0.98 or similar.

Usage

  • Errors on runtime search path conflicts: temporarily comment out those paths in ~/.bashrc (typically from Anaconda Python, libreadline, libhistory, libz, libjpeg.so)
  • cmake error about libeigen being too old: get a newer libeigen by downloading libeigen and extract to ~/libeigen. Then, recompile GDL with
    cmake -DEIGEN3DIR=$HOME/libeigen  (rest of your options)
     
    cmake --build . -j -- -l 4
      
    cmake --build . -- check
      
    cmake --build . --target install
    

OR you can compile as in the section below

Basic GDL Compilation

If you’re having problems with LZMA errors, you can try disabling HDF5 by adding option cmake -DHDF5=OFF ..

LibEigen (optional)

When compiling GDL, you may need a libeigen3 newer than your operating system supports – feel free to download a newer version of libeigen3 and compile:

apt install gfortran libsuperlu3-dev libmetis-dev libscotch-dev libmpfr-dev libadolc-dev qt4-qmake

cd /tmp

tar xf 3.*.tar.bz2

cd eigen* && mkdir release && cd release

cmake ..

make install

GDL missing libraries fix

ln -s /usr/lib/x86_64-linux-gnu/libgsl.so.19 /usr/local/lib/libgsl.so.0

ln -s /usr/lib/libGraphicsMagick++-Q16.so.12 /usr/local/lib/libGraphicsMagick++.so.3

Leave a comment