[Ace-users] Re: [tao-bugs] ACE/TAO build: Problems building on amd64/x86_64 Solaris 10

Alex Blate Alex.Blate at sylantro.com
Fri Jun 8 13:15:36 CDT 2007


That did the trick; I have 5.5.8 building with the stock Solaris 10 x64
GCC (3.4.3). 

For giggles, I tried a couple older packages -- it looks like the latest
release package, 5.5.0, has the same linkage problem, but, e.g.,  5.5.6
works properly. 

For production software use, am I better off going with the slightly
older version, or is the current "Beta Kit" more stable?

Thanks again,

Alex

 
This message is hereby marked SYLANTRO CONFIDENTIAL, is intended only
for the use of the individual or individuals to which it is addressed
and shall not be disclosed or made available to any other party except
with the prior written consent of the sender. If the reader of this
message is not the intended recipient, you are hereby notified that any
dissemination, distribution or copying of this message is strictly
prohibited. If you have received this communication in error, please
notify us immediately by replying to the sender of this E-Mail.

-----Original Message-----
From: schmidt at dre.vanderbilt.edu [mailto:schmidt at dre.vanderbilt.edu] 
Sent: Friday, June 08, 2007 7:07 AM
To: Alex Blate
Cc: tao-bugs at cs.wustl.edu; ace-bugs at cs.wustl.edu
Subject: Re: [tao-bugs] ACE/TAO build: Problems building on amd64/x86_64
Solaris 10


Hi Alex,

   Thanks for using the PRF.

>     ACE VERSION: 5.4.9

ACE 5.4.9 is very old.  Please upgrade to ACE+TAO+CIAO x.5.8 (i.e., ACE
5.5.8, TAO 1.5.8, and CIAO 0.5.8), which you can download from

http://download.dre.vanderbilt.edu

under the heading: "Latest Beta Kit".

The DOC groups at Washington University, UC Irvine, and Vanderbilt
University only provide "best effort" support for non-sponsors for the
latest release, as described in

http://www.dre.vanderbilt.edu/~schmidt/DOC_ROOT/ACE/docs/ACE-bug-process
.html

Thus, if you need more "predictable" help for earlier versions of
ACE+TAO, I recommend that you check out

http://www.dre.vanderbilt.edu/support.html

for a list of companies that will provide you with ACE+TAO commercial
support.

Thanks,

        Doug


