View on GitHub

IRAF Community Distribution

IRAF maintained by the community

Home | Installation | Packages | X11IRAF | PyRAF | Forum

Error in compilation process.

Valeev Azamat wrote on May 12, 2007

Hi all.

I try to compile simple
program from sppguide.ps
(author Rob Seaman).
task hello = t_hello_world
procedure t_hello_world()
begin
call printf("hello world\n)
end


In compilation process I see
message:

cl> xc hello.x
hello.x:
Fatal compiler error: Cannot execute xpp.e
Fatal compiler error: Cannot execute rpp.e
/usr/bin/ld: cannot find -lcompat
collect2: ld returned 1 exit status


I find files rpp.e and xpp.e in directory
/Local/Iraf/iraf/unix/bin.redhat/.
libcompat.a library are also there.

What may I do for fix this error?


Azamat

Mike Fitzpatrick wrote on May 12, 2007

Compilation requires that you define a $iraf and $IRAFARCH environment variable (in your .cshrc or .bashrc file) so the system will know where to find IRAF and your binary architecture. For you these values should probably iraf=/Local/Iraf/iraf/ (note the trailing '/' is required, the capitals are from your post) and IRAFARCH=redhat (for Fedora).

If it still doesn't work, check that the xpp.e and rpp.e will actually run, e.g.


% cd $iraf/unix/bin.redhat
% ./xpp.e


Note any system errors (e.g. missing libs, bus error etc), otherwise you wouldn't normally see anything output. Also note that a $host variable defined for other purposes may interfere with this working. Post back if you still have problems.

Cheers,
-Mike

Valeev Azamat wrote on May 12, 2007

When I make (cd $iraf/unix/bin.redhat && ./xpp.e) its work

Now I set-up all
variables in cl.csh script(which I run)
(I copy some files from/Local/Iraf/iraf/ to ~/IRAF/
to have access to them)
setenv iraf "/Local/Iraf/iraf/"
setenv IRAFARCH "redhat"
setenv host ~/IRAF/unix/
setenv hlib ~/IRAF/unix/hlib/
setenv hbin ~/IRAF/unix/bin.redhat/
setenv arch ".redhat"
setenv IRAFBIN ~/IRAF/bin.redhat/
set MACH = $IRAFARCH
set file = ~/IRAF/bin.redhat/cl.e


But the problem not solved.
May you say which variables used? And how
differ iraf$unix/bin.redhat and iraf$bin.redhat.
directory. I think that iraf could not find
files in iraf$unix/bin.redhat.
I think so while I have problem with
printing too [Fatal (sgidispatch): unable to access SGI translator `sgi2uapl.e' or so]. I find file sgi2uapl.e in iraf$unix/bin.redhat and try recompile it and sgidispatch.e.

I try link all files from iraf$unix/bin.redhat to iraf$bin.redhat/.
But problem is not solved.

Have you any recipes or question? I do not know
how make it, but I should try any tomorrow. Thanks for help.

Azamat

Mike Fitzpatrick wrote on May 12, 2007


Now I set-up all
variables in cl.csh script(which I run)
(I copy some files from/Local/Iraf/iraf/ to ~/IRAF/
to have access to them)
setenv iraf "/Local/Iraf/iraf/"
setenv IRAFARCH "redhat"
setenv host ~/IRAF/unix/
setenv hlib ~/IRAF/unix/hlib/
setenv hbin ~/IRAF/unix/bin.redhat/
setenv arch ".redhat"
setenv IRAFBIN ~/IRAF/bin.redhat/
set MACH = $IRAFARCH
set file = ~/IRAF/bin.redhat/cl.e


The use of "~/IRAF/unix/...." here should be "$iraf/unix/....". The $iraf/bin.redhat directory is for the core system tasks (PLOT, IMAGES, etc), while $iraf/unix/bin.redhat are the "HSI binaries" for things related to compilation, graphics translators, etc. When the system is installed, a link called 'xpp' is made to the 'xpp.e' binary in the iraf$unix/bin.redhat. Variables like $IRAFARCH and $arch are used to locate the binaries. Hope this helps.

-Mike[/quote]

Last post on May 12, 2007