[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

20050115: McIDAS - compile error undefined symbol __eprintf



>From: "Steven Lazarus" <address@hidden>
>Organization: Florida Institute of Technology
>Keywords: 200501152100.j0FL0EBR001861 McIDAS build

Dr Lazarus,

>Institution: Florida Institute of Technology
>Package Version: McIDAS-X 2002 (May 2002 upgrade)
>Operating System: Sun Solaris
>Hardware Information: sparcv9
>Inquiry: I'm getting an undefined symbol (_eprintf) when trying to compile
>an external module (that uses mcidas routines. I did find the follwing thread:
>
>http://my.unidata.ucar.edu/content/support/help/MailArchives/mcidas/msg02761.html
>
>However there's no posted workaround. 

A couple of comments regarding what you are seeing:

- the __eprintf entry point is contained in a GNU library.  Getting this
  missing entry point message typically means the compilation enviornment
  changed between your McIDAS build and the build for your external module.

  Given that you are getting the missing entry point on a Sun Solaris system
  when trying to link your external program using the 'f77' (i.e., Sun)
  compiler, I am assuming that you built your McIDAS distribution using
  the GNU gcc and g77 (or gcc and mcfc) compilers.  You can determine
  if this is true by looking through your McIDAS build log file
  (~mcidas/mcidas2002/src/makelog) and seeing which compiler was used
  to build the McIDAS library and applications.  Again, I am betting
  that you used the GNU compilers

  If you did use the GNU compilers to build McIDAS, you should use the
  same compilers to build and link your compilers.  If you no longer have
  the same compilers that were used during your McIDAS build, I suggest
  clobbering object modules, libraries, etc. and rebuilding the distribution
  from scratch:

  cd ~mcidas/mcidas2002/src
  make clobber
  make

  Assuming that you had not edited ~mcidas/mcidas2002/src/makefile
  to set the value of VENDOR= before your original build, the distribution
  will now be built using the Sun compilers.  If you did edit 'makefile'
  and you want to now use the Sun compilers, you should reedit 'makefile'
  and change VENDOR=.

- McIDAS-X v2002 is now 2.5 years out of date.  It might be a very good
  idea to grab the latest Unidata McIDAS distribution, v2004a, and
  do a build using it.

>I added the -lgcc link and that helped clear up other undefined symbols,
>however there remains a single error, i.e., _eprinf error message.

If the original McIDAS build enviornment is different from what you are
using now (I see you are using 'f77' below), you will end up chasing
missing entry points until you get a standardized build environment.

>Here's the command line that I issued to link (the area_dump_modis_msk.o
>file was created in a previous step using mccomp):

I am assuming that 'f77' is for the Sun Fortran compiler.

>f77 -o area_dump_modis_msk.k /export/home/mcidas/lib/main.o area_dump_modis_ms
> k.o -L/export/home/mcidas/lib -R/usr/dt/lib -L/usr/dt/lib -R/usr/openwin/lib 
> -L/usr/openwin/lib -R/opt/SUNWspro/lib -L/opt/SUNWspro/lib -L/usr/local/lib/g
> cc-lib/sparc-sun-solaris2.8/2.95.3 -lmcidas -lgen -lsocket -lnsl -lm -lg2c
>
>Thanks for your help!

No worries.  Please let me know if the above makes sense and helps get
you going.

Cheers,

Tom Yoksas
--
NOTE: All email exchanges with Unidata User Support are recorded in the
Unidata inquiry tracking system and then made publicly available
through the web.  If you do not want to have your interactions made
available in this way, you must let us know in each email you send to us.