>     HOST MACHINE and OPERATING SYSTEM:
> 
>         AMD Opteron 8220 (4-CPU, 16 GB RAM)
> 
>         Solaris 10, update 3, plus recommended security updates as of
today, i86pc, running the 64-bit kernel
> 
>         # uname -a
> 
>         SunOS sys-amd4x1 5.10 Generic_125101-08 i86pc i386 i86pc
> 
>         # isainfo
> 
>         amd64 i386
> 
>         # gcc -v
> 
>         Reading specs from
/usr/sfw/lib/gcc/i386-pc-solaris2.10/3.4.3/specs
> 
>   Configured with:
/builds/sfw10-gate/usr/src/cmd/gcc/gcc-3.4.3/configure --prefix=/usr/sfw
--with-as=/usr/sfw/bin/gas --with-gnu-as --with-ld=/usr/ccs/bin/ld
--without-gnu-ld --enable-languages=c,c++ --enable-shared
> 
>         Thread model: posix
> 
>         gcc version 3.4.3 (csl-sol210-3_4-branch+sol_rpath)
> 
>     TARGET MACHINE and OPERATING SYSTEM, if different from HOST:
> 
>     COMPILER NAME AND VERSION (AND PATCHLEVEL):
> 
>         Same as host.
> 
>     THE $ACE_ROOT/ace/config.h FILE [if you use a link to a platform-
> 
>     specific file, simply state which one]:
> 
>         [root at sys-amd4x1 ace]# pwd
> 
>         /root/depot/release4.1.1_64bit/syl/oem/ACE-5.4.9-i86pc/ace
> 
>         [root at sys-amd4x1 ace]# \ls -l config.h
> 
>         lrwxrwxrwx   1 root     root          18 Jun  6 18:22 config.h
-> config-sunos5.10.h
> 
>     THE $ACE_ROOT/include/makeinclude/platform_macros.GNU FILE [if you
> 
>     use a link to a platform-specific file, simply state which one
> 
>     (unless this isn't used in this case, e.g., with Microsoft Visual
> 
>     C++)]: 
> 
>         platform_sunos5_g++.GNU
> 
>     CONTENTS OF
$ACE_ROOT/bin/MakeProjectCreator/config/default.features
> 
>     (used by MPC when you generate your own makefiles):
> 
>         Does note exist.
> 
>     AREA/CLASS/EXAMPLE AFFECTED:
> 
> [What example failed?  What module failed to compile?]
> 
>         First actual error is in
TAO/orbsvcs/orbsvcs/GNUmakefile.Svc_Utils, the first time he goes to run
tao_idl
> 
>             GNUmakefile:
/opt/root/depot/release4.1.1_64bit/syl/oem/ACE-5.4.9-i86pc/TAO/orbsvcs/o
rbsvcs/
> GNUmakefile.Svc_Utils MAKEFLAGS=w --jobserver-fds=4,5 -j
> 
> ../../../bin/tao_idl -Ge 1 -Wb,pre_include=ace/pre.h
-Wb,post_include=ace/post.h -I/root/depot/release4.1.1_64bit/syl/oem/
> ACE-5.4.9-i86pc//TAO
-I/root/depot/release4.1.1_64bit/syl/oem/ACE-5.4.9-i86pc//TAO/orbsvcs
-Wb,versioning_begin=
> TAO_BEGIN_VERSIONED_NAMESPACE_DECL
-Wb,versioning_end=TAO_END_VERSIONED_NAMESPACE_DECL -Wb,export_macro=
> TAO_Svc_Utils_Export -Wb,export_include=orbsvcs/svc_utils_export.h
TimeBase.idl
> 
> ../../../bin/tao_idl -Ge 1 -Wb,pre_include=ace/pre.h
-Wb,post_include=ace/post.h -I/root/depot/release4.1.1_64bit/syl/oem/
> ACE-5.4.9-i86pc//TAO
-I/root/depot/release4.1.1_64bit/syl/oem/ACE-5.4.9-i86pc//TAO/orbsvcs
-Wb,versioning_begin=
> TAO_BEGIN_VERSIONED_NAMESPACE_DECL
-Wb,versioning_end=TAO_END_VERSIONED_NAMESPACE_DECL
-Wb,stub_export_macro=
> TAO_Naming_Export
-Wb,stub_export_include=orbsvcs/Naming/naming_export.h
-Wb,skel_export_macro=TAO_Naming_Skel_Export
> -Wb,skel_export_include=orbsvcs/Naming/naming_skel_export.h
CosNaming.idl
> 
> ld.so.1: tao_idl: fatal: relocation error: R_AMD64_PC32: file
../../../lib/libTAO_IDL_BE.so.5.4.9: symbol main: value
> 0xffff80000067f8d4 does not fit
> 
> ld.so.1: tao_idl: fatal: relocation error: R_AMD64_PC32: file
../../../lib/libTAO_IDL_BE.so.5.4.9: symbol main: value
> 0xffff80000067f8d4 does not fit
> 
> make[3]: *** [TimeBaseC.cpp] Killed
> 
>     DOES THE PROBLEM AFFECT:
> 
>         COMPILATION?
> 
>         LINKING?
> 
>             On Unix systems, did you run make realclean first?
> 
>         EXECUTION?
> 
>         OTHER (please specify)?
> 
>         Yes, I have run make realclean.
> 
>         The problem is with the run-time linking of objects that link
against libACE.so and family. 
> 
>     SYNOPSIS:
> 
>         I am trying to build a 64-bit version of ACE+TAO on
amd64/x86_64 Solaris 10. The 32-bit build of the same works correctly,
as does the x86_64 build on RHEL AS4 U4. I can't get past the above
error. 
> 
>     DESCRIPTION:
> 
> I am attempting to build a 64-bit version of ACE+TAO on Solaris 10
x86/x64. The host/build/target system is an AMD Opteron
> 8220-based server, and I have confirmed that I am running a 64-bit
kernel.
> 
> The specific ACE/TAO distribution we are using is
ACE-5.4.9+TAO-1.4.9.tar.gz, though I have also tried the most recent
> "Release" from the web site. I have confirmed that I can build and
link the 32-bit version of this package.
> 
> Our tool chain uses gcc/g++. The default version of gcc on Solaris 10,
Update 3 is 3.4.3; I have also built and tried
> versions 3.4.6 and 4.1.2; in all cases, the standard compiler build on
this platform is target=i386-pc-solaris2.10, which
> is a "multi-target" compiler, supporting both 32- and 64-bit targets.
Also, as per general recommendations, GCC is using
> Sun's linker (/usr/ccs/bin/ld) instead of the GNU ld, and the GNU
assembler (gas).
> 
> The instructions I have seen on the web for explicitly building 64-bit
libraries on Solaris 10 x64 is to pass "-m64 -fPIC"
> to gcc/g++ via CFLAGS or CXXFLAGS, and "-m64 -Wl,-64
-Wl,-R/usr/sfw/lib/64" to the linker via LDFLAGS. When I build with
> these options, I get linkage errors, seen below, when make tries to
run tao_idl... the errant symbols, however, track back to
> libACE.so:
> 
> GNUmakefile:
/opt/root/depot/release4.1.1_64bit/syl/oem/ACE-5.4.9-i86pc/TAO/orbsvcs/o
rbsvcs/GNUmakefile.Svc_Utils MAKEFLAGS
> =w --jobserver-fds=4,5 -j
> 
> ../../../bin/tao_idl -Ge 1 -Wb,pre_include=ace/pre.h
-Wb,post_include=ace/post.h -I/root/depot/release4.1.1_64bit/syl/oem/
> ACE-5.4.9-i86pc//TAO
-I/root/depot/release4.1.1_64bit/syl/oem/ACE-5.4.9-i86pc//TAO/orbsvcs
-Wb,versioning_begin=
> TAO_BEGIN_VERSIONED_NAMESPACE_DECL
-Wb,versioning_end=TAO_END_VERSIONED_NAMESPACE_DECL -Wb,export_macro=
> TAO_Svc_Utils_Export -Wb,export_include=orbsvcs/svc_utils_export.h
TimeBase.idl
> 
> ../../../bin/tao_idl -Ge 1 -Wb,pre_include=ace/pre.h
-Wb,post_include=ace/post.h -I/root/depot/release4.1.1_64bit/syl/oem/
> ACE-5.4.9-i86pc//TAO
-I/root/depot/release4.1.1_64bit/syl/oem/ACE-5.4.9-i86pc//TAO/orbsvcs
-Wb,versioning_begin=
> TAO_BEGIN_VERSIONED_NAMESPACE_DECL
-Wb,versioning_end=TAO_END_VERSIONED_NAMESPACE_DECL
-Wb,stub_export_macro=
> TAO_Naming_Export
-Wb,stub_export_include=orbsvcs/Naming/naming_export.h
-Wb,skel_export_macro=TAO_Naming_Skel_Export
> -Wb,skel_export_include=orbsvcs/Naming/naming_skel_export.h
CosNaming.idl
> 
> ld.so.1: tao_idl: fatal: relocation error: R_AMD64_PC32: file
../../../lib/libTAO_IDL_BE.so.5.4.9: symbol main: value
> 0xffff80000067f8d4 does not fit
> 
> ld.so.1: tao_idl: fatal: relocation error: R_AMD64_PC32: file
../../../lib/libTAO_IDL_BE.so.5.4.9: symbol main: value
> 0xffff80000067f8d4 does not fit
> 
> make[3]: *** [TimeBaseC.cpp] Killed
> 
> I have tried endless combinations of flags, compiler versions,
different ways of building ACE/TAO (../configure vs.
> config.h and include/makerules), to no avail.
> 
> Interestingly, I also see badness if I run ldd on libACE itself:
> 
> [root at sys-amd4x1 lib]# ldd -d libACE.so
> 
>         libsocket.so.1 =>        /lib/64/libsocket.so.1
> 
>         libdl.so.1 =>    /lib/64/libdl.so.1
> 
>         libgen.so.1 =>   /lib/64/libgen.so.1
> 
>         libnsl.so.1 =>   /lib/64/libnsl.so.1
> 
>         librt.so.1 =>    /lib/64/librt.so.1
> 
>         libthread.so.1 =>        /lib/64/libthread.so.1
> 
>         libstdc++.so.6 =>        /usr/sfw/lib/64/libstdc++.so.6
> 
>         libm.so.2 =>     /lib/64/libm.so.2
> 
>         libgcc_s.so.1 =>         /usr/sfw/lib/64/libgcc_s.so.1
> 
>         libc.so.1 =>     /lib/64/libc.so.1
> 
>         libmp.so.2 =>    /lib/64/libmp.so.2
> 
>         libmd5.so.1 =>   /lib/64/libmd5.so.1
> 
>         libscf.so.1 =>   /lib/64/libscf.so.1
> 
>         libaio.so.1 =>   /lib/64/libaio.so.1
> 
>         libdoor.so.1 =>  /lib/64/libdoor.so.1
> 
>         libuutil.so.1 =>         /lib/64/libuutil.so.1
> 
>         symbol not found: main          (./libACE.so)
> 
> ld.so.1: lddstub: fatal: relocation error: R_AMD64_32S: file
./libACE.so: symbol _environ: value 0xfffffd7fff1f2180 does not fit
> 
> ld.so.1: lddstub: fatal: relocation error: R_AMD64_32S: file
./libACE.so: symbol _environ: value 0xfffffd7fff1f2180 does not fit
> 
> ld.so.1: lddstub: fatal: relocation error: R_AMD64_32S: file
./libACE.so: symbol ___Argv: value 0xfffffd7fff1f2188 does not fit
> 
> ld.so.1: lddstub: fatal: relocation error: R_AMD64_32S: file
./libACE.so: symbol _fini: value 0xfffffd7fff184210 does not fit
> 
> Likewise, for the IDL_BE library:
> 
> [root at sys-amd4x1 lib]# ldd -d libTAO_IDL_BE.so
> 
>         libTAO_IDL_FE.so.5.4.9 =>
/root/depot/release4.1.1_64bit/syl/oem/ACE-5.4.9-i86pc//lib/libTAO_IDL_F
E.so.5.4.9
> 
>         libACE.so.5.4.9 =>
/root/depot/release4.1.1_64bit/syl/oem/ACE-5.4.9-i86pc//lib/libACE.so.5.
4.9
> 
>         libsocket.so.1 =>        /lib/64/libsocket.so.1
> 
>         libdl.so.1 =>    /lib/64/libdl.so.1
> 
>         libgen.so.1 =>   /lib/64/libgen.so.1
> 
>         libnsl.so.1 =>   /lib/64/libnsl.so.1
> 
>         librt.so.1 =>    /lib/64/librt.so.1
> 
>         libthread.so.1 =>        /lib/64/libthread.so.1
> 
>         libstdc++.so.6 =>        /usr/sfw/lib/64/libstdc++.so.6
> 
>         libm.so.2 =>     /lib/64/libm.so.2
> 
>         libgcc_s.so.1 =>         /usr/sfw/lib/64/libgcc_s.so.1
> 
>         libc.so.1 =>     /lib/64/libc.so.1
> 
>         libmp.so.2 =>    /lib/64/libmp.so.2
> 
>         libmd5.so.1 =>   /lib/64/libmd5.so.1
> 
>         libscf.so.1 =>   /lib/64/libscf.so.1
> 
>         libaio.so.1 =>   /lib/64/libaio.so.1
> 
>         libdoor.so.1 =>  /lib/64/libdoor.so.1
> 
>         libuutil.so.1 =>         /lib/64/libuutil.so.1
> 
>         symbol not found: main          (./libTAO_IDL_BE.so)
> 
> ld.so.1: lddstub: fatal: relocation error: R_AMD64_32S: file
./libTAO_IDL_BE.so: symbol _environ: value 0xfffffd7fff308460 does not
fit
> 
> ld.so.1: lddstub: fatal: relocation error: R_AMD64_32S: file
./libTAO_IDL_BE.so: symbol _environ: value 0xfffffd7fff308460 does not
fit
> 
> ld.so.1: lddstub: fatal: relocation error: R_AMD64_32S: file
./libTAO_IDL_BE.so: symbol ___Argv: value 0xfffffd7fff308468 does not
fit
> 
> ld.so.1: lddstub: fatal: relocation error: R_AMD64_32S: file
./libTAO_IDL_BE.so: symbol _fini: value 0xfffffd7fff29f970 does not fit
> 
>         symbol not found: main
(/root/depot/release4.1.1_64bit/syl/oem/ACE-5.4.9-i86pc//lib/libTAO_IDL_
FE.so.5.4.9)
> 
> ld.so.1: lddstub: fatal: relocation error: R_AMD64_32S: file
/root/depot/release4.1.1_64bit/syl/oem/ACE-5.4.9-i86pc//lib/libTAO_IDL_F
E.so.5.4.9: symbol _environ: value 0xfffffd7fff308460 does not fit
> 
> ld.so.1: lddstub: fatal: relocation error: R_AMD64_32S: file
/root/depot/release4.1.1_64bit/syl/oem/ACE-5.4.9-i86pc//lib/libTAO_IDL_F
E.so.5.4.9: symbol _environ: value 0xfffffd7fff308460 does not fit
> 
> ld.so.1: lddstub: fatal: relocation error: R_AMD64_32S: file
/root/depot/release4.1.1_64bit/syl/oem/ACE-5.4.9-i86pc//lib/libTAO_IDL_F
E.so.5.4.9: symbol ___Argv: value 0xfffffd7fff308468 does not fit
> 
> ld.so.1: lddstub: fatal: relocation error: R_AMD64_32S: file
/root/depot/release4.1.1_64bit/syl/oem/ACE-5.4.9-i86pc//lib/libTAO_IDL_F
E.so.5.4.9: symbol _fini: value 0xfffffd7fff29f970 does not fit
> 
>         symbol not found: main
(/root/depot/release4.1.1_64bit/syl/oem/ACE-5.4.9-i86pc//lib/libACE.so.5
.4.9)
> 
> ld.so.1: lddstub: fatal: relocation error: R_AMD64_32S: file
/root/depot/release4.1.1_64bit/syl/oem/ACE-5.4.9-i86pc//lib/libACE.so.5.
4.9: symbol _environ: value 0xfffffd7fff308460 does not fit
> 
> ld.so.1: lddstub: fatal: relocation error: R_AMD64_32S: file
/root/depot/release4.1.1_64bit/syl/oem/ACE-5.4.9-i86pc//lib/libACE.so.5.
4.9: symbol _environ: value 0xfffffd7fff308460 does not fit
> 
> ld.so.1: lddstub: fatal: relocation error: R_AMD64_32S: file
/root/depot/release4.1.1_64bit/syl/oem/ACE-5.4.9-i86pc//lib/libACE.so.5.
4.9: symbol ___Argv: value 0xfffffd7fff308468 does not fit
> 
> ld.so.1: lddstub: fatal: relocation error: R_AMD64_32S: file
/root/depot/release4.1.1_64bit/syl/oem/ACE-5.4.9-i86pc//lib/libACE.so.5.
4.9: symbol _fini: value 0xfffffd7fff29f970 does not fit
> 
> Or anything else really from this build. 
> 
> I'm sure I'm missing some stupid thing... this was much easier on
Linux, but I really need this working on good old Solaris too J 
> 
>     REPEAT BY:
> 
> export CFLAGS="-m64 -fPIC"
> 
> export CXXFLAGS="-m64 -fPIC"
> 
> export LDFLAGS="-m64 -Wl,-64 -fPIC -Wl,-R/usr/sfw/lib/64"
> 
> export
LD_LIBRARY_PATH=/usr/sfw/lib/64:/lib/64:/usr/lib/64:/lib:/usr/lib:/usr/s
fw/lib:$ACE_ROOT/lib
> 
> export
PATH=/usr/ccs/bin/amd64:/usr/ccs/bin:/usr/bin:/bin:/usr/sbin:/usr/sfw/bi
n:/usr/ucb/bin:/usr/local/bin:/opt/sfw/bin
> 
> cd $ACE_ROOT/TAO
> 
> make -j
> 
> See attached for a full transcript (gzipped for your bandwidth-saving
enjoyment). 
> 
>     SAMPLE FIX/WORKAROUND:
> 
> I wish I had one. I have scoured google. I tried adding
-mcmodel=medium (or large) to my flags-this produces a different
> error. Either I'm doing something really dumb or this is not a common
problem.
> 
> +---------------------------------------+
> 
> | Alex Blate                            |
> 
> | Senior Systems Engineer               |
> 
> | Sylantro Systems Corporation          |
> 
> [cid]| 910 E. Hamilton Avenue                |
> 
> | Suite 300                             |
> 
> | Campbell, CA 95008 USA                |
> 
> |                                       |
> 
> | tel: (408) 626-3081                   |
> 
> | Alex.Blate AT sylantro.com                  |
> 
> |                                       |
> 
> +---------------------------------------+
> 
> This message is hereby marked SYLANTRO CONFIDENTIAL, is intended only
for the use of the individual or individuals to which
> it is addressed and shall not be disclosed or made available to any
other party except with the prior written consent of
> the sender. If the reader of this message is not the intended
recipient, you are hereby notified that any dissemination,
> distribution or copying of this message is strictly prohibited. If you
have received this communication in error, please
> notify us immediately by replying to the sender of this E-Mail.
> 
> _______________________________________________
> tao-bugs mailing list
> tao-bugs at mail.cse.wustl.edu
> http://mail.cse.wustl.edu/mailman/listinfo/tao-bugs




More information about the Ace-users mailing list