[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
20050115: McIDAS - compile error undefined symbol __eprintf
- Subject: 20050115: McIDAS - compile error undefined symbol __eprintf
- Date: Tue, 18 Jan 2005 16:23:26 -0700
>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.