Hi Daniel,
I have included your proposed change in the makesolarisegcs file.
adding: " -L/usr/include/sys -lsocket -lnsl "
Concerning Sincos, we have simply removed this function from TMath.
Thanks for reporting.
Rene Brun
Daniel Flath wrote:
>
> Hello,
>
> With a little effort I have been able to compile ROOT 2.22/10 on SunOS
> 5.6 using egcs 1.1.2. The following were problems that I encountered.
>
> PROBLEM 1:
>
> Receive following error message during build:
>
> g++ -O2 -o /u/ey/dflath/Gismo/sunroot/root//bin/root.exe MAIN_rmain.o
> -L/u/ey/dflath/Gismo/sunroot/root//lib -lNew -lBase -lCint -lClib -lCont
> -lFunc -lGraf -lGraf3d -lHist -lHtml -lMatrix -lMeta -lMinuit -lNet
> -lPhysics -lPostscript -lProof -lTree -lUnix -lZip -lGpad -lGui -lGX11
> -lX3d -lXpm -lRint -L/usr/openwin/lib -lX11 -lm -lgen -ldl -lsocket
> Undefined first referenced
> symbol in file
> sincos
> /u/ey/dflath/Gismo/sunroot/root//lib/libBase.so
>
> Solution:
>
> (a) Changed lines in MAIN_rmain.cxx as follows:
>
> FROM:
>
> (See below for description of change)
>
> #if ((defined(sun) && !defined(R__I386) && !defined(__SunOS_5_6)) ||
> (defined(__OPTIMIZE__) && (__GNUC__ > 2 || (__GNUC__ == 2 &&
> __GNUC_MINOR__ > 7))))
> extern "C" void sincos(Double_t, Double_t*, Double_t*);
> #else
> inline void sincos(Double_t a, Double_t *sinp, Double_t *cosp)
> { *cosp = cos(a); *sinp = sin(a); }
> #endif
>
> TO:
>
> #if (!defined(__SunOS_5_6) && ((defined(sun) && !defined(R__I386)) ||
> (defined(__OPTIMIZE__) && (__GNUC__ > 2 || (__GNUC__ == 2 &&
> __GNUC_MINOR__ > 7)))))
> extern "C" void sincos(Double_t, Double_t*, Double_t*);
> #else
> inline void sincos(Double_t a, Double_t *sinp, Double_t *cosp)
> { *cosp = cos(a); *sinp = sin(a); }
> #endif
>
> (b) and added " -D__SunOS_5_6 " to the CXXFLAGS variable in
> Makefile.solarisegcs. Obviously this would have to be done manually by
> anyone using SunOS 5.6, but it would be nice if that was the only change
> that was necessary.
>
> Comments:
>
> I made the " !defined(__SunOS_5_6) " a necessary condition in the if
> statement. I have seen RootTalk issues that dealt with this by changing
> " defined(sun) " to " !defined(sun) " -- but this is more restrictive
> than I need and doesn't work anyway because the expression that made the
> if statement evaluate true was "... || (defined(__OPTIMIZE__) &&
> (__GNUC__ > 2 || (__GNUC__ ==2 && __GNUC_MINOR__ > 7))) ". I have gcc
> 2.91.66. If one was using earlier versions of gcc I assume the other
> fix would work but the fix I'm suggesting should work in both cases.
>
> Is there a preferred solution to this, and will the distribution source
> be modified in a future release? I couldn't find any comments from
> Rene or Fons addressing the earlier postings of this issue.
>
> PROBLEM 2:
>
> More undefined symbols, this time things like:
> socket,
> getHostByAddress,
> getHostByName,
> etc.
>
> To fix this I added the statement " -L/usr/include/sys -lsocket -lnsl "
> to the SYSLIBS variable definition in Makefile.solarisegcs. The
> variable SYSXLIBS attempts to include the socket library from
> /usr/openwin/lib. It won't find it there on my solaris machine. It
> won't find the getHostByAddress function in any of the libraries it
> looks for, either, so I had to add the sys/nsl library for that.
>
> Is this just a difference in the setup from one solaris machine to the
> next, or has anyone else encountered this problem on SunOS 5.6? I
> couldn't find anything in RootTalk dealing with this. If this is a
> common problem it would be nice if it were corrected in a future
> release.
>
> Regards,
> Dan.
>
> Daniel Flath
> LCD Group
> Stanford Linear Accelerator Center
> <dflath@slac.stanford.edu>
> (650) 926-8794
This archive was generated by hypermail 2b29 : Tue Jan 04 2000 - 00:43:40 MET