This archive contains answers to questions sent to Unidata support through mid-2025. Note that the archive is no longer being updated. We provide the archive for reference; many of the answers presented here remain technically correct, even if somewhat outdated. For the most up-to-date information on the use of NSF Unidata software and data services, please consult the Software Documentation first.
>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.