Jump to Content
Version 1.6.2-51  

ISIS Frequently Asked Questions

 

Q1. How do I compile ISIS on a Mac?
Q2. ISIS fails with an error message that mentions ``undefined symbol: _gfortran_copy_string''. What's wrong?
Q3. Why did ISIS compilation fail with undefined reference errors?

Q1. How do I compile ISIS on a Mac?

A1. See the Mac-specific install page.

Q2. ISIS fails with an error message that mentions ``undefined symbol: _gfortran_copy_string''. What's wrong?

A2. The problem here is that two different, incompatible Fortran compilers have been used. The most common situation is that HEASOFT was compiled with gfortran-4.1 or an older version, while ISIS was compiled with a much newer version of gfortran. This is a problem because gfortran-4.1 is binary incompatible with newer versions of gfortran. To avoid such problems, it is important to use a matching set of compilers to build everything. The compilers supported by HEAsoft should also work for isis. Use the same compilers to build both HEAsoft and ISIS.

Q3. Why did ISIS compilation fail with undefined reference errors?

A3. For example:

gfortran -g -O2 -o /tmp/isis/src/objs/isis -Wl,-export-dynamic ...
/usr/local/lib/libpgplot.so: undefined reference to `e_wsfe'
/usr/local/lib/libpgplot.so: undefined reference to `s_rsfe'
/usr/local/lib/libpgplot.so: undefined reference to `s_cmp'
/usr/local/lib/libpgplot.so: undefined reference to `do_uio'
/usr/local/lib/libpgplot.so: undefined reference to `e_rsfe'
/usr/local/lib/libpgplot.so: undefined reference to `f_inqu'
/usr/local/lib/libpgplot.so: undefined reference to `e_rsue'
/usr/local/lib/libpgplot.so: undefined reference to `i_indx'
/usr/local/lib/libpgplot.so: undefined reference to `do_fio'
/usr/local/lib/libpgplot.so: undefined reference to `e_wsfi'
/usr/local/lib/libpgplot.so: undefined reference to `s_cat'
/usr/local/lib/libpgplot.so: undefined reference to `s_stop'
/usr/local/lib/libpgplot.so: undefined reference to `s_wsfi'
/usr/local/lib/libpgplot.so: undefined reference to `G77_getenv_0'
/usr/local/lib/libpgplot.so: undefined reference to `s_rsue'
/usr/local/lib/libpgplot.so: undefined reference to `f_clos'
/usr/local/lib/libpgplot.so: undefined reference to `f_open'
/usr/local/lib/libpgplot.so: undefined reference to `s_wsfe'
/usr/local/lib/libpgplot.so: undefined reference to `s_copy'
collect2: ld returned 1 exit status

The problem here is an incompatibility between two different Fortran compilers; libpgplot.so was compiled with g77 (note the undefined reference to G77_setenv_0) but you're using gfortran to build isis. To avoid such problems, it is important to use a matching set of compilers to build everything. The compilers supported by HEAsoft should also work for isis. Use the same compilers to build both HEAsoft and ISIS.


Accessibility  |  Made with JED  |  Best Viewed with a Browser  |  Valid HTML 4.01  |  Valid CSS ]
This page is maintained by John C. Houck.   Last updated: Apr 3, 2022